text:
// Copyright 2022 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// Generated code. DO NOT EDIT!

namespace Google.Apis.ContainerAnalysis.v1beta1
{
    /// The ContainerAnalysis Service.
    public class ContainerAnalysisService : Google.Apis.Services.BaseClientService
    {
        /// The API version.
        public const string Version = "v1beta1";

        /// The discovery version used to generate this service.
        public static Google.Apis.Discovery.DiscoveryVersion DiscoveryVersionUsed = Google.Apis.Discovery.DiscoveryVersion.Version_1_0;

        /// Constructs a new service.
        public ContainerAnalysisService() : this(new Google.Apis.Services.BaseClientService.Initializer())
        {
        }

        /// Constructs a new service.
        /// <param name="initializer">The service initializer.</param>
        public ContainerAnalysisService(Google.Apis.Services.BaseClientService.Initializer initializer) : base(initializer)
        {
            Projects = new ProjectsResource(this);
        }

        /// Gets the service supported features.
        public override System.Collections.Generic.IList<string> Features => new string[0];

        /// Gets the service name.
        public override string Name => "containeranalysis";

        /// Gets the service base URI.
        public override string BaseUri =>
        #if NETSTANDARD1_3 || NETSTANDARD2_0 || NET45
            BaseUriOverride ?? "https://containeranalysis.googleapis.com/";
        #else
            "https://containeranalysis.googleapis.com/";
        #endif

        /// Gets the service base path.
        public override string BasePath => "";

        #if !NET40
        /// Gets the batch base URI; <c>null</c> if unspecified.
        public override string BatchUri => "https://containeranalysis.googleapis.com/batch";

        /// Gets the batch base path; <c>null</c> if unspecified.
        public override string BatchPath => "batch";
        #endif

        /// Available OAuth 2.0 scopes for use with the Container Analysis API.
        public class Scope
        {
            ///
            /// See, edit, configure, and delete your Google Cloud data and see the email address for your Google
            /// Account.
            ///
            public static string CloudPlatform = "https://www.googleapis.com/auth/cloud-platform";
        }

        /// Available OAuth 2.0 scope constants for use with the Container Analysis API.
        public static class ScopeConstants
        {
            ///
            /// See, edit, configure, and delete your Google Cloud data and see the email address for your Google
            /// Account.
            ///
            public const string CloudPlatform = "https://www.googleapis.com/auth/cloud-platform";
        }

        /// Gets the Projects resource.
        public virtual ProjectsResource Projects { get; }
    }

    /// A base abstract class for ContainerAnalysis requests.
    public abstract class ContainerAnalysisBaseServiceRequest<TResponse> : Google.Apis.Requests.ClientServiceRequest<TResponse>
    {
        /// Constructs a new ContainerAnalysisBaseServiceRequest instance.
        protected ContainerAnalysisBaseServiceRequest(Google.Apis.Services.IClientService service) : base(service)
        {
        }

        /// V1 error format.
        [Google.Apis.Util.RequestParameterAttribute("$.xgafv", Google.Apis.Util.RequestParameterType.Query)]
        public virtual System.Nullable<XgafvEnum> Xgafv { get; set; }

        /// V1 error format.
        public enum XgafvEnum
        {
            /// v1 error format
            [Google.Apis.Util.StringValueAttribute("1")]
            Value1 = 0,

            /// v2 error format
            [Google.Apis.Util.StringValueAttribute("2")]
            Value2 = 1,
        }

        /// OAuth access token.
        [Google.Apis.Util.RequestParameterAttribute("access_token", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string AccessToken { get; set; }

        /// Data format for response.
        [Google.Apis.Util.RequestParameterAttribute("alt", Google.Apis.Util.RequestParameterType.Query)]
        public virtual System.Nullable<AltEnum> Alt { get; set; }

        /// Data format for response.
        public enum AltEnum
        {
            /// Responses with Content-Type of application/json
            [Google.Apis.Util.StringValueAttribute("json")]
            Json = 0,

            /// Media download with context-dependent Content-Type
            [Google.Apis.Util.StringValueAttribute("media")]
            Media = 1,

            /// Responses with Content-Type of application/x-protobuf
            [Google.Apis.Util.StringValueAttribute("proto")]
            Proto = 2,
        }

        /// JSONP
        [Google.Apis.Util.RequestParameterAttribute("callback", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string Callback { get; set; }

        /// Selector specifying which fields to include in a partial response.
        [Google.Apis.Util.RequestParameterAttribute("fields", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string Fields { get; set; }

        ///
        /// API key. Your API key identifies your project and provides you with API access, quota, and reports. Required
        /// unless you provide an OAuth 2.0 token.
        ///
        [Google.Apis.Util.RequestParameterAttribute("key", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string Key { get; set; }

        /// OAuth 2.0 token for the current user.
        [Google.Apis.Util.RequestParameterAttribute("oauth_token", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string OauthToken { get; set; }

        /// Returns response with indentations and line breaks.
        [Google.Apis.Util.RequestParameterAttribute("prettyPrint", Google.Apis.Util.RequestParameterType.Query)]
        public virtual System.Nullable<bool> PrettyPrint { get; set; }

        ///
        /// Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a
        /// user, but should not exceed 40 characters.
        ///
        [Google.Apis.Util.RequestParameterAttribute("quotaUser", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string QuotaUser { get; set; }

        /// Legacy upload protocol for media (e.g. "media", "multipart").
        [Google.Apis.Util.RequestParameterAttribute("uploadType", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string UploadType { get; set; }

        /// Upload protocol for media (e.g. "raw", "multipart").
        [Google.Apis.Util.RequestParameterAttribute("upload_protocol", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string UploadProtocol { get; set; }

        /// Initializes ContainerAnalysis parameter list.
        protected override void InitParameters()
        {
            base.InitParameters();
            RequestParameters.Add("$.xgafv", new Google.Apis.Discovery.Parameter
            {
                Name = "$.xgafv",
                IsRequired = false,
                ParameterType = "query",
                DefaultValue = null,
                Pattern = null,
            });
            RequestParameters.Add("access_token", new Google.Apis.Discovery.Parameter
            {
                Name = "access_token",
                IsRequired = false,
                ParameterType = "query",
                DefaultValue = null,
                Pattern = null,
            });
            RequestParameters.Add("alt", new Google.Apis.Discovery.Parameter
            {
                Name = "alt",
                IsRequired = false,
                ParameterType = "query",
                DefaultValue = "json",
                Pattern = null,
            });
            RequestParameters.Add("callback", new Google.Apis.Discovery.Parameter
            {
                Name = "callback",
                IsRequired = false,
                ParameterType = "query",
                DefaultValue = null,
                Pattern = null,
            });
            RequestParameters.Add("fields", new Google.Apis.Discovery.Parameter
            {
                Name = "fields",
                IsRequired = false,
                ParameterType = "query",
                DefaultValue = null,
                Pattern = null,
            });
            RequestParameters.Add("key", new Google.Apis.Discovery.Parameter
            {
                Name = "key",
                IsRequired = false,
                ParameterType = "query",
                DefaultValue = null,
                Pattern = null,
            });
            RequestParameters.Add("oauth_token", new Google.Apis.Discovery.Parameter
            {
                Name = "oauth_token",
                IsRequired = false,
                ParameterType = "query",
                DefaultValue = null,
                Pattern = null,
            });
            RequestParameters.Add("prettyPrint", new Google.Apis.Discovery.Parameter
            {
                Name = "prettyPrint",
                IsRequired = false,
                ParameterType = "query",
                DefaultValue = "true",
                Pattern = null,
            });
            RequestParameters.Add("quotaUser", new Google.Apis.Discovery.Parameter
            {
                Name = "quotaUser",
                IsRequired = false,
                ParameterType = "query",
                DefaultValue = null,
                Pattern = null,
            });
            RequestParameters.Add("uploadType", new Google.Apis.Discovery.Parameter
            {
                Name = "uploadType",
                IsRequired = false,
                ParameterType = "query",
                DefaultValue = null,
                Pattern = null,
            });
            RequestParameters.Add("upload_protocol", new Google.Apis.Discovery.Parameter
            {
                Name = "upload_protocol",
                IsRequired = false,
                ParameterType = "query",
                DefaultValue = null,
                Pattern = null,
            });
        }
    }

    /// The "projects" collection of methods.
    public class ProjectsResource
    {
        private const string Resource = "projects";

        /// The service which this resource belongs to.
        private readonly Google.Apis.Services.IClientService service;

        /// Constructs a new resource.
        public ProjectsResource(Google.Apis.Services.IClientService service)
        {
            this.service = service;
            Notes = new NotesResource(service);
            Occurrences = new OccurrencesResource(service);
        }

        /// Gets the Notes resource.
        public virtual NotesResource Notes { get; }

        /// The "notes" collection of methods.
        public class NotesResource
        {
            private const string Resource = "notes";

            /// The service which this resource belongs to.
            private readonly Google.Apis.Services.IClientService service;

            /// Constructs a new resource.
            public NotesResource(Google.Apis.Services.IClientService service)
            {
                this.service = service;
                Occurrences = new OccurrencesResource(service);
            }

            /// Gets the Occurrences resource.
            public virtual OccurrencesResource Occurrences { get; }

            /// The "occurrences" collection of methods.
            public class OccurrencesResource
            {
                private const string Resource = "occurrences";

                /// The service which this resource belongs to.
                private readonly Google.Apis.Services.IClientService service;

                /// Constructs a new resource.
                public OccurrencesResource(Google.Apis.Services.IClientService service)
                {
                    this.service = service;
                }

                ///
                /// Lists occurrences referencing the specified note. Provider projects can use this method to get all
                /// occurrences across consumer projects referencing the specified note.
                ///
                /// <param name="name">
                /// Required. The name of the note to list occurrences for in the form of
                /// `projects/[PROVIDER_ID]/notes/[NOTE_ID]`.
                /// </param>
                public virtual ListRequest List(string name)
                {
                    return new ListRequest(service, name);
                }

                ///
                /// Lists occurrences referencing the specified note. Provider projects can use this method to get all
                /// occurrences across consumer projects referencing the specified note.
                ///
                public class ListRequest : ContainerAnalysisBaseServiceRequest<Google.Apis.ContainerAnalysis.v1beta1.Data.ListNoteOccurrencesResponse>
                {
                    /// Constructs a new List request.
                    public ListRequest(Google.Apis.Services.IClientService service, string name) : base(service)
                    {
                        Name = name;
                        InitParameters();
                    }

                    ///
                    /// Required. The name of the note to list occurrences for in the form of
                    /// `projects/[PROVIDER_ID]/notes/[NOTE_ID]`.
                    ///
                    [Google.Apis.Util.RequestParameterAttribute("name", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string Name { get; private set; }

                    /// The filter expression.
                    [Google.Apis.Util.RequestParameterAttribute("filter", Google.Apis.Util.RequestParameterType.Query)]
                    public virtual string Filter { get; set; }

                    /// Number of occurrences to return in the list.
                    [Google.Apis.Util.RequestParameterAttribute("pageSize", Google.Apis.Util.RequestParameterType.Query)]
                    public virtual System.Nullable<int> PageSize { get; set; }

                    /// Token to provide to skip to a particular spot in the list.
                    [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)]
                    public virtual string PageToken { get; set; }

                    /// Gets the method name.
                    public override string MethodName => "list";

                    /// Gets the HTTP method.
                    public override string HttpMethod => "GET";

                    /// Gets the REST path.
                    public override string RestPath => "v1beta1/{+name}/occurrences";

                    /// Initializes List parameter list.
                    protected override void InitParameters()
                    {
                        base.InitParameters();
                        RequestParameters.Add("name", new Google.Apis.Discovery.Parameter
                        {
                            Name = "name",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = @"^projects/[^/]+/notes/[^/]+$",
                        });
                        RequestParameters.Add("filter", new Google.Apis.Discovery.Parameter
                        {
                            Name = "filter",
                            IsRequired = false,
                            ParameterType = "query",
                            DefaultValue = null,
                            Pattern = null,
                        });
                        RequestParameters.Add("pageSize", new Google.Apis.Discovery.Parameter
                        {
                            Name = "pageSize",
                            IsRequired = false,
                            ParameterType = "query",
                            DefaultValue = null,
                            Pattern = null,
                        });
                        RequestParameters.Add("pageToken", new Google.Apis.Discovery.Parameter
                        {
                            Name = "pageToken",
                            IsRequired = false,
                            ParameterType = "query",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    }
                }
            }

            /// Creates new notes in batch.
            /// <param name="body">The body of the request.</param>
            /// <param name="parent">
            /// Required. The name of the project in the form of `projects/[PROJECT_ID]`, under which the notes are to
            /// be created.
            /// </param>
            public virtual BatchCreateRequest BatchCreate(Google.Apis.ContainerAnalysis.v1beta1.Data.BatchCreateNotesRequest body, string parent)
            {
                return new BatchCreateRequest(service, body, parent);
            }

            /// Creates new notes in batch.
            public class BatchCreateRequest : ContainerAnalysisBaseServiceRequest<Google.Apis.ContainerAnalysis.v1beta1.Data.BatchCreateNotesResponse>
            {
                /// Constructs a new BatchCreate request.
                public BatchCreateRequest(Google.Apis.Services.IClientService service, Google.Apis.ContainerAnalysis.v1beta1.Data.BatchCreateNotesRequest body, string parent) : base(service)
                {
                    Parent = parent;
                    Body = body;
                    InitParameters();
                }

                ///
                /// Required. The name of the project in the form of `projects/[PROJECT_ID]`, under which the notes are
                /// to be created.
                ///
                [Google.Apis.Util.RequestParameterAttribute("parent", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string Parent { get; private set; }

                /// Gets or sets the body of this request.
                Google.Apis.ContainerAnalysis.v1beta1.Data.BatchCreateNotesRequest Body { get; set; }

                /// Returns the body of the request.
                protected override object GetBody() => Body;

                /// Gets the method name.
                public override string MethodName => "batchCreate";

                /// Gets the HTTP method.
                public override string HttpMethod => "POST";

                /// Gets the REST path.
                public override string RestPath => "v1beta1/{+parent}/notes:batchCreate";

                /// Initializes BatchCreate parameter list.
                protected override void InitParameters()
                {
                    base.InitParameters();
                    RequestParameters.Add("parent", new Google.Apis.Discovery.Parameter
                    {
                        Name = "parent",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = @"^projects/[^/]+$",
                    });
                }
            }

            /// Creates a new note.
            /// <param name="body">The body of the request.</param>
            /// <param name="parent">
            /// Required. The name of the project in the form of `projects/[PROJECT_ID]`, under which the note is to be
            /// created.
            /// </param>
            public virtual CreateRequest Create(Google.Apis.ContainerAnalysis.v1beta1.Data.Note body, string parent)
            {
                return new CreateRequest(service, body, parent);
            }

            /// Creates a new note.
            public class CreateRequest : ContainerAnalysisBaseServiceRequest<Google.Apis.ContainerAnalysis.v1beta1.Data.Note>
            {
                /// Constructs a new Create request.
                public CreateRequest(Google.Apis.Services.IClientService service, Google.Apis.ContainerAnalysis.v1beta1.Data.Note body, string parent) : base(service)
                {
                    Parent = parent;
                    Body = body;
                    InitParameters();
                }

                ///
                /// Required. The name of the project in the form of `projects/[PROJECT_ID]`, under which the note is to
                /// be created.
                ///
                [Google.Apis.Util.RequestParameterAttribute("parent", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string Parent { get; private set; }

                /// Required. The ID to use for this note.
                [Google.Apis.Util.RequestParameterAttribute("noteId", Google.Apis.Util.RequestParameterType.Query)]
                public virtual string NoteId { get; set; }

                /// Gets or sets the body of this request.
                Google.Apis.ContainerAnalysis.v1beta1.Data.Note Body { get; set; }

                /// Returns the body of the request.
                protected override object GetBody() => Body;

                /// Gets the method name.
                public override string MethodName => "create";

                /// Gets the HTTP method.
                public override string HttpMethod => "POST";

                /// Gets the REST path.
                public override string RestPath => "v1beta1/{+parent}/notes";

                /// Initializes Create parameter list.
                protected override void InitParameters()
                {
                    base.InitParameters();
                    RequestParameters.Add("parent", new Google.Apis.Discovery.Parameter
                    {
                        Name = "parent",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = @"^projects/[^/]+$",
                    });
                    RequestParameters.Add("noteId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "noteId",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
                }
            }

            /// Deletes the specified note.
            /// <param name="name">
            /// Required. The name of the note in the form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`.
            /// </param>
            public virtual DeleteRequest Delete(string name)
            {
                return new DeleteRequest(service, name);
            }

            /// Deletes the specified note.
            public class DeleteRequest : ContainerAnalysisBaseServiceRequest<Google.Apis.ContainerAnalysis.v1beta1.Data.Empty>
            {
                /// Constructs a new Delete request.
                public DeleteRequest(Google.Apis.Services.IClientService service, string name) : base(service)
                {
                    Name = name;
                    InitParameters();
                }

                ///
                /// Required. The name of the note in the form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`.
                ///
                [Google.Apis.Util.RequestParameterAttribute("name", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string Name { get; private set; }

                /// Gets the method name.
                public override string MethodName => "delete";

                /// Gets the HTTP method.
                public override string HttpMethod => "DELETE";

                /// Gets the REST path.
                public override string RestPath => "v1beta1/{+name}";

                /// Initializes Delete parameter list.
                protected override void InitParameters()
                {
                    base.InitParameters();
                    RequestParameters.Add("name", new Google.Apis.Discovery.Parameter
                    {
                        Name = "name",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = @"^projects/[^/]+/notes/[^/]+$",
                    });
                }
            }

            /// Gets the specified note.
            /// <param name="name">
            /// Required. The name of the note in the form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`.
            /// </param>
            public virtual GetRequest Get(string name)
            {
                return new GetRequest(service, name);
            }

            /// Gets the specified note.
            public class GetRequest : ContainerAnalysisBaseServiceRequest<Google.Apis.ContainerAnalysis.v1beta1.Data.Note>
            {
                /// Constructs a new Get request.
                public GetRequest(Google.Apis.Services.IClientService service, string name) : base(service)
                {
                    Name = name;
                    InitParameters();
                }

                ///
                /// Required. The name of the note in the form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`.
                ///
                [Google.Apis.Util.RequestParameterAttribute("name", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string Name { get; private set; }

                /// Gets the method name.
                public override string MethodName => "get";

                /// Gets the HTTP method.
                public override string HttpMethod => "GET";

                /// Gets the REST path.
                public override string RestPath => "v1beta1/{+name}";

                /// Initializes Get parameter list.
                protected override void InitParameters()
                {
                    base.InitParameters();
                    RequestParameters.Add("name", new Google.Apis.Discovery.Parameter
                    {
                        Name = "name",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = @"^projects/[^/]+/notes/[^/]+$",
                    });
                }
            }

            ///
            /// Gets the access control policy for a note or an occurrence resource. Requires
            /// `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the
            /// resource is a note or occurrence, respectively. The resource takes the format
            /// `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and
            /// `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.
            ///
            /// <param name="body">The body of the request.</param>
            /// <param name="resource">
            /// REQUIRED: The resource for which the policy is being requested. See [Resource
            /// names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.
            /// </param>
            public virtual GetIamPolicyRequest GetIamPolicy(Google.Apis.ContainerAnalysis.v1beta1.Data.GetIamPolicyRequest body, string resource)
            {
                return new GetIamPolicyRequest(service, body, resource);
            }

            ///
            /// Gets the access control policy for a note or an occurrence resource. Requires
            /// `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the
            /// resource is a note or occurrence, respectively. The resource takes the format
            /// `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and
            /// `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.
            ///
            public class GetIamPolicyRequest : ContainerAnalysisBaseServiceRequest<Google.Apis.ContainerAnalysis.v1beta1.Data.Policy>
            {
                /// Constructs a new GetIamPolicy request.
                public GetIamPolicyRequest(Google.Apis.Services.IClientService service, Google.Apis.ContainerAnalysis.v1beta1.Data.GetIamPolicyRequest body, string resource) : base(service)
                {
                    Resource = resource;
                    Body = body;
                    InitParameters();
                }

                ///
                /// REQUIRED: The resource for which the policy is being requested. See [Resource
                /// names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this
                /// field.
                ///
                [Google.Apis.Util.RequestParameterAttribute("resource", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string Resource { get; private set; }

                /// Gets or sets the body of this request.
                Google.Apis.ContainerAnalysis.v1beta1.Data.GetIamPolicyRequest Body { get; set; }

                /// Returns the body of the request.
                protected override object GetBody() => Body;

                /// Gets the method name.
                public override string MethodName => "getIamPolicy";

                /// Gets the HTTP method.
                public override string HttpMethod => "POST";

                /// Gets the REST path.
                public override string RestPath => "v1beta1/{+resource}:getIamPolicy";

                /// Initializes GetIamPolicy parameter list.
                protected override void InitParameters()
                {
                    base.InitParameters();
                    RequestParameters.Add("resource", new Google.Apis.Discovery.Parameter
                    {
                        Name = "resource",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = @"^projects/[^/]+/notes/[^/]+$",
                    });
                }
            }

            /// Lists notes for the specified project.
            /// <param name="parent">
            /// Required. The name of the project to list notes for in the form of `projects/[PROJECT_ID]`.
            /// </param>
            public virtual ListRequest List(string parent)
            {
                return new ListRequest(service, parent);
            }

            /// Lists notes for the specified project.
            public class ListRequest : ContainerAnalysisBaseServiceRequest<Google.Apis.ContainerAnalysis.v1beta1.Data.ListNotesResponse>
            {
                /// Constructs a new List request.
                public ListRequest(Google.Apis.Services.IClientService service, string parent) : base(service)
                {
                    Parent = parent;
                    InitParameters();
                }

                ///
                /// Required. The name of the project to list notes for in the form of `projects/[PROJECT_ID]`.
                ///
                [Google.Apis.Util.RequestParameterAttribute("parent", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string Parent { get; private set; }

                /// The filter expression.
                [Google.Apis.Util.RequestParameterAttribute("filter", Google.Apis.Util.RequestParameterType.Query)]
                public virtual string Filter { get; set; }

                ///
                /// Number of notes to return in the list. Must be positive. Max allowed page size is 1000. If not
                /// specified, page size defaults to 20.
                ///
                [Google.Apis.Util.RequestParameterAttribute("pageSize", Google.Apis.Util.RequestParameterType.Query)]
                public virtual System.Nullable<int> PageSize { get; set; }

                /// Token to provide to skip to a particular spot in the list.
                [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)]
                public virtual string PageToken { get; set; }

                /// Gets the method name.
                public override string MethodName => "list";

                /// Gets the HTTP method.
                public override string HttpMethod => "GET";

                /// Gets the REST path.
                public override string RestPath => "v1beta1/{+parent}/notes";

                /// Initializes List parameter list.
                protected override void InitParameters()
                {
                    base.InitParameters();
                    RequestParameters.Add("parent", new Google.Apis.Discovery.Parameter
                    {
                        Name = "parent",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = @"^projects/[^/]+$",
                    });
                    RequestParameters.Add("filter", new Google.Apis.Discovery.Parameter
                    {
                        Name = "filter",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
                    RequestParameters.Add("pageSize", new Google.Apis.Discovery.Parameter
                    {
                        Name = "pageSize",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
                    RequestParameters.Add("pageToken", new Google.Apis.Discovery.Parameter
                    {
                        Name = "pageToken",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
                }
            }

            /// Updates the specified note.
            /// <param name="body">The body of the request.</param>
            /// <param name="name">
            /// Required. The name of the note in the form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`.
            /// </param>
            public virtual PatchRequest Patch(Google.Apis.ContainerAnalysis.v1beta1.Data.Note body, string name)
            {
                return new PatchRequest(service, body, name);
            }

            /// Updates the specified note.
            public class PatchRequest : ContainerAnalysisBaseServiceRequest<Google.Apis.ContainerAnalysis.v1beta1.Data.Note>
            {
                /// Constructs a new Patch request.
                public PatchRequest(Google.Apis.Services.IClientService service, Google.Apis.ContainerAnalysis.v1beta1.Data.Note body, string name) : base(service)
                {
                    Name = name;
                    Body = body;
                    InitParameters();
                }

                ///
                /// Required. The name of the note in the form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`.
                ///
                [Google.Apis.Util.RequestParameterAttribute("name", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string Name { get; private set; }

                /// The fields to update.
                [Google.Apis.Util.RequestParameterAttribute("updateMask", Google.Apis.Util.RequestParameterType.Query)]
                public virtual object UpdateMask { get; set; }

                /// Gets or sets the body of this request.
                Google.Apis.ContainerAnalysis.v1beta1.Data.Note Body { get; set; }

                /// Returns the body of the request.
                protected override object GetBody() => Body;

                /// Gets the method name.
                public override string MethodName => "patch";

                /// Gets the HTTP method.
                public override string HttpMethod => "PATCH";

                /// Gets the REST path.
                public override string RestPath => "v1beta1/{+name}";

                /// Initializes Patch parameter list.
                protected override void InitParameters()
                {
                    base.InitParameters();
                    RequestParameters.Add("name", new Google.Apis.Discovery.Parameter
                    {
                        Name = "name",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = @"^projects/[^/]+/notes/[^/]+$",
                    });
                    RequestParameters.Add("updateMask", new Google.Apis.Discovery.Parameter
                    {
                        Name = "updateMask",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
                }
            }

            ///
            /// Sets the access control policy on the specified note or occurrence. Requires
            /// `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the
            /// resource is a note or an occurrence, respectively. The resource takes the format
            /// `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and
            /// `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.
            ///
            /// <param name="body">The body of the request.</param>
            /// <param name="resource">
            /// REQUIRED: The resource for which the policy is being specified. See [Resource
            /// names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.
            /// </param>
            public virtual SetIamPolicyRequest SetIamPolicy(Google.Apis.ContainerAnalysis.v1beta1.Data.SetIamPolicyRequest body, string resource)
            {
                return new SetIamPolicyRequest(service, body, resource);
            }

            ///
            /// Sets the access control policy on the specified note or occurrence. Requires
            /// `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the
            /// resource is a note or an occurrence, respectively. The resource takes the format
            /// `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and
            /// `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.
            ///
            public class SetIamPolicyRequest : ContainerAnalysisBaseServiceRequest<Google.Apis.ContainerAnalysis.v1beta1.Data.Policy>
            {
                /// Constructs a new SetIamPolicy request.
                public SetIamPolicyRequest(Google.Apis.Services.IClientService service, Google.Apis.ContainerAnalysis.v1beta1.Data.SetIamPolicyRequest body, string resource) : base(service)
                {
                    Resource = resource;
                    Body = body;
                    InitParameters();
                }

                ///
                /// REQUIRED: The resource for which the policy is being specified. See [Resource
                /// names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this
                /// field.
                ///
                [Google.Apis.Util.RequestParameterAttribute("resource", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string Resource { get; private set; }

                /// Gets or sets the body of this request.
                Google.Apis.ContainerAnalysis.v1beta1.Data.SetIamPolicyRequest Body { get; set; }

                /// Returns the body of the request.
                protected override object GetBody() => Body;

                /// Gets the method name.
                public override string MethodName => "setIamPolicy";

                /// Gets the HTTP method.
                public override string HttpMethod => "POST";

                /// Gets the REST path.
                public override string RestPath => "v1beta1/{+resource}:setIamPolicy";

                /// Initializes SetIamPolicy parameter list.
                protected override void InitParameters()
                {
                    base.InitParameters();
                    RequestParameters.Add("resource", new Google.Apis.Discovery.Parameter
                    {
                        Name = "resource",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = @"^projects/[^/]+/notes/[^/]+$",
                    });
                }
            }

            ///
            /// Returns the permissions that a caller has on the specified note or occurrence. Requires list permission
            /// on the project (for example, `containeranalysis.notes.list`). The resource takes the format
            /// `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and
            /// `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.
            ///
            /// <param name="body">The body of the request.</param>
            /// <param name="resource">
            /// REQUIRED: The resource for which the policy detail is being requested. See [Resource
            /// names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.
            /// </param>
            public virtual TestIamPermissionsRequest TestIamPermissions(Google.Apis.ContainerAnalysis.v1beta1.Data.TestIamPermissionsRequest body, string resource)
            {
                return new TestIamPermissionsRequest(service, body, resource);
            }

            ///
            /// Returns the permissions that a caller has on the specified note or occurrence. Requires list permission
            /// on the project (for example, `containeranalysis.notes.list`). The resource takes the format
            /// `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and
            /// `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.
            ///
            public class TestIamPermissionsRequest : ContainerAnalysisBaseServiceRequest<Google.Apis.ContainerAnalysis.v1beta1.Data.TestIamPermissionsResponse>
            {
                /// Constructs a new TestIamPermissions request.
                public TestIamPermissionsRequest(Google.Apis.Services.IClientService service, Google.Apis.ContainerAnalysis.v1beta1.Data.TestIamPermissionsRequest body, string resource) : base(service)
                {
                    Resource = resource;
                    Body = body;
                    InitParameters();
                }

                ///
                /// REQUIRED: The resource for which the policy detail is being requested. See [Resource
                /// names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this
                /// field.
                ///
                [Google.Apis.Util.RequestParameterAttribute("resource", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string Resource { get; private set; }

                /// Gets or sets the body of this request.
                Google.Apis.ContainerAnalysis.v1beta1.Data.TestIamPermissionsRequest Body { get; set; }

                /// Returns the body of the request.
                protected override object GetBody() => Body;

                /// Gets the method name.
                public override string MethodName => "testIamPermissions";

                /// Gets the HTTP method.
                public override string HttpMethod => "POST";

                /// Gets the REST path.
                public override string RestPath => "v1beta1/{+resource}:testIamPermissions";

                /// Initializes TestIamPermissions parameter list.
                protected override void InitParameters()
                {
                    base.InitParameters();
                    RequestParameters.Add("resource", new Google.Apis.Discovery.Parameter
                    {
                        Name = "resource",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = @"^projects/[^/]+/notes/[^/]+$",
                    });
                }
            }
        }

        /// Gets the Occurrences resource.
        public virtual OccurrencesResource Occurrences { get; }

        /// The "occurrences" collection of methods.
        public class OccurrencesResource
        {
            private const string Resource = "occurrences";

            /// The service which this resource belongs to.
            private readonly Google.Apis.Services.IClientService service;

            /// Constructs a new resource.
            public OccurrencesResource(Google.Apis.Services.IClientService service)
            {
                this.service = service;
            }

            /// Creates new occurrences in batch.
            /// <param name="body">The body of the request.</param>
            /// <param name="parent">
            /// Required. The name of the project in the form of `projects/[PROJECT_ID]`, under which the occurrences
            /// are to be created.
            /// </param>
            public virtual BatchCreateRequest BatchCreate(Google.Apis.ContainerAnalysis.v1beta1.Data.BatchCreateOccurrencesRequest body, string parent)
            {
                return new BatchCreateRequest(service, body, parent);
            }

            /// Creates new occurrences in batch.
            public class BatchCreateRequest : ContainerAnalysisBaseServiceRequest<Google.Apis.ContainerAnalysis.v1beta1.Data.BatchCreateOccurrencesResponse>
            {
                /// Constructs a new BatchCreate request.
                public BatchCreateRequest(Google.Apis.Services.IClientService service, Google.Apis.ContainerAnalysis.v1beta1.Data.BatchCreateOccurrencesRequest body, string parent) : base(service)
                {
                    Parent = parent;
                    Body = body;
                    InitParameters();
                }

                ///
                /// Required. The name of the project in the form of `projects/[PROJECT_ID]`, under which the
                /// occurrences are to be created.
                ///
                [Google.Apis.Util.RequestParameterAttribute("parent", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string Parent { get; private set; }

                /// Gets or sets the body of this request.
                Google.Apis.ContainerAnalysis.v1beta1.Data.BatchCreateOccurrencesRequest Body { get; set; }

                /// Returns the body of the request.
                protected override object GetBody() => Body;

                /// Gets the method name.
                public override string MethodName => "batchCreate";

                /// Gets the HTTP method.
                public override string HttpMethod => "POST";

                /// Gets the REST path.
                public override string RestPath => "v1beta1/{+parent}/occurrences:batchCreate";

                /// Initializes BatchCreate parameter list.
                protected override void InitParameters()
                {
                    base.InitParameters();
                    RequestParameters.Add("parent", new Google.Apis.Discovery.Parameter
                    {
                        Name = "parent",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = @"^projects/[^/]+$",
                    });
                }
            }

            /// Creates a new occurrence.
            /// <param name="body">The body of the request.</param>
            /// <param name="parent">
            /// Required. The name of the project in the form of `projects/[PROJECT_ID]`, under which the occurrence is
            /// to be created.
            /// </param>
            public virtual CreateRequest Create(Google.Apis.ContainerAnalysis.v1beta1.Data.Occurrence body, string parent)
            {
                return new CreateRequest(service, body, parent);
            }

            /// Creates a new occurrence.
            public class CreateRequest : ContainerAnalysisBaseServiceRequest<Google.Apis.ContainerAnalysis.v1beta1.Data.Occurrence>
            {
                /// Constructs a new Create request.
                public CreateRequest(Google.Apis.Services.IClientService service, Google.Apis.ContainerAnalysis.v1beta1.Data.Occurrence body, string parent) : base(service)
                {
                    Parent = parent;
                    Body = body;
                    InitParameters();
                }

                ///
                /// Required. The name of the project in the form of `projects/[PROJECT_ID]`, under which the occurrence
                /// is to be created.
                ///
                [Google.Apis.Util.RequestParameterAttribute("parent", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string Parent { get; private set; }

                /// Gets or sets the body of this request.
                Google.Apis.ContainerAnalysis.v1beta1.Data.Occurrence Body { get; set; }

                /// Returns the body of the request.
                protected override object GetBody() => Body;

                /// Gets the method name.
                public override string MethodName => "create";

                /// Gets the HTTP method.
                public override string HttpMethod => "POST";

                /// Gets the REST path.
                public override string RestPath => "v1beta1/{+parent}/occurrences";

                /// Initializes Create parameter list.
                protected override void InitParameters()
                {
                    base.InitParameters();
                    RequestParameters.Add("parent", new Google.Apis.Discovery.Parameter
                    {
                        Name = "parent",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = @"^projects/[^/]+$",
                    });
                }
            }

            ///
            /// Deletes the specified occurrence. For example, use this method to delete an occurrence when the
            /// occurrence is no longer applicable for the given resource.
            ///
            /// <param name="name">
            /// Required. The name of the occurrence in the form of `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.
            /// </param>
            public virtual DeleteRequest Delete(string name)
            {
                return new DeleteRequest(service, name);
            }

            ///
            /// Deletes the specified occurrence. For example, use this method to delete an occurrence when the
            /// occurrence is no longer applicable for the given resource.
            ///
            public class DeleteRequest : ContainerAnalysisBaseServiceRequest<Google.Apis.ContainerAnalysis.v1beta1.Data.Empty>
            {
                /// Constructs a new Delete request.
                public DeleteRequest(Google.Apis.Services.IClientService service, string name) : base(service)
                {
                    Name = name;
                    InitParameters();
                }

                ///
                /// Required. The name of the occurrence in the form of
                /// `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.
                ///
                [Google.Apis.Util.RequestParameterAttribute("name", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string Name { get; private set; }

                /// Gets the method name.
                public override string MethodName => "delete";

                /// Gets the HTTP method.
                public override string HttpMethod => "DELETE";

                /// Gets the REST path.
                public override string RestPath => "v1beta1/{+name}";

                /// Initializes Delete parameter list.
                protected override void InitParameters()
                {
                    base.InitParameters();
                    RequestParameters.Add("name", new Google.Apis.Discovery.Parameter
                    {
                        Name = "name",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = @"^projects/[^/]+/occurrences/[^/]+$",
                    });
                }
            }

            /// Gets the specified occurrence.
            /// <param name="name">
            /// Required. The name of the occurrence in the form of `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.
            /// </param>
            public virtual GetRequest Get(string name)
            {
                return new GetRequest(service, name);
            }

            /// Gets the specified occurrence.
            public class GetRequest : ContainerAnalysisBaseServiceRequest<Google.Apis.ContainerAnalysis.v1beta1.Data.Occurrence>
            {
                /// Constructs a new Get request.
                public GetRequest(Google.Apis.Services.IClientService service, string name) : base(service)
                {
                    Name = name;
                    InitParameters();
                }

                ///
                /// Required. The name of the occurrence in the form of
                /// `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.
                ///
                [Google.Apis.Util.RequestParameterAttribute("name", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string Name { get; private set; }

                /// Gets the method name.
                public override string MethodName => "get";

                /// Gets the HTTP method.
                public override string HttpMethod => "GET";

                /// Gets the REST path.
                public override string RestPath => "v1beta1/{+name}";

                /// Initializes Get parameter list.
                protected override void InitParameters()
                {
                    base.InitParameters();
                    RequestParameters.Add("name", new Google.Apis.Discovery.Parameter
                    {
                        Name = "name",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = @"^projects/[^/]+/occurrences/[^/]+$",
                    });
                }
            }

            ///
            /// Gets the access control policy for a note or an occurrence resource. Requires
            /// `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the
            /// resource is a note or occurrence, respectively. The resource takes the format
            /// `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and
            /// `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.
            ///
            /// <param name="body">The body of the request.</param>
            /// <param name="resource">
            /// REQUIRED: The resource for which the policy is being requested. See [Resource
            /// names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.
            /// </param>
            public virtual GetIamPolicyRequest GetIamPolicy(Google.Apis.ContainerAnalysis.v1beta1.Data.GetIamPolicyRequest body, string resource)
            {
                return new GetIamPolicyRequest(service, body, resource);
            }

            ///
            /// Gets the access control policy for a note or an occurrence resource. Requires
            /// `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the
            /// resource is a note or occurrence, respectively. The resource takes the format
            /// `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and
            /// `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.
            ///
            public class GetIamPolicyRequest : ContainerAnalysisBaseServiceRequest<Google.Apis.ContainerAnalysis.v1beta1.Data.Policy>
            {
                /// Constructs a new GetIamPolicy request.
                public GetIamPolicyRequest(Google.Apis.Services.IClientService service, Google.Apis.ContainerAnalysis.v1beta1.Data.GetIamPolicyRequest body, string resource) : base(service)
                {
                    Resource = resource;
                    Body = body;
                    InitParameters();
                }

                ///
                /// REQUIRED: The resource for which the policy is being requested. See [Resource
                /// names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this
                /// field.
                ///
                [Google.Apis.Util.RequestParameterAttribute("resource", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string Resource { get; private set; }

                /// Gets or sets the body of this request.
                Google.Apis.ContainerAnalysis.v1beta1.Data.GetIamPolicyRequest Body { get; set; }

                /// Returns the body of the request.
                protected override object GetBody() => Body;

                /// Gets the method name.
                public override string MethodName => "getIamPolicy";

                /// Gets the HTTP method.
                public override string HttpMethod => "POST";

                /// Gets the REST path.
                public override string RestPath => "v1beta1/{+resource}:getIamPolicy";

                /// Initializes GetIamPolicy parameter list.
                protected override void InitParameters()
                {
                    base.InitParameters();
                    RequestParameters.Add("resource", new Google.Apis.Discovery.Parameter
                    {
                        Name = "resource",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = @"^projects/[^/]+/occurrences/[^/]+$",
                    });
                }
            }

            ///
            /// Gets the note attached to the specified occurrence. Consumer projects can use this method to get a note
            /// that belongs to a provider project.
            ///
            /// <param name="name">
            /// Required. The name of the occurrence in the form of `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.
            /// </param>
            public virtual GetNotesRequest GetNotes(string name)
            {
                return new GetNotesRequest(service, name);
            }

            ///
            /// Gets the note attached to the specified occurrence. Consumer projects can use this method to get a note
            /// that belongs to a provider project.
            ///
            public class GetNotesRequest : ContainerAnalysisBaseServiceRequest<Google.Apis.ContainerAnalysis.v1beta1.Data.Note>
            {
                /// Constructs a new GetNotes request.
                public GetNotesRequest(Google.Apis.Services.IClientService service, string name) : base(service)
                {
                    Name = name;
                    InitParameters();
                }

                ///
                /// Required. The name of the occurrence in the form of
                /// `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.
                ///
                [Google.Apis.Util.RequestParameterAttribute("name", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string Name { get; private set; }

                /// Gets the method name.
                public override string MethodName => "getNotes";

                /// Gets the HTTP method.
                public override string HttpMethod => "GET";

                /// Gets the REST path.
                public override string RestPath => "v1beta1/{+name}/notes";

                /// Initializes GetNotes parameter list.
                protected override void InitParameters()
                {
                    base.InitParameters();
                    RequestParameters.Add("name", new Google.Apis.Discovery.Parameter
                    {
                        Name = "name",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = @"^projects/[^/]+/occurrences/[^/]+$",
                    });
                }
            }

            /// Gets a summary of the number and severity of occurrences.
            /// <param name="parent">
            /// Required. The name of the project to get a vulnerability summary for in the form of
            /// `projects/[PROJECT_ID]`.
            /// </param>
            public virtual GetVulnerabilitySummaryRequest GetVulnerabilitySummary(string parent)
            {
                return new GetVulnerabilitySummaryRequest(service, parent);
            }

            /// Gets a summary of the number and severity of occurrences.
            public class GetVulnerabilitySummaryRequest : ContainerAnalysisBaseServiceRequest<Google.Apis.ContainerAnalysis.v1beta1.Data.VulnerabilityOccurrencesSummary>
            {
                /// Constructs a new GetVulnerabilitySummary request.
                public GetVulnerabilitySummaryRequest(Google.Apis.Services.IClientService service, string parent) : base(service)
                {
                    Parent = parent;
                    InitParameters();
                }

                ///
                /// Required. The name of the project to get a vulnerability summary for in the form of
                /// `projects/[PROJECT_ID]`.
                ///
                [Google.Apis.Util.RequestParameterAttribute("parent", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string Parent { get; private set; }

                /// The filter expression.
                [Google.Apis.Util.RequestParameterAttribute("filter", Google.Apis.Util.RequestParameterType.Query)]
                public virtual string Filter { get; set; }

                /// Gets the method name.
                public override string MethodName => "getVulnerabilitySummary";

                /// Gets the HTTP method.
                public override string HttpMethod => "GET";

                /// Gets the REST path.
                public override string RestPath => "v1beta1/{+parent}/occurrences:vulnerabilitySummary";

                /// Initializes GetVulnerabilitySummary parameter list.
                protected override void InitParameters()
                {
                    base.InitParameters();
                    RequestParameters.Add("parent", new Google.Apis.Discovery.Parameter
                    {
                        Name = "parent",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = @"^projects/[^/]+$",
                    });
                    RequestParameters.Add("filter", new Google.Apis.Discovery.Parameter
                    {
                        Name = "filter",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
                }
            }

            /// Lists occurrences for the specified project.
            /// <param name="parent">
            /// Required. The name of the project to list occurrences for in the form of `projects/[PROJECT_ID]`.
            /// </param>
            public virtual ListRequest List(string parent)
            {
                return new ListRequest(service, parent);
            }

            /// Lists occurrences for the specified project.
            public class ListRequest : ContainerAnalysisBaseServiceRequest<Google.Apis.ContainerAnalysis.v1beta1.Data.ListOccurrencesResponse>
            {
                /// Constructs a new List request.
                public ListRequest(Google.Apis.Services.IClientService service, string parent) : base(service)
                {
                    Parent = parent;
                    InitParameters();
                }

                ///
                /// Required. The name of the project to list occurrences for in the form of `projects/[PROJECT_ID]`.
                ///
                [Google.Apis.Util.RequestParameterAttribute("parent", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string Parent { get; private set; }

                /// The filter expression.
                [Google.Apis.Util.RequestParameterAttribute("filter", Google.Apis.Util.RequestParameterType.Query)]
                public virtual string Filter { get; set; }

                ///
                /// Number of occurrences to return in the list. Must be positive. Max allowed page size is 1000. If not
                /// specified, page size defaults to 20.
                ///
                [Google.Apis.Util.RequestParameterAttribute("pageSize", Google.Apis.Util.RequestParameterType.Query)]
                public virtual System.Nullable<int> PageSize { get; set; }

                /// Token to provide to skip to a particular spot in the list.
                [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)]
                public virtual string PageToken { get; set; }

                /// Gets the method name.
                public override string MethodName => "list";

                /// Gets the HTTP method.
                public override string HttpMethod => "GET";

                /// Gets the REST path.
                public override string RestPath => "v1beta1/{+parent}/occurrences";

                /// Initializes List parameter list.
                protected override void InitParameters()
                {
                    base.InitParameters();
                    RequestParameters.Add("parent", new Google.Apis.Discovery.Parameter
                    {
                        Name = "parent",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = @"^projects/[^/]+$",
                    });
                    RequestParameters.Add("filter", new Google.Apis.Discovery.Parameter
                    {
                        Name = "filter",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
                    RequestParameters.Add("pageSize", new Google.Apis.Discovery.Parameter
                    {
                        Name = "pageSize",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
                    RequestParameters.Add("pageToken", new Google.Apis.Discovery.Parameter
                    {
                        Name = "pageToken",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
                }
            }

            /// Updates the specified occurrence.
            /// <param name="body">The body of the request.</param>
            /// <param name="name">
            /// Required. The name of the occurrence in the form of `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.
            /// </param>
            public virtual PatchRequest Patch(Google.Apis.ContainerAnalysis.v1beta1.Data.Occurrence body, string name)
            {
                return new PatchRequest(service, body, name);
            }

            /// Updates the specified occurrence.
            public class PatchRequest : ContainerAnalysisBaseServiceRequest<Google.Apis.ContainerAnalysis.v1beta1.Data.Occurrence>
            {
                /// Constructs a new Patch request.
                public PatchRequest(Google.Apis.Services.IClientService service, Google.Apis.ContainerAnalysis.v1beta1.Data.Occurrence body, string name) : base(service)
                {
                    Name = name;
                    Body = body;
                    InitParameters();
                }

                ///
                /// Required. The name of the occurrence in the form of
                /// `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.
                ///
                [Google.Apis.Util.RequestParameterAttribute("name", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string Name { get; private set; }

                /// The fields to update.
                [Google.Apis.Util.RequestParameterAttribute("updateMask", Google.Apis.Util.RequestParameterType.Query)]
                public virtual object UpdateMask { get; set; }

                /// Gets or sets the body of this request.
                Google.Apis.ContainerAnalysis.v1beta1.Data.Occurrence Body { get; set; }

                /// Returns the body of the request.
                protected override object GetBody() => Body;

                /// Gets the method name.
                public override string MethodName => "patch";

                /// Gets the HTTP method.
                public override string HttpMethod => "PATCH";

                /// Gets the REST path.
                public override string RestPath => "v1beta1/{+name}";

                /// Initializes Patch parameter list.
                protected override void InitParameters()
                {
                    base.InitParameters();
                    RequestParameters.Add("name", new Google.Apis.Discovery.Parameter
                    {
                        Name = "name",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = @"^projects/[^/]+/occurrences/[^/]+$",
                    });
                    RequestParameters.Add("updateMask", new Google.Apis.Discovery.Parameter
                    {
                        Name = "updateMask",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
                }
            }

            ///
            /// Sets the access control policy on the specified note or occurrence. Requires
            /// `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the
            /// resource is a note or an occurrence, respectively. The resource takes the format
            /// `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and
            /// `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.
            ///
            /// <param name="body">The body of the request.</param>
            /// <param name="resource">
            /// REQUIRED: The resource for which the policy is being specified. See [Resource
            /// names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.
            /// </param>
            public virtual SetIamPolicyRequest SetIamPolicy(Google.Apis.ContainerAnalysis.v1beta1.Data.SetIamPolicyRequest body, string resource)
            {
                return new SetIamPolicyRequest(service, body, resource);
            }

            ///
            /// Sets the access control policy on the specified note or occurrence. Requires
            /// `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the
            /// resource is a note or an occurrence, respectively. The resource takes the format
            /// `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and
            /// `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.
            ///
            public class SetIamPolicyRequest : ContainerAnalysisBaseServiceRequest<Google.Apis.ContainerAnalysis.v1beta1.Data.Policy>
            {
                /// Constructs a new SetIamPolicy request.
                public SetIamPolicyRequest(Google.Apis.Services.IClientService service, Google.Apis.ContainerAnalysis.v1beta1.Data.SetIamPolicyRequest body, string resource) : base(service)
                {
                    Resource = resource;
                    Body = body;
                    InitParameters();
                }

                ///
                /// REQUIRED: The resource for which the policy is being specified. See [Resource
                /// names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this
                /// field.
                ///
                [Google.Apis.Util.RequestParameterAttribute("resource", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string Resource { get; private set; }

                /// Gets or sets the body of this request.
                Google.Apis.ContainerAnalysis.v1beta1.Data.SetIamPolicyRequest Body { get; set; }

                /// Returns the body of the request.
                protected override object GetBody() => Body;

                /// Gets the method name.
                public override string MethodName => "setIamPolicy";

                /// Gets the HTTP method.
                public override string HttpMethod => "POST";

                /// Gets the REST path.
                public override string RestPath => "v1beta1/{+resource}:setIamPolicy";

                /// Initializes SetIamPolicy parameter list.
                protected override void InitParameters()
                {
                    base.InitParameters();
                    RequestParameters.Add("resource", new Google.Apis.Discovery.Parameter
                    {
                        Name = "resource",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = @"^projects/[^/]+/occurrences/[^/]+$",
                    });
                }
            }

            ///
            /// Returns the permissions that a caller has on the specified note or occurrence. Requires list permission
            /// on the project (for example, `containeranalysis.notes.list`). The resource takes the format
            /// `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and
            /// `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.
            ///
            /// <param name="body">The body of the request.</param>
            /// <param name="resource">
            /// REQUIRED: The resource for which the policy detail is being requested. See [Resource
            /// names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.
            /// </param>
            public virtual TestIamPermissionsRequest TestIamPermissions(Google.Apis.ContainerAnalysis.v1beta1.Data.TestIamPermissionsRequest body, string resource)
            {
                return new TestIamPermissionsRequest(service, body, resource);
            }

            ///
            /// Returns the permissions that a caller has on the specified note or occurrence. Requires list permission
            /// on the project (for example, `containeranalysis.notes.list`). The resource takes the format
            /// `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and
            /// `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.
            ///
            public class TestIamPermissionsRequest : ContainerAnalysisBaseServiceRequest<Google.Apis.ContainerAnalysis.v1beta1.Data.TestIamPermissionsResponse>
            {
                /// Constructs a new TestIamPermissions request.
                public TestIamPermissionsRequest(Google.Apis.Services.IClientService service, Google.Apis.ContainerAnalysis.v1beta1.Data.TestIamPermissionsRequest body, string resource) : base(service)
                {
                    Resource = resource;
                    Body = body;
                    InitParameters();
                }

                ///
                /// REQUIRED: The resource for which the policy detail is being requested. See [Resource
                /// names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this
                /// field.
                ///
                [Google.Apis.Util.RequestParameterAttribute("resource", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string Resource { get; private set; }

                /// Gets or sets the body of this request.
                Google.Apis.ContainerAnalysis.v1beta1.Data.TestIamPermissionsRequest Body { get; set; }

                /// Returns the body of the request.
                protected override object GetBody() => Body;

                /// Gets the method name.
                public override string MethodName => "testIamPermissions";

                /// Gets the HTTP method.
                public override string HttpMethod => "POST";

                /// Gets the REST path.
                public override string RestPath => "v1beta1/{+resource}:testIamPermissions";

                /// Initializes TestIamPermissions parameter list.
                protected override void InitParameters()
                {
                    base.InitParameters();
                    RequestParameters.Add("resource", new Google.Apis.Discovery.Parameter
                    {
                        Name = "resource",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = @"^projects/[^/]+/occurrences/[^/]+$",
                    });
                }
            }
        }
    }
}
namespace Google.Apis.ContainerAnalysis.v1beta1.Data
{
    /// An alias to a repo revision.
    public class AliasContext : Google.Apis.Requests.IDirectResponseSchema
    {
        /// The alias kind.
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; }

        /// The alias name.
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// Indicates which analysis completed successfully. Multiple types of analysis can be performed on a single
    /// resource.
    ///
    public class AnalysisCompleted : Google.Apis.Requests.IDirectResponseSchema
    {
        [Newtonsoft.Json.JsonPropertyAttribute("analysisType")]
        public virtual System.Collections.Generic.IList<string> AnalysisType { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Artifact describes a build product.
    public class Artifact : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Hash or checksum value of a binary, or Docker Registry 2.0 digest of a container.
        [Newtonsoft.Json.JsonPropertyAttribute("checksum")]
        public virtual string Checksum { get; set; }

        ///
        /// Artifact ID, if any; for container images, this will be a URL by digest like
        /// `gcr.io/projectID/imagename@sha256:123456`.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("id")]
        public virtual string Id { get; set; }

        ///
        /// Related artifact names. This may be the path to a binary or jar file, or in the case of a container build,
        /// the name used to push the container image to Google Container Registry, as presented to `docker push`. Note
        /// that a single Artifact ID can have multiple names, for example if two tags are applied to one image.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("names")]
        public virtual System.Collections.Generic.IList<string> Names { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Defines a hash object for use in Materials and Products.
    public class ArtifactHashes : Google.Apis.Requests.IDirectResponseSchema
    {
        [Newtonsoft.Json.JsonPropertyAttribute("sha256")]
        public virtual string Sha256 { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Defines an object to declare an in-toto artifact rule
    public class ArtifactRule : Google.Apis.Requests.IDirectResponseSchema
    {
        [Newtonsoft.Json.JsonPropertyAttribute("artifactRule")]
        public virtual System.Collections.Generic.IList<string> ArtifactRuleValue { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// Occurrence that represents a single "attestation". The authenticity of an attestation can be verified using the
    /// attached signature. If the verifier trusts the public key of the signer, then verifying the signature is
    /// sufficient to establish trust. In this circumstance, the authority to which this attestation is attached is
    /// primarily useful for look-up (how to find this attestation if you already know the authority and artifact to be
    /// verified) and intent (which authority was this attestation intended to sign for).
    ///
    public class Attestation : Google.Apis.Requests.IDirectResponseSchema
    {
        [Newtonsoft.Json.JsonPropertyAttribute("genericSignedAttestation")]
        public virtual GenericSignedAttestation GenericSignedAttestation { get; set; }

        /// A PGP signed attestation.
        [Newtonsoft.Json.JsonPropertyAttribute("pgpSignedAttestation")]
        public virtual PgpSignedAttestation PgpSignedAttestation { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// Note kind that represents a logical attestation "role" or "authority". For example, an organization might have
    /// one `Authority` for "QA" and one for "build". This note is intended to act strictly as a grouping mechanism for
    /// the attached occurrences (Attestations). This grouping mechanism also provides a security boundary, since IAM
    /// ACLs gate the ability for a principle to attach an occurrence to a given note. It also provides a single point
    /// of lookup to find all attached attestation occurrences, even if they don't all live in the same project.
    ///
    public class Authority : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Hint hints at the purpose of the attestation authority.
        [Newtonsoft.Json.JsonPropertyAttribute("hint")]
        public virtual Hint Hint { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// Basis describes the base image portion (Note) of the DockerImage relationship. Linked occurrences are derived
    /// from this or an equivalent image via: FROM Or an equivalent reference, e.g. a tag of the resource_url.
    ///
    public class Basis : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Required. Immutable. The fingerprint of the base image.
        [Newtonsoft.Json.JsonPropertyAttribute("fingerprint")]
        public virtual Fingerprint Fingerprint { get; set; }

        ///
        /// Required. Immutable. The resource_url for the resource representing the basis of associated occurrence
        /// images.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("resourceUrl")]
        public virtual string ResourceUrl { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Request to create notes in batch.
    public class BatchCreateNotesRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// Required. The notes to create, the key is expected to be the note ID. Max allowed length is 1000.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("notes")]
        public virtual System.Collections.Generic.IDictionary<string, Note> Notes { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Response for creating notes in batch.
    public class BatchCreateNotesResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// The notes that were created.
        [Newtonsoft.Json.JsonPropertyAttribute("notes")]
        public virtual System.Collections.Generic.IList<Note> Notes { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Request to create occurrences in batch.
    public class BatchCreateOccurrencesRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Required. The occurrences to create. Max allowed length is 1000.
        [Newtonsoft.Json.JsonPropertyAttribute("occurrences")]
        public virtual System.Collections.Generic.IList<Occurrence> Occurrences { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Response for creating occurrences in batch.
    public class BatchCreateOccurrencesResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// The occurrences that were created.
        [Newtonsoft.Json.JsonPropertyAttribute("occurrences")]
        public virtual System.Collections.Generic.IList<Occurrence> Occurrences { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Associates `members`, or principals, with a `role`.
    public class Binding : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// The condition that is associated with this binding. If the condition evaluates to `true`, then this binding
        /// applies to the current request. If the condition evaluates to `false`, then this binding does not apply to
        /// the current request. However, a different role binding might grant the same role to one or more of the
        /// principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM
        /// documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("condition")]
        public virtual Expr Condition { get; set; }

        ///
        /// Specifies the principals requesting access for a Google Cloud resource. `members` can have the following
        /// values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a
        /// Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated
        /// with a Google account or a service account. Does not include identities that come from external identity
        /// providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a
        /// specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address
        /// that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. *
        /// `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes
        /// service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For
        /// example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that
        /// represents a Google group. For example, `admins@example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An
        /// email address (plus unique identifier) representing a user that has been recently deleted. For example,
        /// `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to
        /// `user:{emailid}` and the recovered user retains the role in the binding. *
        /// `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a
        /// service account that has been recently deleted. For example,
        /// `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted,
        /// this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the
        /// binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing
        /// a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`.
        /// If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role
        /// in the binding. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that
        /// domain. For example, `google.com` or `example.com`.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("members")]
        public virtual System.Collections.Generic.IList<string> Members { get; set; }

        ///
        /// Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`,
        /// or `roles/owner`.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("role")]
        public virtual string Role { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// Note holding the version of the provider's builder and the signature of the provenance message in the build
    /// details occurrence.
    ///
    public class Build : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Required. Immutable. Version of the builder which produced this build.
        [Newtonsoft.Json.JsonPropertyAttribute("builderVersion")]
        public virtual string BuilderVersion { get; set; }

        ///
        /// Signature of the build in occurrences pointing to this build note containing build details.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("signature")]
        public virtual BuildSignature Signature { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// Provenance of a build. Contains all information needed to verify the full details about the build from source to
    /// completion.
    ///
    public class BuildProvenance : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// Special options applied to this build. This is a catch-all field where build providers can enter any desired
        /// additional details.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("buildOptions")]
        public virtual System.Collections.Generic.IDictionary<string, string> BuildOptions { get; set; }

        /// Version string of the builder at the time this build was executed.
        [Newtonsoft.Json.JsonPropertyAttribute("builderVersion")]
        public virtual string BuilderVersion { get; set; }

        /// Output of the build.
        [Newtonsoft.Json.JsonPropertyAttribute("builtArtifacts")]
        public virtual System.Collections.Generic.IList<Artifact> BuiltArtifacts { get; set; }

        /// Commands requested by the build.
        [Newtonsoft.Json.JsonPropertyAttribute("commands")]
        public virtual System.Collections.Generic.IList<Command> Commands { get; set; }

        /// Time at which the build was created.
        [Newtonsoft.Json.JsonPropertyAttribute("createTime")]
        public virtual object CreateTime { get; set; }

        ///
        /// E-mail address of the user who initiated this build. Note that this was the user's e-mail address at the
        /// time the build was initiated; this address may not represent the same end-user for all time.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("creator")]
        public virtual string Creator { get; set; }

        /// Time at which execution of the build was finished.
        [Newtonsoft.Json.JsonPropertyAttribute("endTime")]
        public virtual object EndTime { get; set; }

        /// Required. Unique identifier of the build.
        [Newtonsoft.Json.JsonPropertyAttribute("id")]
        public virtual string Id { get; set; }

        /// URI where any logs for this provenance were written.
        [Newtonsoft.Json.JsonPropertyAttribute("logsUri")]
        public virtual string LogsUri { get; set; }

        /// ID of the project.
        [Newtonsoft.Json.JsonPropertyAttribute("projectId")]
        public virtual string ProjectId { get; set; }

        /// Details of the Source input to the build.
        [Newtonsoft.Json.JsonPropertyAttribute("sourceProvenance")]
        public virtual Source SourceProvenance { get; set; }

        /// Time at which execution of the build was started.
        [Newtonsoft.Json.JsonPropertyAttribute("startTime")]
        public virtual object StartTime { get; set; }

        /// Trigger identifier if the build was triggered automatically; empty if not.
        [Newtonsoft.Json.JsonPropertyAttribute("triggerId")]
        public virtual string TriggerId { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Message encapsulating the signature of the verified build.
    public class BuildSignature : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// An ID for the key used to sign. This could be either an ID for the key stored in `public_key` (such as the
        /// ID or fingerprint for a PGP key, or the CN for a cert), or a reference to an external key (such as a
        /// reference to a key in Cloud Key Management Service).
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("keyId")]
        public virtual string KeyId { get; set; }

        /// The type of the key, either stored in `public_key` or referenced in `key_id`.
        [Newtonsoft.Json.JsonPropertyAttribute("keyType")]
        public virtual string KeyType { get; set; }

        ///
        /// Public key of the builder which can be used to verify that the related findings are valid and unchanged. If
        /// `key_type` is empty, this defaults to PEM encoded public keys. This field may be empty if `key_id`
        /// references an external key. For Cloud Build based signatures, this is a PEM encoded public key. To verify
        /// the Cloud Build signature, place the contents of this field into a file (public.pem). The signature field is
        /// base64-decoded into its binary representation in signature.bin, and the provenance bytes from `BuildDetails`
        /// are base64-decoded into a binary representation in signed.bin. OpenSSL can then verify the signature:
        /// `openssl sha256 -verify public.pem -signature signature.bin signed.bin`
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("publicKey")]
        public virtual string PublicKey { get; set; }

        /// Required. Signature of the related `BuildProvenance`. In JSON, this is base-64 encoded.
        [Newtonsoft.Json.JsonPropertyAttribute("signature")]
        public virtual string Signature { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// A step in the build pipeline. Next ID: 20
    public class BuildStep : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// Allow this build step to fail without failing the entire build if and only if the exit code is one of the
        /// specified codes. If allow_failure is also specified, this field will take precedence.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("allowExitCodes")]
        public virtual System.Collections.Generic.IList<System.Nullable<int>> AllowExitCodes { get; set; }

        ///
        /// Allow this build step to fail without failing the entire build. If false, the entire build will fail if this
        /// step fails. Otherwise, the build will succeed, but this step will still have a failure status. Error
        /// information will be reported in the failure_detail field.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("allowFailure")]
        public virtual System.Nullable<bool> AllowFailure { get; set; }

        ///
        /// A list of arguments that will be presented to the step when it is started. If the image used to run the
        /// step's container has an entrypoint, the `args` are used as arguments to that entrypoint. If the image does
        /// not define an entrypoint, the first element in args is used as the entrypoint, and the remainder will be
        /// used as arguments.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("args")]
        public virtual System.Collections.Generic.IList<string> Args { get; set; }

        ///
        /// Working directory to use when running this step's container. If this value is a relative path, it is
        /// relative to the build's working directory. If this value is absolute, it may be outside the build's working
        /// directory, in which case the contents of the path may not be persisted across build step executions, unless
        /// a `volume` for that path is specified. If the build specifies a `RepoSource` with `dir` and a step with a
        /// `dir`, which specifies an absolute path, the `RepoSource` `dir` is ignored for the step's execution.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("dir")]
        public virtual string Dir { get; set; }

        ///
        /// Entrypoint to be used instead of the build step image's default entrypoint. If unset, the image's default
        /// entrypoint is used.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("entrypoint")]
        public virtual string Entrypoint { get; set; }

        ///
        /// A list of environment variable definitions to be used when running a step. The elements are of the form
        /// "KEY=VALUE" for the environment variable "KEY" being given the value "VALUE".
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("env")]
        public virtual System.Collections.Generic.IList<string> Env { get; set; }

        /// Output only. Return code from running the step.
        [Newtonsoft.Json.JsonPropertyAttribute("exitCode")]
        public virtual System.Nullable<int> ExitCode { get; set; }

        ///
        /// Unique identifier for this build step, used in `wait_for` to reference this build step as a dependency.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("id")]
        public virtual string Id { get; set; }

        ///
        /// Required. The name of the container image that will run this particular build step. If the image is
        /// available in the host's Docker daemon's cache, it will be run directly. If not, the host will attempt to
        /// pull the image first, using the builder service account's credentials if necessary. The Docker daemon's
        /// cache will already have the latest versions of all of the officially supported build steps
        /// ([https://github.com/GoogleCloudPlatform/cloud-builders](https://github.com/GoogleCloudPlatform/cloud-builders)).
        /// The Docker daemon will also have cached many of the layers for some popular images, like "ubuntu", "debian",
        /// but they will be refreshed at the time you attempt to use them. If you built an image in a previous build
        /// step, it will be stored in the host's Docker daemon's cache and is available to use as the name for a later
        /// build step.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; }

        /// Output only. Stores timing information for pulling this build step's builder image only.
        [Newtonsoft.Json.JsonPropertyAttribute("pullTiming")]
        public virtual TimeSpan PullTiming { get; set; }

        ///
        /// A shell script to be executed in the step. When script is provided, the user cannot specify the entrypoint
        /// or args.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("script")]
        public virtual string Script { get; set; }

        ///
        /// A list of environment variables which are encrypted using a Cloud Key Management Service crypto key. These
        /// values must be specified in the build's `Secret`.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("secretEnv")]
        public virtual System.Collections.Generic.IList<string> SecretEnv { get; set; }

        ///
        /// Output only. Status of the build step. At this time, build step status is only updated on build completion;
        /// step status is not updated in real-time as the build progresses.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("status")]
        public virtual string Status { get; set; }

        ///
        /// Time limit for executing this build step. If not defined, the step has no time limit and will be allowed to
        /// continue to run until either it completes or the build itself times out.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("timeout")]
        public virtual object Timeout { get; set; }

        /// Output only. Stores timing information for executing this build step.
        [Newtonsoft.Json.JsonPropertyAttribute("timing")]
        public virtual TimeSpan Timing { get; set; }

        ///
        /// List of volumes to mount into the build step. Each volume is created as an empty volume prior to execution
        /// of the build step. Upon completion of the build, volumes and their contents are discarded. Using a named
        /// volume in only one step is not valid as it is indicative of a build request with an incorrect configuration.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("volumes")]
        public virtual System.Collections.Generic.IList<Volume> Volumes { get; set; }

        ///
        /// The ID(s) of the step(s) that this build step depends on. This build step will not start until all the build
        /// steps in `wait_for` have completed successfully. If `wait_for` is empty, this build step will start when all
        /// previous build steps in the `Build.Steps` list have completed successfully.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("waitFor")]
        public virtual System.Collections.Generic.IList<string> WaitFor { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// Defines an object for the byproducts field in in-toto links. The suggested fields are "stderr", "stdout", and
    /// "return-value".
    ///
    public class ByProducts : Google.Apis.Requests.IDirectResponseSchema
    {
        [Newtonsoft.Json.JsonPropertyAttribute("customValues")]
        public virtual System.Collections.Generic.IDictionary<string, string> CustomValues { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// Common Vulnerability Scoring System. This message is compatible with CVSS v2 and v3. For CVSS v2 details, see
    /// https://www.first.org/cvss/v2/guide CVSS v2 calculator: https://nvd.nist.gov/vuln-metrics/cvss/v2-calculator For
    /// CVSS v3 details, see https://www.first.org/cvss/specification-document CVSS v3 calculator:
    /// https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator
    ///
    public class CVSS : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Defined in CVSS v3, CVSS v2
        [Newtonsoft.Json.JsonPropertyAttribute("attackComplexity")]
        public virtual string AttackComplexity { get; set; }

        ///
        /// Base Metrics Represents the intrinsic characteristics of a vulnerability that are constant over time and
        /// across user environments. Defined in CVSS v3, CVSS v2
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("attackVector")]
        public virtual string AttackVector { get; set; }

        /// Defined in CVSS v2
        [Newtonsoft.Json.JsonPropertyAttribute("authentication")]
        public virtual string Authentication { get; set; }

        /// Defined in CVSS v3, CVSS v2
        [Newtonsoft.Json.JsonPropertyAttribute("availabilityImpact")]
        public virtual string AvailabilityImpact { get; set; }

        /// The base score is a function of the base metric scores.
        [Newtonsoft.Json.JsonPropertyAttribute("baseScore")]
        public virtual System.Nullable<float> BaseScore { get; set; }

        /// Defined in CVSS v3, CVSS v2
        [Newtonsoft.Json.JsonPropertyAttribute("confidentialityImpact")]
        public virtual string ConfidentialityImpact { get; set; }

        [Newtonsoft.Json.JsonPropertyAttribute("exploitabilityScore")]
        public virtual System.Nullable<float> ExploitabilityScore { get; set; }

        [Newtonsoft.Json.JsonPropertyAttribute("impactScore")]
        public virtual System.Nullable<float> ImpactScore { get; set; }

        /// Defined in CVSS v3, CVSS v2
        [Newtonsoft.Json.JsonPropertyAttribute("integrityImpact")]
        public virtual string IntegrityImpact { get; set; }

        /// Defined in CVSS v3
        [Newtonsoft.Json.JsonPropertyAttribute("privilegesRequired")]
        public virtual string PrivilegesRequired { get; set; }

        /// Defined in CVSS v3
        [Newtonsoft.Json.JsonPropertyAttribute("scope")]
        public virtual string Scope { get; set; }

        /// Defined in CVSS v3
        [Newtonsoft.Json.JsonPropertyAttribute("userInteraction")]
        public virtual string UserInteraction { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// Deprecated. Common Vulnerability Scoring System version 3. For details, see
    /// https://www.first.org/cvss/specification-document
    ///
    public class CVSSv3 : Google.Apis.Requests.IDirectResponseSchema
    {
        [Newtonsoft.Json.JsonPropertyAttribute("attackComplexity")]
        public virtual string AttackComplexity { get; set; }

        ///
        /// Base Metrics Represents the intrinsic characteristics of a vulnerability that are constant over time and
        /// across user environments.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("attackVector")]
        public virtual string AttackVector { get; set; }

        [Newtonsoft.Json.JsonPropertyAttribute("availabilityImpact")]
        public virtual string AvailabilityImpact { get; set; }

        /// The base score is a function of the base metric scores.
        [Newtonsoft.Json.JsonPropertyAttribute("baseScore")]
        public virtual System.Nullable<float> BaseScore { get; set; }

        [Newtonsoft.Json.JsonPropertyAttribute("confidentialityImpact")]
        public virtual string ConfidentialityImpact { get; set; }

        [Newtonsoft.Json.JsonPropertyAttribute("exploitabilityScore")]
        public virtual System.Nullable<float> ExploitabilityScore { get; set; }

        [Newtonsoft.Json.JsonPropertyAttribute("impactScore")]
        public virtual System.Nullable<float> ImpactScore { get; set; }

        [Newtonsoft.Json.JsonPropertyAttribute("integrityImpact")]
        public virtual string IntegrityImpact { get; set; }

        [Newtonsoft.Json.JsonPropertyAttribute("privilegesRequired")]
        public virtual string PrivilegesRequired { get; set; }

        [Newtonsoft.Json.JsonPropertyAttribute("scope")]
        public virtual string Scope { get; set; }

        [Newtonsoft.Json.JsonPropertyAttribute("userInteraction")]
        public virtual string UserInteraction { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// A CloudRepoSourceContext denotes a particular revision in a Google Cloud Source Repo.
    public class CloudRepoSourceContext : Google.Apis.Requests.IDirectResponseSchema
    {
        /// An alias, which may be a branch or tag.
        [Newtonsoft.Json.JsonPropertyAttribute("aliasContext")]
        public virtual AliasContext AliasContext { get; set; }

        /// The ID of the repo.
        [Newtonsoft.Json.JsonPropertyAttribute("repoId")]
        public virtual RepoId RepoId { get; set; }

        /// A revision ID.
        [Newtonsoft.Json.JsonPropertyAttribute("revisionId")]
        public virtual string RevisionId { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Command describes a step performed as part of the build pipeline.
    public class Command : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Command-line arguments used when executing this command.
        [Newtonsoft.Json.JsonPropertyAttribute("args")]
        public virtual System.Collections.Generic.IList<string> Args { get; set; }

        /// Working directory (relative to project source root) used when running this command.
        [Newtonsoft.Json.JsonPropertyAttribute("dir")]
        public virtual string Dir { get; set; }

        /// Environment variables set before running this command.
        [Newtonsoft.Json.JsonPropertyAttribute("env")]
        public virtual System.Collections.Generic.IList<string> Env { get; set; }

        ///
        /// Optional unique identifier for this command, used in wait_for to reference this command as a dependency.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("id")]
        public virtual string Id { get; set; }

        ///
        /// Required. Name of the command, as presented on the command line, or if the command is packaged as a Docker
        /// container, as presented to `docker pull`.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; }

        /// The ID(s) of the command(s) that this command depends on.
        [Newtonsoft.Json.JsonPropertyAttribute("waitFor")]
        public virtual System.Collections.Generic.IList<string> WaitFor { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// ApprovalConfig describes configuration for manual approval of a build.
    public class ContaineranalysisGoogleDevtoolsCloudbuildV1ApprovalConfig : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// Whether or not approval is needed. If this is set on a build, it will become pending when created, and will
        /// need to be explicitly approved to start.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("approvalRequired")]
        public virtual System.Nullable<bool> ApprovalRequired { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// ApprovalResult describes the decision and associated metadata of a manual approval of a build.
    ///
    public class ContaineranalysisGoogleDevtoolsCloudbuildV1ApprovalResult : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Output only. The time when the approval decision was made.
        [Newtonsoft.Json.JsonPropertyAttribute("approvalTime")]
        public virtual object ApprovalTime { get; set; }

        ///
        /// Output only. Email of the user that called the ApproveBuild API to approve or reject a build at the time
        /// that the API was called.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("approverAccount")]
        public virtual string ApproverAccount { get; set; }

        /// Optional. An optional comment for this manual approval result.
        [Newtonsoft.Json.JsonPropertyAttribute("comment")]
        public virtual string Comment { get; set; }

        /// Required. The decision of this manual approval.
        [Newtonsoft.Json.JsonPropertyAttribute("decision")]
        public virtual string Decision { get; set; }

        ///
        /// Optional. An optional URL tied to this manual approval result. This field is essentially the same as
        /// comment, except that it will be rendered by the UI differently. An example use case is a link to an external
        /// job that approved this Build.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("url")]
        public virtual string Url { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// Artifacts produced by a build that should be uploaded upon successful completion of all build steps.
    ///
    public class ContaineranalysisGoogleDevtoolsCloudbuildV1Artifacts : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// A list of images to be pushed upon the successful completion of all build steps. The images will be pushed
        /// using the builder service account's credentials. The digests of the pushed images will be stored in the
        /// Build resource's results field. If any of the images fail to be pushed, the build is marked FAILURE.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("images")]
        public virtual System.Collections.Generic.IList<string> Images { get; set; }

        ///
        /// A list of Maven artifacts to be uploaded to Artifact Registry upon successful completion of all build steps.
        /// Artifacts in the workspace matching specified paths globs will be uploaded to the specified Artifact
        /// Registry repository using the builder service account's credentials. If any artifacts fail to be pushed, the
        /// build is marked FAILURE.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("mavenArtifacts")]
        public virtual System.Collections.Generic.IList<ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsMavenArtifact> MavenArtifacts { get; set; }

        ///
        /// A list of objects to be uploaded to Cloud Storage upon successful completion of all build steps. Files in
        /// the workspace matching specified paths globs will be uploaded to the specified Cloud Storage location using
        /// the builder service account's credentials. The location and generation of the uploaded objects will be
        /// stored in the Build resource's results field. If any objects fail to be pushed, the build is marked FAILURE.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("objects")]
        public virtual ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsArtifactObjects Objects { get; set; }

        ///
        /// A list of Python packages to be uploaded to Artifact Registry upon successful completion of all build steps.
        /// The build service account credentials will be used to perform the upload. If any objects fail to be pushed,
        /// the build is marked FAILURE.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("pythonPackages")]
        public virtual System.Collections.Generic.IList<ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsPythonPackage> PythonPackages { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// Files in the workspace to upload to Cloud Storage upon successful completion of all build steps.
    ///
    public class ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsArtifactObjects : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// Cloud Storage bucket and optional object path, in the form "gs://bucket/path/to/somewhere/". (see [Bucket
        /// Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)). Files in the
        /// workspace matching any path pattern will be uploaded to Cloud Storage with this location as a prefix.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("location")]
        public virtual string Location { get; set; }

        /// Path globs used to match files in the build's workspace.
        [Newtonsoft.Json.JsonPropertyAttribute("paths")]
        public virtual System.Collections.Generic.IList<string> Paths { get; set; }

        /// Output only. Stores timing information for pushing all artifact objects.
        [Newtonsoft.Json.JsonPropertyAttribute("timing")]
        public virtual ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan Timing { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// A Maven artifact to upload to Artifact Registry upon successful completion of all build steps.
    ///
    public class ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsMavenArtifact : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Maven `artifactId` value used when uploading the artifact to Artifact Registry.
        [Newtonsoft.Json.JsonPropertyAttribute("artifactId")]
        public virtual string ArtifactId { get; set; }

        /// Maven `groupId` value used when uploading the artifact to Artifact Registry.
        [Newtonsoft.Json.JsonPropertyAttribute("groupId")]
        public virtual string GroupId { get; set; }

        ///
        /// Path to an artifact in the build's workspace to be uploaded to Artifact Registry. This can be either an
        /// absolute path, e.g. /workspace/my-app/target/my-app-1.0.SNAPSHOT.jar or a relative path from /workspace,
        /// e.g. my-app/target/my-app-1.0.SNAPSHOT.jar.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("path")]
        public virtual string Path { get; set; }

        ///
        /// Artifact Registry repository, in the form "https://$REGION-maven.pkg.dev/$PROJECT/$REPOSITORY" Artifact in
        /// the workspace specified by path will be uploaded to Artifact Registry with this location as a prefix.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("repository")]
        public virtual string Repository { get; set; }

        /// Maven `version` value used when uploading the artifact to Artifact Registry.
        [Newtonsoft.Json.JsonPropertyAttribute("version")]
        public virtual string Version { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// Python package to upload to Artifact Registry upon successful completion of all build steps. A package can
    /// encapsulate multiple objects to be uploaded to a single repository.
    ///
    public class ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsPythonPackage : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// Path globs used to match files in the build's workspace. For Python/ Twine, this is usually `dist/*`, and
        /// sometimes additionally an `.asc` file.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("paths")]
        public virtual System.Collections.Generic.IList<string> Paths { get; set; }

        ///
        /// Artifact Registry repository, in the form "https://$REGION-python.pkg.dev/$PROJECT/$REPOSITORY" Files in the
        /// workspace matching any path pattern will be uploaded to Artifact Registry with this location as a prefix.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("repository")]
        public virtual string Repository { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// A build resource in the Cloud Build API. At a high level, a `Build` describes where to find source code, how to
    /// build it (for example, the builder image to run on the source), and where to store the built artifacts. Fields
    /// can include the following variables, which will be expanded when the build is created: - $PROJECT_ID: the
    /// project ID of the build. - $PROJECT_NUMBER: the project number of the build. - $LOCATION: the location/region of
    /// the build. - $BUILD_ID: the autogenerated ID of the build. - $REPO_NAME: the source repository name specified by
    /// RepoSource. - $BRANCH_NAME: the branch name specified by RepoSource. - $TAG_NAME: the tag name specified by
    /// RepoSource. - $REVISION_ID or $COMMIT_SHA: the commit SHA specified by RepoSource or resolved from the specified
    /// branch or tag. - $SHORT_SHA: first 7 characters of $REVISION_ID or $COMMIT_SHA.
    ///
    public class ContaineranalysisGoogleDevtoolsCloudbuildV1Build : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Output only. Describes this build's approval configuration, status, and result.
        [Newtonsoft.Json.JsonPropertyAttribute("approval")]
        public virtual ContaineranalysisGoogleDevtoolsCloudbuildV1BuildApproval Approval { get; set; }

        ///
        /// Artifacts produced by the build that should be uploaded upon successful completion of all build steps.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("artifacts")]
        public virtual ContaineranalysisGoogleDevtoolsCloudbuildV1Artifacts Artifacts { get; set; }

        /// Secrets and secret environment variables.
        [Newtonsoft.Json.JsonPropertyAttribute("availableSecrets")]
        public virtual ContaineranalysisGoogleDevtoolsCloudbuildV1Secrets AvailableSecrets { get; set; }

        ///
        /// Output only. The ID of the `BuildTrigger` that triggered this build, if it was triggered automatically.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("buildTriggerId")]
        public virtual string BuildTriggerId { get; set; }

        /// Output only. Time at which the request to create the build was received.
        [Newtonsoft.Json.JsonPropertyAttribute("createTime")]
        public virtual object CreateTime { get; set; }

        /// Output only. Contains information about the build when status=FAILURE.
        [Newtonsoft.Json.JsonPropertyAttribute("failureInfo")]
        public virtual ContaineranalysisGoogleDevtoolsCloudbuildV1BuildFailureInfo FailureInfo { get; set; }

        ///
        /// Output only. Time at which execution of the build was finished. The difference between finish_time and
        /// start_time is the duration of the build's execution.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("finishTime")]
        public virtual object FinishTime { get; set; }

        /// Output only. Unique identifier of the build.
        [Newtonsoft.Json.JsonPropertyAttribute("id")]
        public virtual string Id { get; set; }

        ///
        /// A list of images to be pushed upon the successful completion of all build steps. The images are pushed using
        /// the builder service account's credentials. The digests of the pushed images will be stored in the `Build`
        /// resource's results field. If any of the images fail to be pushed, the build status is marked `FAILURE`.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("images")]
        public virtual System.Collections.Generic.IList<string> Images { get; set; }

        /// Output only. URL to logs for this build in Google Cloud Console.
        [Newtonsoft.Json.JsonPropertyAttribute("logUrl")]
        public virtual string LogUrl { get; set; }

        ///
        /// Google Cloud Storage bucket where logs should be written (see [Bucket Name
        /// Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)). Logs file names will be of
        /// the format `${logs_bucket}/log-${build_id}.txt`.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("logsBucket")]
        public virtual string LogsBucket { get; set; }

        ///
        /// Output only. The 'Build' name with format: `projects/{project}/locations/{location}/builds/{build}`, where
        /// {build} is a unique identifier generated by the service.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; }

        /// Special options for this build.
        [Newtonsoft.Json.JsonPropertyAttribute("options")]
        public virtual ContaineranalysisGoogleDevtoolsCloudbuildV1BuildOptions Options { get; set; }

        /// Output only. ID of the project.
        [Newtonsoft.Json.JsonPropertyAttribute("projectId")]
        public virtual string ProjectId { get; set; }

        ///
        /// TTL in queue for this build. If provided and the build is enqueued longer than this value, the build will
        /// expire and the build status will be `EXPIRED`. The TTL starts ticking from create_time.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("queueTtl")]
        public virtual object QueueTtl { get; set; }

        /// Output only. Results of the build.
        [Newtonsoft.Json.JsonPropertyAttribute("results")]
        public virtual ContaineranalysisGoogleDevtoolsCloudbuildV1Results Results { get; set; }

        ///
        /// Secrets to decrypt using Cloud Key Management Service. Note: Secret Manager is the recommended technique for
        /// managing sensitive data with Cloud Build. Use `available_secrets` to configure builds to access secrets from
        /// Secret Manager. For instructions, see: https://cloud.google.com/cloud-build/docs/securing-builds/use-secrets
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("secrets")]
        public virtual System.Collections.Generic.IList<ContaineranalysisGoogleDevtoolsCloudbuildV1Secret> Secrets { get; set; }

        ///
        /// IAM service account whose credentials will be used at build runtime. Must be of the format
        /// `projects/{PROJECT_ID}/serviceAccounts/{ACCOUNT}`. ACCOUNT can be email address or uniqueId of the service
        /// account.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("serviceAccount")]
        public virtual string ServiceAccount { get; set; }

        /// The location of the source files to build.
        [Newtonsoft.Json.JsonPropertyAttribute("source")]
        public virtual ContaineranalysisGoogleDevtoolsCloudbuildV1Source Source { get; set; }

        /// Output only. A permanent fixed identifier for source.
        [Newtonsoft.Json.JsonPropertyAttribute("sourceProvenance")]
        public virtual ContaineranalysisGoogleDevtoolsCloudbuildV1SourceProvenance SourceProvenance { get; set; }

        /// Output only. Time at which execution of the build was started.
        [Newtonsoft.Json.JsonPropertyAttribute("startTime")]
        public virtual object StartTime { get; set; }

        /// Output only. Status of the build.
        [Newtonsoft.Json.JsonPropertyAttribute("status")]
        public virtual string Status { get; set; }

        /// Output only. Customer-readable message about the current status.
        [Newtonsoft.Json.JsonPropertyAttribute("statusDetail")]
        public virtual string StatusDetail { get; set; }

        /// Required. The operations to be performed on the workspace.
        [Newtonsoft.Json.JsonPropertyAttribute("steps")]
        public virtual System.Collections.Generic.IList<ContaineranalysisGoogleDevtoolsCloudbuildV1BuildStep> Steps { get; set; }

        /// Substitutions data for `Build` resource.
        [Newtonsoft.Json.JsonPropertyAttribute("substitutions")]
        public virtual System.Collections.Generic.IDictionary<string, string> Substitutions { get; set; }

        /// Tags for annotation of a `Build`. These are not docker tags.
        [Newtonsoft.Json.JsonPropertyAttribute("tags")]
        public virtual System.Collections.Generic.IList<string> Tags { get; set; }

        ///
        /// Amount of time that this build should be allowed to run, to second granularity. If this amount of time
        /// elapses, work on the build will cease and the build status will be `TIMEOUT`. `timeout` starts ticking from
        /// `startTime`. Default time is ten minutes.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("timeout")]
        public virtual object Timeout { get; set; }

        ///
        /// Output only. Stores timing information for phases of the build. Valid keys are: * BUILD: time to execute all
        /// build steps. * PUSH: time to push all artifacts including docker images and non docker artifacts. *
        /// FETCHSOURCE: time to fetch source. * SETUPBUILD: time to set up build. If the build does not specify source
        /// or images, these keys will not be included.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("timing")]
        public virtual System.Collections.Generic.IDictionary<string, ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan> Timing { get; set; }

        /// Output only. Non-fatal problems encountered during the execution of the build.
        [Newtonsoft.Json.JsonPropertyAttribute("warnings")]
        public virtual System.Collections.Generic.IList<ContaineranalysisGoogleDevtoolsCloudbuildV1BuildWarning> Warnings { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// BuildApproval describes a build's approval configuration, state, and result.
    public class ContaineranalysisGoogleDevtoolsCloudbuildV1BuildApproval : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Output only. Configuration for manual approval of this build.
        [Newtonsoft.Json.JsonPropertyAttribute("config")]
        public virtual ContaineranalysisGoogleDevtoolsCloudbuildV1ApprovalConfig Config { get; set; }

        /// Output only. Result of manual approval for this Build.
        [Newtonsoft.Json.JsonPropertyAttribute("result")]
        public virtual ContaineranalysisGoogleDevtoolsCloudbuildV1ApprovalResult Result { get; set; }

        /// Output only. The state of this build's approval.
        [Newtonsoft.Json.JsonPropertyAttribute("state")]
        public virtual string State { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// A fatal problem encountered during the execution of the build.
    public class ContaineranalysisGoogleDevtoolsCloudbuildV1BuildFailureInfo : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Explains the failure issue in more detail using hard-coded text.
        [Newtonsoft.Json.JsonPropertyAttribute("detail")]
        public virtual string Detail { get; set; }

        /// The name of the failure.
        [Newtonsoft.Json.JsonPropertyAttribute("type")]
        public virtual string Type { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Optional arguments to enable specific features of builds.
    public class ContaineranalysisGoogleDevtoolsCloudbuildV1BuildOptions : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// Requested disk size for the VM that runs the build. Note that this is *NOT* "disk free"; some of the space
        /// will be used by the operating system and build utilities. Also note that this is the minimum disk size that
        /// will be allocated for the build -- the build may run with a larger disk than requested. At present, the
        /// maximum disk size is 2000GB; builds that request more than the maximum are rejected with an error.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("diskSizeGb")]
        public virtual System.Nullable<long> DiskSizeGb { get; set; }

        ///
        /// Option to specify whether or not to apply bash style string operations to the substitutions. NOTE: this is
        /// always enabled for triggered builds and cannot be overridden in the build configuration file.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("dynamicSubstitutions")]
        public virtual System.Nullable<bool> DynamicSubstitutions { get; set; }

        ///
        /// A list of global environment variable definitions that will exist for all build steps in this build. If a
        /// variable is defined in both globally and in a build step, the variable will use the build step value. The
        /// elements are of the form "KEY=VALUE" for the environment variable "KEY" being given the value "VALUE".
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("env")]
        public virtual System.Collections.Generic.IList<string> Env { get; set; }

        /// Option to define build log streaming behavior to Google Cloud Storage.
        [Newtonsoft.Json.JsonPropertyAttribute("logStreamingOption")]
        public virtual string LogStreamingOption { get; set; }

        /// Option to specify the logging mode, which determines if and where build logs are stored.
        [Newtonsoft.Json.JsonPropertyAttribute("logging")]
        public virtual string Logging { get; set; }

        /// Compute Engine machine type on which to run the build.
        [Newtonsoft.Json.JsonPropertyAttribute("machineType")]
        public virtual string MachineType { get; set; }

        ///
        /// Optional. Specification for execution on a `WorkerPool`. See [running builds in a private
        /// pool](https://cloud.google.com/build/docs/private-pools/run-builds-in-private-pool) for more information.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("pool")]
        public virtual ContaineranalysisGoogleDevtoolsCloudbuildV1BuildOptionsPoolOption Pool { get; set; }

        /// Requested verifiability options.
        [Newtonsoft.Json.JsonPropertyAttribute("requestedVerifyOption")]
        public virtual string RequestedVerifyOption { get; set; }

        ///
        /// A list of global environment variables, which are encrypted using a Cloud Key Management Service crypto key.
        /// These values must be specified in the build's `Secret`. These variables will be available to all build steps
        /// in this build.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("secretEnv")]
        public virtual System.Collections.Generic.IList<string> SecretEnv { get; set; }

        /// Requested hash for SourceProvenance.
        [Newtonsoft.Json.JsonPropertyAttribute("sourceProvenanceHash")]
        public virtual System.Collections.Generic.IList<string> SourceProvenanceHash { get; set; }

        ///
        /// Option to specify behavior when there is an error in the substitution checks. NOTE: this is always set to
        /// ALLOW_LOOSE for triggered builds and cannot be overridden in the build configuration file.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("substitutionOption")]
        public virtual string SubstitutionOption { get; set; }

        ///
        /// Global list of volumes to mount for ALL build steps Each volume is created as an empty volume prior to
        /// starting the build process. Upon completion of the build, volumes and their contents are discarded. Global
        /// volume names and paths cannot conflict with the volumes defined a build step. Using a global volume in a
        /// build with only one step is not valid as it is indicative of a build request with an incorrect
        /// configuration.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("volumes")]
        public virtual System.Collections.Generic.IList<ContaineranalysisGoogleDevtoolsCloudbuildV1Volume> Volumes { get; set; }

        /// This field deprecated; please use `pool.name` instead.
        [Newtonsoft.Json.JsonPropertyAttribute("workerPool")]
        public virtual string WorkerPool { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// Details about how a build should be executed on a `WorkerPool`. See [running builds in a private
    /// pool](https://cloud.google.com/build/docs/private-pools/run-builds-in-private-pool) for more information.
    ///
    public class ContaineranalysisGoogleDevtoolsCloudbuildV1BuildOptionsPoolOption : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// The `WorkerPool` resource to execute the build on. You must have `cloudbuild.workerpools.use` on the project
        /// hosting the WorkerPool. Format projects/{project}/locations/{location}/workerPools/{workerPoolId}
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// A step in the build pipeline.
    public class ContaineranalysisGoogleDevtoolsCloudbuildV1BuildStep : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// Allow this build step to fail without failing the entire build if and only if the exit code is one of the
        /// specified codes. If allow_failure is also specified, this field will take precedence.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("allowExitCodes")]
        public virtual System.Collections.Generic.IList<System.Nullable<int>> AllowExitCodes { get; set; }

        ///
        /// Allow this build step to fail without failing the entire build. If false, the entire build will fail if this
        /// step fails. Otherwise, the build will succeed, but this step will still have a failure status. Error
        /// information will be reported in the failure_detail field.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("allowFailure")]
        public virtual System.Nullable<bool> AllowFailure { get; set; }

        ///
        /// A list of arguments that will be presented to the step when it is started. If the image used to run the
        /// step's container has an entrypoint, the `args` are used as arguments to that entrypoint. If the image does
        /// not define an entrypoint, the first element in args is used as the entrypoint, and the remainder will be
        /// used as arguments.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("args")]
        public virtual System.Collections.Generic.IList<string> Args { get; set; }

        ///
        /// Working directory to use when running this step's container. If this value is a relative path, it is
        /// relative to the build's working directory. If this value is absolute, it may be outside the build's working
        /// directory, in which case the contents of the path may not be persisted across build step executions, unless
        /// a `volume` for that path is specified. If the build specifies a `RepoSource` with `dir` and a step with a
        /// `dir`, which specifies an absolute path, the `RepoSource` `dir` is ignored for the step's execution.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("dir")]
        public virtual string Dir { get; set; }

        ///
        /// Entrypoint to be used instead of the build step image's default entrypoint. If unset, the image's default
        /// entrypoint is used.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("entrypoint")]
        public virtual string Entrypoint { get; set; }

        ///
        /// A list of environment variable definitions to be used when running a step. The elements are of the form
        /// "KEY=VALUE" for the environment variable "KEY" being given the value "VALUE".
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("env")]
        public virtual System.Collections.Generic.IList<string> Env { get; set; }

        /// Output only. Return code from running the step.
        [Newtonsoft.Json.JsonPropertyAttribute("exitCode")]
        public virtual System.Nullable<int> ExitCode { get; set; }

        ///
        /// Unique identifier for this build step, used in `wait_for` to reference this build step as a dependency.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("id")]
        public virtual string Id { get; set; }

        ///
        /// Required. The name of the container image that will run this particular build step. If the image is
        /// available in the host's Docker daemon's cache, it will be run directly. If not, the host will attempt to
        /// pull the image first, using the builder service account's credentials if necessary. The Docker daemon's
        /// cache will already have the latest versions of all of the officially supported build steps
        /// ([https://github.com/GoogleCloudPlatform/cloud-builders](https://github.com/GoogleCloudPlatform/cloud-builders)).
        /// The Docker daemon will also have cached many of the layers for some popular images, like "ubuntu", "debian",
        /// but they will be refreshed at the time you attempt to use them. If you built an image in a previous build
        /// step, it will be stored in the host's Docker daemon's cache and is available to use as the name for a later
        /// build step.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; }

        /// Output only. Stores timing information for pulling this build step's builder image only.
        [Newtonsoft.Json.JsonPropertyAttribute("pullTiming")]
        public virtual ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan PullTiming { get; set; }

        ///
        /// A shell script to be executed in the step. When script is provided, the user cannot specify the entrypoint
        /// or args.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("script")]
        public virtual string Script { get; set; }

        ///
        /// A list of environment variables which are encrypted using a Cloud Key Management Service crypto key. These
        /// values must be specified in the build's `Secret`.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("secretEnv")]
        public virtual System.Collections.Generic.IList<string> SecretEnv { get; set; }

        ///
        /// Output only. Status of the build step. At this time, build step status is only updated on build completion;
        /// step status is not updated in real-time as the build progresses.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("status")]
        public virtual string Status { get; set; }

        ///
        /// Time limit for executing this build step. If not defined, the step has no time limit and will be allowed to
        /// continue to run until either it completes or the build itself times out.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("timeout")]
        public virtual object Timeout { get; set; }

        /// Output only. Stores timing information for executing this build step.
        [Newtonsoft.Json.JsonPropertyAttribute("timing")]
        public virtual ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan Timing { get; set; }

        ///
        /// List of volumes to mount into the build step. Each volume is created as an empty volume prior to execution
        /// of the build step. Upon completion of the build, volumes and their contents are discarded. Using a named
        /// volume in only one step is not valid as it is indicative of a build request with an incorrect configuration.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("volumes")]
        public virtual System.Collections.Generic.IList<ContaineranalysisGoogleDevtoolsCloudbuildV1Volume> Volumes { get; set; }

        ///
        /// The ID(s) of the step(s) that this build step depends on. This build step will not start until all the build
        /// steps in `wait_for` have completed successfully. If `wait_for` is empty, this build step will start when all
        /// previous build steps in the `Build.Steps` list have completed successfully.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("waitFor")]
        public virtual System.Collections.Generic.IList<string> WaitFor { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// A non-fatal problem encountered during the execution of the build.
    public class ContaineranalysisGoogleDevtoolsCloudbuildV1BuildWarning : Google.Apis.Requests.IDirectResponseSchema
    {
        /// The priority for this warning.
        [Newtonsoft.Json.JsonPropertyAttribute("priority")]
        public virtual string Priority { get; set; }

        /// Explanation of the warning generated.
        [Newtonsoft.Json.JsonPropertyAttribute("text")]
        public virtual string Text { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// An image built by the pipeline.
    public class ContaineranalysisGoogleDevtoolsCloudbuildV1BuiltImage : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Docker Registry 2.0 digest.
        [Newtonsoft.Json.JsonPropertyAttribute("digest")]
        public virtual string Digest { get; set; }

        ///
        /// Name used to push the container image to Google Container Registry, as presented to `docker push`.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; }

        /// Output only. Stores timing information for pushing the specified image.
        [Newtonsoft.Json.JsonPropertyAttribute("pushTiming")]
        public virtual ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan PushTiming { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// Container message for hashes of byte content of files, used in SourceProvenance messages to verify integrity of
    /// source input to the build.
    ///
    public class ContaineranalysisGoogleDevtoolsCloudbuildV1FileHashes : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Collection of file hashes.
        [Newtonsoft.Json.JsonPropertyAttribute("fileHash")]
        public virtual System.Collections.Generic.IList<ContaineranalysisGoogleDevtoolsCloudbuildV1Hash> FileHash { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Container message for hash values.
    public class ContaineranalysisGoogleDevtoolsCloudbuildV1Hash : Google.Apis.Requests.IDirectResponseSchema
    {
        /// The type of hash that was performed.
        [Newtonsoft.Json.JsonPropertyAttribute("type")]
        public virtual string Type { get; set; }

        /// The hash value.
        [Newtonsoft.Json.JsonPropertyAttribute("value")]
        public virtual string Value { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// Pairs a set of secret environment variables mapped to encrypted values with the Cloud KMS key to use to decrypt
    /// the value.
    ///
    public class ContaineranalysisGoogleDevtoolsCloudbuildV1InlineSecret : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// Map of environment variable name to its encrypted value. Secret environment variables must be unique across
        /// all of a build's secrets, and must be used by at least one build step. Values can be at most 64 KB in size.
        /// There can be at most 100 secret values across all of a build's secrets.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("envMap")]
        public virtual System.Collections.Generic.IDictionary<string, string> EnvMap { get; set; }

        ///
        /// Resource name of Cloud KMS crypto key to decrypt the encrypted value. In format:
        /// projects/*/locations/*/keyRings/*/cryptoKeys/*
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("kmsKeyName")]
        public virtual string KmsKeyName { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Location of the source in a Google Cloud Source Repository.
    public class ContaineranalysisGoogleDevtoolsCloudbuildV1RepoSource : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// Regex matching branches to build. The syntax of the regular expressions accepted is the syntax accepted by
        /// RE2 and described at https://github.com/google/re2/wiki/Syntax
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("branchName")]
        public virtual string BranchName { get; set; }

        /// Explicit commit SHA to build.
        [Newtonsoft.Json.JsonPropertyAttribute("commitSha")]
        public virtual string CommitSha { get; set; }

        ///
        /// Directory, relative to the source root, in which to run the build. This must be a relative path. If a step's
        /// `dir` is specified and is an absolute path, this value is ignored for that step's execution.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("dir")]
        public virtual string Dir { get; set; }

        /// Only trigger a build if the revision regex does NOT match the revision regex.
        [Newtonsoft.Json.JsonPropertyAttribute("invertRegex")]
        public virtual System.Nullable<bool> InvertRegex { get; set; }

        ///
        /// ID of the project that owns the Cloud Source Repository. If omitted, the project ID requesting the build is
        /// assumed.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("projectId")]
        public virtual string ProjectId { get; set; }

        /// Name of the Cloud Source Repository.
        [Newtonsoft.Json.JsonPropertyAttribute("repoName")]
        public virtual string RepoName { get; set; }

        /// Substitutions to use in a triggered build. Should only be used with RunBuildTrigger
        [Newtonsoft.Json.JsonPropertyAttribute("substitutions")]
        public virtual System.Collections.Generic.IDictionary<string, string> Substitutions { get; set; }

        ///
        /// Regex matching tags to build. The syntax of the regular expressions accepted is the syntax accepted by RE2
        /// and described at https://github.com/google/re2/wiki/Syntax
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("tagName")]
        public virtual string TagName { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Artifacts created by the build pipeline.
    public class ContaineranalysisGoogleDevtoolsCloudbuildV1Results : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// Path to the artifact manifest for non-container artifacts uploaded to Cloud Storage. Only populated when
        /// artifacts are uploaded to Cloud Storage.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("artifactManifest")]
        public virtual string ArtifactManifest { get; set; }

        /// Time to push all non-container artifacts to Cloud Storage.
        [Newtonsoft.Json.JsonPropertyAttribute("artifactTiming")]
        public virtual ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan ArtifactTiming { get; set; }

        /// List of build step digests, in the order corresponding to build step indices.
        [Newtonsoft.Json.JsonPropertyAttribute("buildStepImages")]
        public virtual System.Collections.Generic.IList<string> BuildStepImages { get; set; }

        ///
        /// List of build step outputs, produced by builder images, in the order corresponding to build step indices.
        /// [Cloud Builders](https://cloud.google.com/cloud-build/docs/cloud-builders) can produce this output by
        /// writing to `$BUILDER_OUTPUT/output`. Only the first 4KB of data is stored.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("buildStepOutputs")]
        public virtual System.Collections.Generic.IList<string> BuildStepOutputs { get; set; }

        /// Container images that were built as a part of the build.
        [Newtonsoft.Json.JsonPropertyAttribute("images")]
        public virtual System.Collections.Generic.IList<ContaineranalysisGoogleDevtoolsCloudbuildV1BuiltImage> Images { get; set; }

        /// Maven artifacts uploaded to Artifact Registry at the end of the build.
        [Newtonsoft.Json.JsonPropertyAttribute("mavenArtifacts")]
        public virtual System.Collections.Generic.IList<ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedMavenArtifact> MavenArtifacts { get; set; }

        ///
        /// Number of non-container artifacts uploaded to Cloud Storage. Only populated when artifacts are uploaded to
        /// Cloud Storage.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("numArtifacts")]
        public virtual System.Nullable<long> NumArtifacts { get; set; }

        /// Python artifacts uploaded to Artifact Registry at the end of the build.
        [Newtonsoft.Json.JsonPropertyAttribute("pythonPackages")]
        public virtual System.Collections.Generic.IList<ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedPythonPackage> PythonPackages { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// Pairs a set of secret environment variables containing encrypted values with the Cloud KMS key to use to decrypt
    /// the value. Note: Use `kmsKeyName` with `available_secrets` instead of using `kmsKeyName` with `secret`. For
    /// instructions see: https://cloud.google.com/cloud-build/docs/securing-builds/use-encrypted-credentials.
    ///
    public class ContaineranalysisGoogleDevtoolsCloudbuildV1Secret : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Cloud KMS key name to use to decrypt these envs.
        [Newtonsoft.Json.JsonPropertyAttribute("kmsKeyName")]
        public virtual string KmsKeyName { get; set; }

        ///
        /// Map of environment variable name to its encrypted value. Secret environment variables must be unique across
        /// all of a build's secrets, and must be used by at least one build step. Values can be at most 64 KB in size.
        /// There can be at most 100 secret values across all of a build's secrets.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("secretEnv")]
        public virtual System.Collections.Generic.IDictionary<string, string> SecretEnv { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Pairs a secret environment variable with a SecretVersion in Secret Manager.
    public class ContaineranalysisGoogleDevtoolsCloudbuildV1SecretManagerSecret : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// Environment variable name to associate with the secret. Secret environment variables must be unique across
        /// all of a build's secrets, and must be used by at least one build step.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("env")]
        public virtual string Env { get; set; }

        /// Resource name of the SecretVersion. In format: projects/*/secrets/*/versions/*
        [Newtonsoft.Json.JsonPropertyAttribute("versionName")]
        public virtual string VersionName { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Secrets and secret environment variables.
    public class ContaineranalysisGoogleDevtoolsCloudbuildV1Secrets : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Secrets encrypted with KMS key and the associated secret environment variable.
        [Newtonsoft.Json.JsonPropertyAttribute("inline")]
        public virtual System.Collections.Generic.IList<ContaineranalysisGoogleDevtoolsCloudbuildV1InlineSecret> Inline { get; set; }

        /// Secrets in Secret Manager and associated secret environment variable.
        [Newtonsoft.Json.JsonPropertyAttribute("secretManager")]
        public virtual System.Collections.Generic.IList<ContaineranalysisGoogleDevtoolsCloudbuildV1SecretManagerSecret> SecretManager { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Location of the source in a supported storage service.
    public class ContaineranalysisGoogleDevtoolsCloudbuildV1Source : Google.Apis.Requests.IDirectResponseSchema
    {
        /// If provided, get the source from this location in a Cloud Source Repository.
        [Newtonsoft.Json.JsonPropertyAttribute("repoSource")]
        public virtual ContaineranalysisGoogleDevtoolsCloudbuildV1RepoSource RepoSource { get; set; }

        /// If provided, get the source from this location in Google Cloud Storage.
        [Newtonsoft.Json.JsonPropertyAttribute("storageSource")]
        public virtual ContaineranalysisGoogleDevtoolsCloudbuildV1StorageSource StorageSource { get; set; }

        ///
        /// If provided, get the source from this manifest in Google Cloud Storage. This feature is in Preview; see
        /// description [here](https://github.com/GoogleCloudPlatform/cloud-builders/tree/master/gcs-fetcher).
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("storageSourceManifest")]
        public virtual ContaineranalysisGoogleDevtoolsCloudbuildV1StorageSourceManifest StorageSourceManifest { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// Provenance of the source. Ways to find the original source, or verify that some source was used for this build.
    ///
    public class ContaineranalysisGoogleDevtoolsCloudbuildV1SourceProvenance : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// Output only. Hash(es) of the build source, which can be used to verify that the original source integrity
        /// was maintained in the build. Note that `FileHashes` will only be populated if `BuildOptions` has requested a
        /// `SourceProvenanceHash`. The keys to this map are file paths used as build source and the values contain the
        /// hash values for those files. If the build source came in a single package such as a gzipped tarfile
        /// (`.tar.gz`), the `FileHash` will be for the single path to that file.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("fileHashes")]
        public virtual System.Collections.Generic.IDictionary<string, ContaineranalysisGoogleDevtoolsCloudbuildV1FileHashes> FileHashes { get; set; }

        /// A copy of the build's `source.repo_source`, if exists, with any revisions resolved.
        [Newtonsoft.Json.JsonPropertyAttribute("resolvedRepoSource")]
        public virtual ContaineranalysisGoogleDevtoolsCloudbuildV1RepoSource ResolvedRepoSource { get; set; }

        /// A copy of the build's `source.storage_source`, if exists, with any generations resolved.
        [Newtonsoft.Json.JsonPropertyAttribute("resolvedStorageSource")]
        public virtual ContaineranalysisGoogleDevtoolsCloudbuildV1StorageSource ResolvedStorageSource { get; set; }

        ///
        /// A copy of the build's `source.storage_source_manifest`, if exists, with any revisions resolved. This feature
        /// is in Preview.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("resolvedStorageSourceManifest")]
        public virtual ContaineranalysisGoogleDevtoolsCloudbuildV1StorageSourceManifest ResolvedStorageSourceManifest { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Location of the source in an archive file in Google Cloud Storage.
    public class ContaineranalysisGoogleDevtoolsCloudbuildV1StorageSource : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// Google Cloud Storage bucket containing the source (see [Bucket Name
        /// Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)).
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("bucket")]
        public virtual string Bucket { get; set; }

        ///
        /// Google Cloud Storage generation for the object. If the generation is omitted, the latest generation will be
        /// used.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("generation")]
        public virtual System.Nullable<long> Generation { get; set; }

        ///
        /// Google Cloud Storage object containing the source. This object must be a zipped (`.zip`) or gzipped archive
        /// file (`.tar.gz`) containing source to build.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("object")]
        public virtual string Object__ { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// Location of the source manifest in Google Cloud Storage. This feature is in Preview; see description
    /// [here](https://github.com/GoogleCloudPlatform/cloud-builders/tree/master/gcs-fetcher).
    ///
    public class ContaineranalysisGoogleDevtoolsCloudbuildV1StorageSourceManifest : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// Google Cloud Storage bucket containing the source manifest (see [Bucket Name
        /// Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)).
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("bucket")]
        public virtual string Bucket { get; set; }

        ///
        /// Google Cloud Storage generation for the object. If the generation is omitted, the latest generation will be
        /// used.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("generation")]
        public virtual System.Nullable<long> Generation { get; set; }

        ///
        /// Google Cloud Storage object containing the source manifest. This object must be a JSON file.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("object")]
        public virtual string Object__ { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Start and end times for a build execution phase.
    public class ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan : Google.Apis.Requests.IDirectResponseSchema
    {
        /// End of time span.
        [Newtonsoft.Json.JsonPropertyAttribute("endTime")]
        public virtual object EndTime { get; set; }

        /// Start of time span.
        [Newtonsoft.Json.JsonPropertyAttribute("startTime")]
        public virtual object StartTime { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// A Maven artifact uploaded using the MavenArtifact directive.
    public class ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedMavenArtifact : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Hash types and values of the Maven Artifact.
        [Newtonsoft.Json.JsonPropertyAttribute("fileHashes")]
        public virtual ContaineranalysisGoogleDevtoolsCloudbuildV1FileHashes FileHashes { get; set; }

        /// Output only. Stores timing information for pushing the specified artifact.
        [Newtonsoft.Json.JsonPropertyAttribute("pushTiming")]
        public virtual ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan PushTiming { get; set; }

        /// URI of the uploaded artifact.
        [Newtonsoft.Json.JsonPropertyAttribute("uri")]
        public virtual string Uri { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Artifact uploaded using the PythonPackage directive.
    public class ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedPythonPackage : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Hash types and values of the Python Artifact.
        [Newtonsoft.Json.JsonPropertyAttribute("fileHashes")]
        public virtual ContaineranalysisGoogleDevtoolsCloudbuildV1FileHashes FileHashes { get; set; }

        /// Output only. Stores timing information for pushing the specified artifact.
        [Newtonsoft.Json.JsonPropertyAttribute("pushTiming")]
        public virtual ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan PushTiming { get; set; }

        /// URI of the uploaded artifact.
        [Newtonsoft.Json.JsonPropertyAttribute("uri")]
        public virtual string Uri { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// Volume describes a Docker container volume which is mounted into build steps in order to persist files across
    /// build step execution.
    ///
    public class ContaineranalysisGoogleDevtoolsCloudbuildV1Volume : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// Name of the volume to mount. Volume names must be unique per build step and must be valid names for Docker
        /// volumes. Each named volume must be used by at least two build steps.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; }

        ///
        /// Path at which to mount the volume. Paths must be absolute and cannot conflict with other volume paths on the
        /// same build step or with certain reserved volume paths.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("path")]
        public virtual string Path { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// An artifact that can be deployed in some runtime.
    public class Deployable : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Required. Resource URI for the artifact being deployed.
        [Newtonsoft.Json.JsonPropertyAttribute("resourceUri")]
        public virtual System.Collections.Generic.IList<string> ResourceUri { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// The period during which some deployable was active in a runtime.
    public class Deployment : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Address of the runtime element hosting this deployment.
        [Newtonsoft.Json.JsonPropertyAttribute("address")]
        public virtual string Address { get; set; }

        /// Configuration used to create this deployment.
        [Newtonsoft.Json.JsonPropertyAttribute("config")]
        public virtual string Config { get; set; }

        /// Required. Beginning of the lifetime of this deployment.
        [Newtonsoft.Json.JsonPropertyAttribute("deployTime")]
        public virtual object DeployTime { get; set; }

        /// Platform hosting this deployment.
        [Newtonsoft.Json.JsonPropertyAttribute("platform")]
        public virtual string Platform { get; set; }

        ///
        /// Output only. Resource URI for the artifact being deployed taken from the deployable field with the same
        /// name.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("resourceUri")]
        public virtual System.Collections.Generic.IList<string> ResourceUri { get; set; }

        /// End of the lifetime of this deployment.
        [Newtonsoft.Json.JsonPropertyAttribute("undeployTime")]
        public virtual object UndeployTime { get; set; }

        /// Identity of the user that triggered this deployment.
        [Newtonsoft.Json.JsonPropertyAttribute("userEmail")]
        public virtual string UserEmail { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// Derived describes the derived image portion (Occurrence) of the DockerImage relationship. This image would be
    /// produced from a Dockerfile with FROM .
    ///
    public class Derived : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Output only. This contains the base image URL for the derived image occurrence.
        [Newtonsoft.Json.JsonPropertyAttribute("baseResourceUrl")]
        public virtual string BaseResourceUrl { get; set; }

        ///
        /// Output only. The number of layers by which this image differs from the associated image basis.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("distance")]
        public virtual System.Nullable<int> Distance { get; set; }

        /// Required. The fingerprint of the derived image.
        [Newtonsoft.Json.JsonPropertyAttribute("fingerprint")]
        public virtual Fingerprint Fingerprint { get; set; }

        ///
        /// This contains layer-specific metadata, if populated it has length "distance" and is ordered with [distance]
        /// being the layer immediately following the base image and [1] being the final layer.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("layerInfo")]
        public virtual System.Collections.Generic.IList<Layer> LayerInfo { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// Identifies all appearances of this vulnerability in the package for a specific distro/location. For example:
    /// glibc in cpe:/o:debian:debian_linux:8 for versions 2.1 - 2.2
    ///
    public class Detail : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// Required. The CPE URI in [cpe format](https://cpe.mitre.org/specification/) in which the vulnerability
        /// manifests. Examples include distro or storage location for vulnerable jar.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("cpeUri")]
        public virtual string CpeUri { get; set; }

        /// A vendor-specific description of this note.
        [Newtonsoft.Json.JsonPropertyAttribute("description")]
        public virtual string Description { get; set; }

        /// The fix for this specific package version.
        [Newtonsoft.Json.JsonPropertyAttribute("fixedLocation")]
        public virtual VulnerabilityLocation FixedLocation { get; set; }

        ///
        /// Whether this detail is obsolete. Occurrences are expected not to point to obsolete details.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("isObsolete")]
        public virtual System.Nullable<bool> IsObsolete { get; set; }

        /// The max version of the package in which the vulnerability exists.
        [Newtonsoft.Json.JsonPropertyAttribute("maxAffectedVersion")]
        public virtual Version MaxAffectedVersion { get; set; }

        /// The min version of the package in which the vulnerability exists.
        [Newtonsoft.Json.JsonPropertyAttribute("minAffectedVersion")]
        public virtual Version MinAffectedVersion { get; set; }

        /// Required. The name of the package where the vulnerability was found.
        [Newtonsoft.Json.JsonPropertyAttribute("package")]
        public virtual string Package { get; set; }

        /// The type of package; whether native or non native(ruby gems, node.js packages etc).
        [Newtonsoft.Json.JsonPropertyAttribute("packageType")]
        public virtual string PackageType { get; set; }

        /// The severity (eg: distro assigned severity) for this vulnerability.
        [Newtonsoft.Json.JsonPropertyAttribute("severityName")]
        public virtual string SeverityName { get; set; }

        /// The source from which the information in this Detail was obtained.
        [Newtonsoft.Json.JsonPropertyAttribute("source")]
        public virtual string Source { get; set; }

        ///
        /// The time this information was last changed at the source. This is an upstream timestamp from the underlying
        /// information source - e.g. Ubuntu security tracker.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("sourceUpdateTime")]
        public virtual object SourceUpdateTime { get; set; }

        /// The name of the vendor of the product.
        [Newtonsoft.Json.JsonPropertyAttribute("vendor")]
        public virtual string Vendor { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Details of an attestation occurrence.
    public class Details : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Required. Attestation for the resource.
        [Newtonsoft.Json.JsonPropertyAttribute("attestation")]
        public virtual Attestation Attestation { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Digest information.
    public class Digest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// `SHA1`, `SHA512` etc.
        [Newtonsoft.Json.JsonPropertyAttribute("algo")]
        public virtual string Algo { get; set; }

        /// Value of the digest.
        [Newtonsoft.Json.JsonPropertyAttribute("digestBytes")]
        public virtual string DigestBytes { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Provides information about the analysis status of a discovered resource.
    public class Discovered : Google.Apis.Requests.IDirectResponseSchema
    {
        [Newtonsoft.Json.JsonPropertyAttribute("analysisCompleted")]
        public virtual AnalysisCompleted AnalysisCompleted { get; set; }

        ///
        /// Indicates any errors encountered during analysis of a resource. There could be 0 or more of these errors.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("analysisError")]
        public virtual System.Collections.Generic.IList<Status> AnalysisError { get; set; }

        /// The status of discovery for the resource.
        [Newtonsoft.Json.JsonPropertyAttribute("analysisStatus")]
        public virtual string AnalysisStatus { get; set; }

        ///
        /// When an error is encountered this will contain a LocalizedMessage under details to show to the user. The
        /// LocalizedMessage is output only and populated by the API.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("analysisStatusError")]
        public virtual Status AnalysisStatusError { get; set; }

        /// Whether the resource is continuously analyzed.
        [Newtonsoft.Json.JsonPropertyAttribute("continuousAnalysis")]
        public virtual string ContinuousAnalysis { get; set; }

        /// The last time continuous analysis was done for this resource. Deprecated, do not use.
        [Newtonsoft.Json.JsonPropertyAttribute("lastAnalysisTime")]
        public virtual object LastAnalysisTime { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// A note that indicates a type of analysis a provider would perform. This note exists in a provider's project. A
    /// `Discovery` occurrence is created in a consumer's project at the start of analysis.
    ///
    public class Discovery : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Required. Immutable. The kind of analysis that is handled by this discovery.
        [Newtonsoft.Json.JsonPropertyAttribute("analysisKind")]
        public virtual string AnalysisKind { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// This represents a particular channel of distribution for a given package. E.g., Debian's jessie-backports dpkg
    /// mirror.
    ///
    public class Distribution : Google.Apis.Requests.IDirectResponseSchema
    {
        /// The CPU architecture for which packages in this distribution channel were built.
        [Newtonsoft.Json.JsonPropertyAttribute("architecture")]
        public virtual string Architecture { get; set; }

        ///
        /// Required. The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager
        /// version distributing a package.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("cpeUri")]
        public virtual string CpeUri { get; set; }

        /// The distribution channel-specific description of this package.
        [Newtonsoft.Json.JsonPropertyAttribute("description")]
        public virtual string Description { get; set; }

        /// The latest available version of this package in this distribution channel.
        [Newtonsoft.Json.JsonPropertyAttribute("latestVersion")]
        public virtual Version LatestVersion { get; set; }

        /// A freeform string denoting the maintainer of this package.
        [Newtonsoft.Json.JsonPropertyAttribute("maintainer")]
        public virtual string Maintainer { get; set; }

        /// The distribution channel-specific homepage for this package.
        [Newtonsoft.Json.JsonPropertyAttribute("url")]
        public virtual string Url { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// DocumentNote represents an SPDX Document Creation Information section:
    /// https://spdx.github.io/spdx-spec/2-document-creation-information/
    ///
    public class DocumentNote : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// Compliance with the SPDX specification includes populating the SPDX fields therein with data related to such
        /// fields ("SPDX-Metadata")
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("dataLicence")]
        public virtual string DataLicence { get; set; }

        ///
        /// Provide a reference number that can be used to understand how to parse and interpret the rest of the file
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("spdxVersion")]
        public virtual string SpdxVersion { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// DocumentOccurrence represents an SPDX Document Creation Information section:
    /// https://spdx.github.io/spdx-spec/2-document-creation-information/
    ///
    public class DocumentOccurrence : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// Identify when the SPDX file was originally created. The date is to be specified according to combined date
        /// and time in UTC format as specified in ISO 8601 standard
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("createTime")]
        public virtual object CreateTime { get; set; }

        ///
        /// A field for creators of the SPDX file to provide general comments about the creation of the SPDX file or any
        /// other relevant comment not included in the other fields
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("creatorComment")]
        public virtual string CreatorComment { get; set; }

        ///
        /// Identify who (or what, in the case of a tool) created the SPDX file. If the SPDX file was created by an
        /// individual, indicate the person's name
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("creators")]
        public virtual System.Collections.Generic.IList<string> Creators { get; set; }

        ///
        /// A field for creators of the SPDX file content to provide comments to the consumers of the SPDX document
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("documentComment")]
        public virtual string DocumentComment { get; set; }

        /// Identify any external SPDX documents referenced within this SPDX document
        [Newtonsoft.Json.JsonPropertyAttribute("externalDocumentRefs")]
        public virtual System.Collections.Generic.IList<string> ExternalDocumentRefs { get; set; }

        ///
        /// Identify the current SPDX document which may be referenced in relationships by other files, packages
        /// internally and documents externally
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("id")]
        public virtual string Id { get; set; }

        ///
        /// A field for creators of the SPDX file to provide the version of the SPDX License List used when the SPDX
        /// file was created
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("licenseListVersion")]
        public virtual string LicenseListVersion { get; set; }

        ///
        /// Provide an SPDX document specific namespace as a unique absolute Uniform Resource Identifier (URI) as
        /// specified in RFC-3986, with the exception of the '#' delimiter
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("namespace")]
        public virtual string Namespace__ { get; set; }

        /// Identify name of this document as designated by creator
        [Newtonsoft.Json.JsonPropertyAttribute("title")]
        public virtual string Title { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical
    /// example is to use it as the request or the response type of an API method. For instance: service Foo { rpc
    /// Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }
    ///
    public class Empty : Google.Apis.Requests.IDirectResponseSchema
    {
        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// MUST match https://github.com/secure-systems-lab/dsse/blob/master/envelope.proto. An authenticated message of
    /// arbitrary type.
    ///
    public class Envelope : Google.Apis.Requests.IDirectResponseSchema
    {
        [Newtonsoft.Json.JsonPropertyAttribute("payload")]
        public virtual string Payload { get; set; }

        [Newtonsoft.Json.JsonPropertyAttribute("payloadType")]
        public virtual string PayloadType { get; set; }

        [Newtonsoft.Json.JsonPropertyAttribute("signatures")]
        public virtual System.Collections.Generic.IList<EnvelopeSignature> Signatures { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    public class EnvelopeSignature : Google.Apis.Requests.IDirectResponseSchema
    {
        [Newtonsoft.Json.JsonPropertyAttribute("keyid")]
        public virtual string Keyid { get; set; }

        [Newtonsoft.Json.JsonPropertyAttribute("sig")]
        public virtual string Sig { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// Defines an object for the environment field in in-toto links. The suggested fields are "variables",
    /// "filesystem", and "workdir".
    ///
    public class Environment : Google.Apis.Requests.IDirectResponseSchema
    {
        [Newtonsoft.Json.JsonPropertyAttribute("customValues")]
        public virtual System.Collections.Generic.IDictionary<string, string> CustomValues { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression
    /// language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example
    /// (Comparison): title: "Summary size limit" description: "Determines if a summary is less than 100 chars"
    /// expression: "document.summary.size() &lt; 100" Example (Equality): title: "Requestor is owner" description:
    /// "Determines if requestor is the document owner" expression: "document.owner == request.auth.claims.email"
    /// Example (Logic): title: "Public documents" description: "Determine whether the document should be publicly
    /// visible" expression: "document.type != 'private' &amp;&amp; document.type != 'internal'" Example (Data
    /// Manipulation): title: "Notification string" description: "Create a notification string with a timestamp."
    /// expression: "'New message received at ' + string(document.create_time)" The exact variables and functions that
    /// may be referenced within an expression are determined by the service that evaluates it. See the service
    /// documentation for additional information.
    ///
    public class Expr : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// Optional. Description of the expression. This is a longer text which describes the expression, e.g. when
        /// hovered over it in a UI.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("description")]
        public virtual string Description { get; set; }

        /// Textual representation of an expression in Common Expression Language syntax.
        [Newtonsoft.Json.JsonPropertyAttribute("expression")]
        public virtual string Expression { get; set; }

        ///
        /// Optional. String indicating the location of the expression for error reporting, e.g. a file name and a
        /// position in the file.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("location")]
        public virtual string Location { get; set; }

        ///
        /// Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs
        /// which allow to enter the expression.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("title")]
        public virtual string Title { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// An External Reference allows a Package to reference an external source of additional information, metadata,
    /// enumerations, asset identifiers, or downloadable content believed to be relevant to the Package
    ///
    public class ExternalRef : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// An External Reference allows a Package to reference an external source of additional information, metadata,
        /// enumerations, asset identifiers, or downloadable content believed to be relevant to the Package
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("category")]
        public virtual string Category { get; set; }

        /// Human-readable information about the purpose and target of the reference
        [Newtonsoft.Json.JsonPropertyAttribute("comment")]
        public virtual string Comment { get; set; }

        ///
        /// The unique string with no spaces necessary to access the package-specific information, metadata, or content
        /// within the target location
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("locator")]
        public virtual string Locator { get; set; }

        /// Type of category (e.g. 'npm' for the PACKAGE_MANAGER category)
        [Newtonsoft.Json.JsonPropertyAttribute("type")]
        public virtual string Type { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// Container message for hashes of byte content of files, used in source messages to verify integrity of source
    /// input to the build.
    ///
    public class FileHashes : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Required. Collection of file hashes.
        [Newtonsoft.Json.JsonPropertyAttribute("fileHash")]
        public virtual System.Collections.Generic.IList<Hash> FileHash { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// FileNote represents an SPDX File Information section: https://spdx.github.io/spdx-spec/4-file-information/
    ///
    public class FileNote : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// Provide a unique identifier to match analysis information on each specific file in a package
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("checksum")]
        public virtual System.Collections.Generic.IList<string> Checksum { get; set; }

        /// This field provides information about the type of file identified
        [Newtonsoft.Json.JsonPropertyAttribute("fileType")]
        public virtual string FileType { get; set; }

        ///
        /// Identify the full path and filename that corresponds to the file information in this section
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("title")]
        public virtual string Title { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// FileOccurrence represents an SPDX File Information section: https://spdx.github.io/spdx-spec/4-file-information/
    ///
    public class FileOccurrence : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// This field provides a place for the SPDX data creator to record, at the file level, acknowledgements that
        /// may be needed to be communicated in some contexts
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("attributions")]
        public virtual System.Collections.Generic.IList<string> Attributions { get; set; }

        ///
        /// This field provides a place for the SPDX file creator to record any general comments about the file
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("comment")]
        public virtual string Comment { get; set; }

        /// This field provides a place for the SPDX file creator to record file contributors
        [Newtonsoft.Json.JsonPropertyAttribute("contributors")]
        public virtual System.Collections.Generic.IList<string> Contributors { get; set; }

        /// Identify the copyright holder of the file, as well as any dates present
        [Newtonsoft.Json.JsonPropertyAttribute("copyright")]
        public virtual string Copyright { get; set; }

        /// This field contains the license information actually found in the file, if any
        [Newtonsoft.Json.JsonPropertyAttribute("filesLicenseInfo")]
        public virtual System.Collections.Generic.IList<string> FilesLicenseInfo { get; set; }

        ///
        /// Uniquely identify any element in an SPDX document which may be referenced by other elements
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("id")]
        public virtual string Id { get; set; }

        ///
        /// This field contains the license the SPDX file creator has concluded as governing the file or alternative
        /// values if the governing license cannot be determined
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("licenseConcluded")]
        public virtual License LicenseConcluded { get; set; }

        ///
        /// This field provides a place for the SPDX file creator to record license notices or other such related
        /// notices found in the file
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("notice")]
        public virtual string Notice { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// A set of properties that uniquely identify a given Docker image.
    public class Fingerprint : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Required. The layer ID of the final layer in the Docker image's v1 representation.
        [Newtonsoft.Json.JsonPropertyAttribute("v1Name")]
        public virtual string V1Name { get; set; }

        /// Required. The ordered list of v2 blobs that represent a given image.
        [Newtonsoft.Json.JsonPropertyAttribute("v2Blob")]
        public virtual System.Collections.Generic.IList<string> V2Blob { get; set; }

        ///
        /// Output only. The name of the image's v2 blobs computed via: [bottom] := v2_blobbottom := sha256(v2_blob[N] +
        /// " " + v2_name[N+1]) Only the name of the final blob is kept.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("v2Name")]
        public virtual string V2Name { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Per resource and severity counts of fixable and total vulnerabilities.
    public class FixableTotalByDigest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// The number of fixable vulnerabilities associated with this resource.
        [Newtonsoft.Json.JsonPropertyAttribute("fixableCount")]
        public virtual System.Nullable<long> FixableCount { get; set; }

        /// The affected resource.
        [Newtonsoft.Json.JsonPropertyAttribute("resource")]
        public virtual Resource Resource { get; set; }

        /// The severity for this count. SEVERITY_UNSPECIFIED indicates total across all severities.
        [Newtonsoft.Json.JsonPropertyAttribute("severity")]
        public virtual string Severity { get; set; }

        /// The total number of vulnerabilities associated with this resource.
        [Newtonsoft.Json.JsonPropertyAttribute("totalCount")]
        public virtual System.Nullable<long> TotalCount { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// An attestation wrapper that uses the Grafeas `Signature` message. This attestation must define the
    /// `serialized_payload` that the `signatures` verify and any metadata necessary to interpret that plaintext. The
    /// signatures should always be over the `serialized_payload` bytestring.
    ///
    public class GenericSignedAttestation : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// Type (for example schema) of the attestation payload that was signed. The verifier must ensure that the
        /// provided type is one that the verifier supports, and that the attestation payload is a valid instantiation
        /// of that type (for example by validating a JSON schema).
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("contentType")]
        public virtual string ContentType { get; set; }

        ///
        /// The serialized payload that is verified by one or more `signatures`. The encoding and semantic meaning of
        /// this payload must match what is set in `content_type`.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("serializedPayload")]
        public virtual string SerializedPayload { get; set; }

        ///
        /// One or more signatures over `serialized_payload`. Verifier implementations should consider this attestation
        /// message verified if at least one `signature` verifies `serialized_payload`. See `Signature` in common.proto
        /// for more details on signature structure and verification.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("signatures")]
        public virtual System.Collections.Generic.IList<Signature> Signatures { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// A SourceContext referring to a Gerrit project.
    public class GerritSourceContext : Google.Apis.Requests.IDirectResponseSchema
    {
        /// An alias, which may be a branch or tag.
        [Newtonsoft.Json.JsonPropertyAttribute("aliasContext")]
        public virtual AliasContext AliasContext { get; set; }

        ///
        /// The full project name within the host. Projects may be nested, so "project/subproject" is a valid project
        /// name. The "repo name" is the hostURI/project.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("gerritProject")]
        public virtual string GerritProject { get; set; }

        /// The URI of a running Gerrit instance.
        [Newtonsoft.Json.JsonPropertyAttribute("hostUri")]
        public virtual string HostUri { get; set; }

        /// A revision (commit) ID.
        [Newtonsoft.Json.JsonPropertyAttribute("revisionId")]
        public virtual string RevisionId { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Request message for `GetIamPolicy` method.
    public class GetIamPolicyRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// OPTIONAL: A `GetPolicyOptions` object for specifying options to `GetIamPolicy`.
        [Newtonsoft.Json.JsonPropertyAttribute("options")]
        public virtual GetPolicyOptions Options { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Encapsulates settings provided to GetIamPolicy.
    public class GetPolicyOptions : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// Optional. The maximum policy version that will be used to format the policy. Valid values are 0, 1, and 3.
        /// Requests specifying an invalid value will be rejected. Requests for policies with any conditional role
        /// bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or
        /// leave the field unset. The policy in the response might use the policy version that you specified, or it
        /// might use a lower policy version. For example, if you specify version 3, but the policy has no conditional
        /// role bindings, the response uses version 1. To learn which resources support conditions in their IAM
        /// policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("requestedPolicyVersion")]
        public virtual System.Nullable<int> RequestedPolicyVersion { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// A GitSourceContext denotes a particular revision in a third party Git repository (e.g., GitHub).
    ///
    public class GitSourceContext : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Git commit hash.
        [Newtonsoft.Json.JsonPropertyAttribute("revisionId")]
        public virtual string RevisionId { get; set; }

        /// Git repository URL.
        [Newtonsoft.Json.JsonPropertyAttribute("url")]
        public virtual string Url { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// Metadata for all operations used and required for all operations that created by Container Analysis Providers
    ///
    public class GoogleDevtoolsContaineranalysisV1alpha1OperationMetadata : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Output only. The time this operation was created.
        [Newtonsoft.Json.JsonPropertyAttribute("createTime")]
        public virtual object CreateTime { get; set; }

        /// Output only. The time that this operation was marked completed or failed.
        [Newtonsoft.Json.JsonPropertyAttribute("endTime")]
        public virtual object EndTime { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Details of a build occurrence.
    public class GrafeasV1beta1BuildDetails : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Required. The actual provenance for the build.
        [Newtonsoft.Json.JsonPropertyAttribute("provenance")]
        public virtual BuildProvenance Provenance { get; set; }

        ///
        /// Serialized JSON representation of the provenance, used in generating the build signature in the
        /// corresponding build note. After verifying the signature, `provenance_bytes` can be unmarshalled and compared
        /// to the provenance to confirm that it is unchanged. A base64-encoded string representation of the provenance
        /// bytes is used for the signature in order to interoperate with openssl which expects this format for
        /// signature verification. The serialized form is captured both to avoid ambiguity in how the provenance is
        /// marshalled to json as well to prevent incompatibilities with future changes.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("provenanceBytes")]
        public virtual string ProvenanceBytes { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Details of a deployment occurrence.
    public class GrafeasV1beta1DeploymentDetails : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Required. Deployment history for the resource.
        [Newtonsoft.Json.JsonPropertyAttribute("deployment")]
        public virtual Deployment Deployment { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Details of a discovery occurrence.
    public class GrafeasV1beta1DiscoveryDetails : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Required. Analysis status for the discovered resource.
        [Newtonsoft.Json.JsonPropertyAttribute("discovered")]
        public virtual Discovered Discovered { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Details of an image occurrence.
    public class GrafeasV1beta1ImageDetails : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Required. Immutable. The child image derived from the base image.
        [Newtonsoft.Json.JsonPropertyAttribute("derivedImage")]
        public virtual Derived DerivedImage { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    public class GrafeasV1beta1IntotoArtifact : Google.Apis.Requests.IDirectResponseSchema
    {
        [Newtonsoft.Json.JsonPropertyAttribute("hashes")]
        public virtual ArtifactHashes Hashes { get; set; }

        [Newtonsoft.Json.JsonPropertyAttribute("resourceUri")]
        public virtual string ResourceUri { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// This corresponds to a signed in-toto link - it is made up of one or more signatures and the in-toto link itself.
    /// This is used for occurrences of a Grafeas in-toto note.
    ///
    public class GrafeasV1beta1IntotoDetails : Google.Apis.Requests.IDirectResponseSchema
    {
        [Newtonsoft.Json.JsonPropertyAttribute("signatures")]
        public virtual System.Collections.Generic.IList<GrafeasV1beta1IntotoSignature> Signatures { get; set; }

        [Newtonsoft.Json.JsonPropertyAttribute("signed")]
        public virtual Link Signed { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// A signature object consists of the KeyID used and the signature itself.
    public class GrafeasV1beta1IntotoSignature : Google.Apis.Requests.IDirectResponseSchema
    {
        [Newtonsoft.Json.JsonPropertyAttribute("keyid")]
        public virtual string Keyid { get; set; }

        [Newtonsoft.Json.JsonPropertyAttribute("sig")]
        public virtual string Sig { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Details of a package occurrence.
    public class GrafeasV1beta1PackageDetails : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Required. Where the package was installed.
        [Newtonsoft.Json.JsonPropertyAttribute("installation")]
        public virtual Installation Installation { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Details of a vulnerability Occurrence.
    public class GrafeasV1beta1VulnerabilityDetails : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// Output only. The CVSS score of this vulnerability. CVSS score is on a scale of 0-10 where 0 indicates low
        /// severity and 10 indicates high severity.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("cvssScore")]
        public virtual System.Nullable<float> CvssScore { get; set; }

        /// Output only. CVSS version used to populate cvss_score and severity.
        [Newtonsoft.Json.JsonPropertyAttribute("cvssVersion")]
        public virtual string CvssVersion { get; set; }

        ///
        /// The distro assigned severity for this vulnerability when it is available, and note provider assigned
        /// severity when distro has not yet assigned a severity for this vulnerability. When there are multiple
        /// PackageIssues for this vulnerability, they can have different effective severities because some might be
        /// provided by the distro while others are provided by the language ecosystem for a language pack. For this
        /// reason, it is advised to use the effective severity on the PackageIssue level. In the case where multiple
        /// PackageIssues have differing effective severities, this field should be the highest severity for any of the
        /// PackageIssues.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("effectiveSeverity")]
        public virtual string EffectiveSeverity { get; set; }

        /// Output only. A detailed description of this vulnerability.
        [Newtonsoft.Json.JsonPropertyAttribute("longDescription")]
        public virtual string LongDescription { get; set; }

        ///
        /// Required. The set of affected locations and their fixes (if available) within the associated resource.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("packageIssue")]
        public virtual System.Collections.Generic.IList<PackageIssue> PackageIssue { get; set; }

        /// Output only. URLs related to this vulnerability.
        [Newtonsoft.Json.JsonPropertyAttribute("relatedUrls")]
        public virtual System.Collections.Generic.IList<RelatedUrl> RelatedUrls { get; set; }

        /// Output only. The note provider assigned Severity of the vulnerability.
        [Newtonsoft.Json.JsonPropertyAttribute("severity")]
        public virtual string Severity { get; set; }

        /// Output only. A one sentence description of this vulnerability.
        [Newtonsoft.Json.JsonPropertyAttribute("shortDescription")]
        public virtual string ShortDescription { get; set; }

        /// The type of package; whether native or non native(ruby gems, node.js packages etc)
        [Newtonsoft.Json.JsonPropertyAttribute("type")]
        public virtual string Type { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Container message for hash values.
    public class Hash : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Required. The type of hash that was performed.
        [Newtonsoft.Json.JsonPropertyAttribute("type")]
        public virtual string Type { get; set; }

        /// Required. The hash value.
        [Newtonsoft.Json.JsonPropertyAttribute("value")]
        public virtual string Value { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// This submessage provides human-readable hints about the purpose of the authority. Because the name of a note
    /// acts as its resource reference, it is important to disambiguate the canonical name of the Note (which might be a
    /// UUID for security purposes) from "readable" names more suitable for debug output. Note that these hints should
    /// not be used to look up authorities in security sensitive contexts, such as when looking up attestations to
    /// verify.
    ///
    public class Hint : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Required. The human readable name of this attestation authority, for example "qa".
        [Newtonsoft.Json.JsonPropertyAttribute("humanReadableName")]
        public virtual string HumanReadableName { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// This contains the fields corresponding to the definition of a software supply chain step in an in-toto layout.
    /// This information goes into a Grafeas note.
    ///
    public class InToto : Google.Apis.Requests.IDirectResponseSchema
    {
        /// This field contains the expected command used to perform the step.
        [Newtonsoft.Json.JsonPropertyAttribute("expectedCommand")]
        public virtual System.Collections.Generic.IList<string> ExpectedCommand { get; set; }

        ///
        /// The following fields contain in-toto artifact rules identifying the artifacts that enter this supply chain
        /// step, and exit the supply chain step, i.e. materials and products of the step.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("expectedMaterials")]
        public virtual System.Collections.Generic.IList<ArtifactRule> ExpectedMaterials { get; set; }

        [Newtonsoft.Json.JsonPropertyAttribute("expectedProducts")]
        public virtual System.Collections.Generic.IList<ArtifactRule> ExpectedProducts { get; set; }

        ///
        /// This field contains the public keys that can be used to verify the signatures on the step metadata.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("signingKeys")]
        public virtual System.Collections.Generic.IList<SigningKey> SigningKeys { get; set; }

        /// This field identifies the name of the step in the supply chain.
        [Newtonsoft.Json.JsonPropertyAttribute("stepName")]
        public virtual string StepName { get; set; }

        ///
        /// This field contains a value that indicates the minimum number of keys that need to be used to sign the
        /// step's in-toto link.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("threshold")]
        public virtual System.Nullable<long> Threshold { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// This represents how a particular software package may be installed on a system.
    public class Installation : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// Output only. The CPU architecture for which packages in this distribution channel were built. Architecture
        /// will be blank for language packages.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("architecture")]
        public virtual string Architecture { get; set; }

        ///
        /// Output only. The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager
        /// version distributing a package. The cpe_uri will be blank for language packages.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("cpeUri")]
        public virtual string CpeUri { get; set; }

        /// Licenses that have been declared by the authors of the package.
        [Newtonsoft.Json.JsonPropertyAttribute("license")]
        public virtual License License { get; set; }

        /// All of the places within the filesystem versions of this package have been found.
        [Newtonsoft.Json.JsonPropertyAttribute("location")]
        public virtual System.Collections.Generic.IList<Location> Location { get; set; }

        /// Required. Output only. The name of the installed package.
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; }

        ///
        /// Output only. The type of package; whether native or non native (e.g., ruby gems, node.js packages, etc.).
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("packageType")]
        public virtual string PackageType { get; set; }

        /// Output only. The version of the package.
        [Newtonsoft.Json.JsonPropertyAttribute("version")]
        public virtual Version Version { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    public class KnowledgeBase : Google.Apis.Requests.IDirectResponseSchema
    {
        /// The KB name (generally of the form KB[0-9]+ i.e. KB123456).
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; }

        ///
        /// A link to the KB in the Windows update catalog - https://www.catalog.update.microsoft.com/
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("url")]
        public virtual string Url { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Layer holds metadata specific to a layer of a Docker image.
    public class Layer : Google.Apis.Requests.IDirectResponseSchema
    {
        /// The recovered arguments to the Dockerfile directive.
        [Newtonsoft.Json.JsonPropertyAttribute("arguments")]
        public virtual string Arguments { get; set; }

        /// Required. The recovered Dockerfile directive used to construct this layer.
        [Newtonsoft.Json.JsonPropertyAttribute("directive")]
        public virtual string Directive { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// License information.
    public class License : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Comments
        [Newtonsoft.Json.JsonPropertyAttribute("comments")]
        public virtual string Comments { get; set; }

        ///
        /// Often a single license can be used to represent the licensing terms. Sometimes it is necessary to include a
        /// choice of one or more licenses or some combination of license identifiers. Examples: "LGPL-2.1-only OR MIT",
        /// "LGPL-2.1-only AND MIT", "GPL-2.0-or-later WITH Bison-exception-2.2".
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("expression")]
        public virtual string Expression { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// This corresponds to an in-toto link.
    public class Link : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// ByProducts are data generated as part of a software supply chain step, but are not the actual result of the
        /// step.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("byproducts")]
        public virtual ByProducts Byproducts { get; set; }

        ///
        /// This field contains the full command executed for the step. This can also be empty if links are generated
        /// for operations that aren't directly mapped to a specific command. Each term in the command is an independent
        /// string in the list. An example of a command in the in-toto metadata field is: "command": ["git", "clone",
        /// "https://github.com/in-toto/demo-project.git"]
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("command")]
        public virtual System.Collections.Generic.IList<string> Command { get; set; }

        ///
        /// This is a field that can be used to capture information about the environment. It is suggested for this
        /// field to contain information that details environment variables, filesystem information, and the present
        /// working directory. The recommended structure of this field is: "environment": { "custom_values": {
        /// "variables": "", "filesystem": "", "workdir": "", "": "..." } }
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("environment")]
        public virtual Environment Environment { get; set; }

        ///
        /// Materials are the supply chain artifacts that go into the step and are used for the operation performed. The
        /// key of the map is the path of the artifact and the structure contains the recorded hash information. An
        /// example is: "materials": [ { "resource_uri": "foo/bar", "hashes": { "sha256": "ebebf...", : } } ]
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("materials")]
        public virtual System.Collections.Generic.IList<GrafeasV1beta1IntotoArtifact> Materials { get; set; }

        ///
        /// Products are the supply chain artifacts generated as a result of the step. The structure is identical to
        /// that of materials.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("products")]
        public virtual System.Collections.Generic.IList<GrafeasV1beta1IntotoArtifact> Products { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Response for listing occurrences for a note.
    public class ListNoteOccurrencesResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Token to provide to skip to a particular spot in the list.
        [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")]
        public virtual string NextPageToken { get; set; }

        /// The occurrences attached to the specified note.
        [Newtonsoft.Json.JsonPropertyAttribute("occurrences")]
        public virtual System.Collections.Generic.IList<Occurrence> Occurrences { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Response for listing notes.
    public class ListNotesResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// The next pagination token in the list response. It should be used as `page_token` for the following request.
        /// An empty value means no more results.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")]
        public virtual string NextPageToken { get; set; }

        /// The notes requested.
        [Newtonsoft.Json.JsonPropertyAttribute("notes")]
        public virtual System.Collections.Generic.IList<Note> Notes { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Response for listing occurrences.
    public class ListOccurrencesResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// The next pagination token in the list response. It should be used as `page_token` for the following request.
        /// An empty value means no more results.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")]
        public virtual string NextPageToken { get; set; }

        /// The occurrences requested.
        [Newtonsoft.Json.JsonPropertyAttribute("occurrences")]
        public virtual System.Collections.Generic.IList<Occurrence> Occurrences { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// An occurrence of a particular package installation found within a system's filesystem. E.g., glibc was found in
    /// `/var/lib/dpkg/status`.
    ///
    public class Location : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// Deprecated. The CPE URI in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager
        /// version distributing a package.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("cpeUri")]
        public virtual string CpeUri { get; set; }

        /// The path from which we gathered that this package/version is installed.
        [Newtonsoft.Json.JsonPropertyAttribute("path")]
        public virtual string Path { get; set; }

        /// Deprecated. The version installed at this location.
        [Newtonsoft.Json.JsonPropertyAttribute("version")]
        public virtual Version Version { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// A type of analysis that can be done for a resource.
    public class Note : Google.Apis.Requests.IDirectResponseSchema
    {
        /// A note describing an attestation role.
        [Newtonsoft.Json.JsonPropertyAttribute("attestationAuthority")]
        public virtual Authority AttestationAuthority { get; set; }

        /// A note describing a base image.
        [Newtonsoft.Json.JsonPropertyAttribute("baseImage")]
        public virtual Basis BaseImage { get; set; }

        /// A note describing build provenance for a verifiable build.
        [Newtonsoft.Json.JsonPropertyAttribute("build")]
        public virtual Build Build { get; set; }

        ///
        /// Output only. The time this note was created. This field can be used as a filter in list requests.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("createTime")]
        public virtual object CreateTime { get; set; }

        /// A note describing something that can be deployed.
        [Newtonsoft.Json.JsonPropertyAttribute("deployable")]
        public virtual Deployable Deployable { get; set; }

        /// A note describing the initial analysis of a resource.
        [Newtonsoft.Json.JsonPropertyAttribute("discovery")]
        public virtual Discovery Discovery { get; set; }

        /// Time of expiration for this note. Empty if note does not expire.
        [Newtonsoft.Json.JsonPropertyAttribute("expirationTime")]
        public virtual object ExpirationTime { get; set; }

        /// A note describing an in-toto link.
        [Newtonsoft.Json.JsonPropertyAttribute("intoto")]
        public virtual InToto Intoto { get; set; }

        /// Output only. The type of analysis. This field can be used as a filter in list requests.
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; }

        /// A detailed description of this note.
        [Newtonsoft.Json.JsonPropertyAttribute("longDescription")]
        public virtual string LongDescription { get; set; }

        ///
        /// Output only. The name of the note in the form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; }

        /// A note describing a package hosted by various package managers.
        [Newtonsoft.Json.JsonPropertyAttribute("package")]
        public virtual Package Package { get; set; }

        /// Other notes related to this note.
        [Newtonsoft.Json.JsonPropertyAttribute("relatedNoteNames")]
        public virtual System.Collections.Generic.IList<string> RelatedNoteNames { get; set; }

        /// URLs associated with this note.
        [Newtonsoft.Json.JsonPropertyAttribute("relatedUrl")]
        public virtual System.Collections.Generic.IList<RelatedUrl> RelatedUrl { get; set; }

        /// A note describing a software bill of materials.
        [Newtonsoft.Json.JsonPropertyAttribute("sbom")]
        public virtual DocumentNote Sbom { get; set; }

        /// A one sentence description of this note.
        [Newtonsoft.Json.JsonPropertyAttribute("shortDescription")]
        public virtual string ShortDescription { get; set; }

        /// A note describing an SPDX File.
        [Newtonsoft.Json.JsonPropertyAttribute("spdxFile")]
        public virtual FileNote SpdxFile { get; set; }

        /// A note describing an SPDX Package.
        [Newtonsoft.Json.JsonPropertyAttribute("spdxPackage")]
        public virtual PackageInfoNote SpdxPackage { get; set; }

        /// A note describing an SPDX File.
        [Newtonsoft.Json.JsonPropertyAttribute("spdxRelationship")]
        public virtual RelationshipNote SpdxRelationship { get; set; }

        ///
        /// Output only. The time this note was last updated. This field can be used as a filter in list requests.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("updateTime")]
        public virtual object UpdateTime { get; set; }

        /// A note describing a package vulnerability.
        [Newtonsoft.Json.JsonPropertyAttribute("vulnerability")]
        public virtual Vulnerability Vulnerability { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// An instance of an analysis type that has been found on a resource.
    public class Occurrence : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Describes an attestation of an artifact.
        [Newtonsoft.Json.JsonPropertyAttribute("attestation")]
        public virtual Details Attestation { get; set; }

        /// Describes a verifiable build.
        [Newtonsoft.Json.JsonPropertyAttribute("build")]
        public virtual GrafeasV1beta1BuildDetails Build { get; set; }

        /// Output only. The time this occurrence was created.
        [Newtonsoft.Json.JsonPropertyAttribute("createTime")]
        public virtual object CreateTime { get; set; }

        /// Describes the deployment of an artifact on a runtime.
        [Newtonsoft.Json.JsonPropertyAttribute("deployment")]
        public virtual GrafeasV1beta1DeploymentDetails Deployment { get; set; }

        /// Describes how this resource derives from the basis in the associated note.
        [Newtonsoft.Json.JsonPropertyAttribute("derivedImage")]
        public virtual GrafeasV1beta1ImageDetails DerivedImage { get; set; }

        /// Describes when a resource was discovered.
        [Newtonsoft.Json.JsonPropertyAttribute("discovered")]
        public virtual GrafeasV1beta1DiscoveryDetails Discovered { get; set; }

        /// https://github.com/secure-systems-lab/dsse
        [Newtonsoft.Json.JsonPropertyAttribute("envelope")]
        public virtual Envelope Envelope { get; set; }

        /// Describes the installation of a package on the linked resource.
        [Newtonsoft.Json.JsonPropertyAttribute("installation")]
        public virtual GrafeasV1beta1PackageDetails Installation { get; set; }

        /// Describes a specific in-toto link.
        [Newtonsoft.Json.JsonPropertyAttribute("intoto")]
        public virtual GrafeasV1beta1IntotoDetails Intoto { get; set; }

        ///
        /// Output only. This explicitly denotes which of the occurrence details are specified. This field can be used
        /// as a filter in list requests.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; }

        ///
        /// Output only. The name of the occurrence in the form of `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; }

        ///
        /// Required. Immutable. The analysis note associated with this occurrence, in the form of
        /// `projects/[PROVIDER_ID]/notes/[NOTE_ID]`. This field can be used as a filter in list requests.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("noteName")]
        public virtual string NoteName { get; set; }

        /// A description of actions that can be taken to remedy the note.
        [Newtonsoft.Json.JsonPropertyAttribute("remediation")]
        public virtual string Remediation { get; set; }

        /// Required. Immutable. The resource for which the occurrence applies.
        [Newtonsoft.Json.JsonPropertyAttribute("resource")]
        public virtual Resource Resource { get; set; }

        /// Describes a specific software bill of materials document.
        [Newtonsoft.Json.JsonPropertyAttribute("sbom")]
        public virtual DocumentOccurrence Sbom { get; set; }

        /// Describes a specific SPDX File.
        [Newtonsoft.Json.JsonPropertyAttribute("spdxFile")]
        public virtual FileOccurrence SpdxFile { get; set; }

        /// Describes a specific SPDX Package.
        [Newtonsoft.Json.JsonPropertyAttribute("spdxPackage")]
        public virtual PackageInfoOccurrence SpdxPackage { get; set; }

        /// Describes a specific SPDX Relationship.
        [Newtonsoft.Json.JsonPropertyAttribute("spdxRelationship")]
        public virtual RelationshipOccurrence SpdxRelationship { get; set; }

        /// Output only. The time this occurrence was last updated.
        [Newtonsoft.Json.JsonPropertyAttribute("updateTime")]
        public virtual object UpdateTime { get; set; }

        /// Describes a security vulnerability.
        [Newtonsoft.Json.JsonPropertyAttribute("vulnerability")]
        public virtual GrafeasV1beta1VulnerabilityDetails Vulnerability { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Package represents a particular package version.
    public class Package : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// The CPU architecture for which packages in this distribution channel were built. Architecture will be blank
        /// for language packages.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("architecture")]
        public virtual string Architecture { get; set; }

        ///
        /// The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version
        /// distributing a package. The cpe_uri will be blank for language packages.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("cpeUri")]
        public virtual string CpeUri { get; set; }

        /// The description of this package.
        [Newtonsoft.Json.JsonPropertyAttribute("description")]
        public virtual string Description { get; set; }

        ///
        /// Hash value, typically a file digest, that allows unique identification a specific package.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("digest")]
        public virtual System.Collections.Generic.IList<Digest> Digest { get; set; }

        /// The various channels by which a package is distributed.
        [Newtonsoft.Json.JsonPropertyAttribute("distribution")]
        public virtual System.Collections.Generic.IList<Distribution> Distribution { get; set; }

        /// Licenses that have been declared by the authors of the package.
        [Newtonsoft.Json.JsonPropertyAttribute("license")]
        public virtual License License { get; set; }

        /// A freeform text denoting the maintainer of this package.
        [Newtonsoft.Json.JsonPropertyAttribute("maintainer")]
        public virtual string Maintainer { get; set; }

        /// Required. Immutable. The name of the package.
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; }

        ///
        /// The type of package; whether native or non native (e.g., ruby gems, node.js packages, etc.).
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("packageType")]
        public virtual string PackageType { get; set; }

        /// The homepage for this package.
        [Newtonsoft.Json.JsonPropertyAttribute("url")]
        public virtual string Url { get; set; }

        /// The version of the package.
        [Newtonsoft.Json.JsonPropertyAttribute("version")]
        public virtual Version Version { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// PackageInfoNote represents an SPDX Package Information section:
    /// https://spdx.github.io/spdx-spec/3-package-information/
    ///
    public class PackageInfoNote : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// Indicates whether the file content of this package has been available for or subjected to analysis when
        /// creating the SPDX document
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("analyzed")]
        public virtual System.Nullable<bool> Analyzed { get; set; }

        ///
        /// A place for the SPDX data creator to record, at the package level, acknowledgements that may be needed to be
        /// communicated in some contexts
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("attribution")]
        public virtual string Attribution { get; set; }

        ///
        /// Provide an independently reproducible mechanism that permits unique identification of a specific package
        /// that correlates to the data in this SPDX file
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("checksum")]
        public virtual string Checksum { get; set; }

        /// Identify the copyright holders of the package, as well as any dates present
        [Newtonsoft.Json.JsonPropertyAttribute("copyright")]
        public virtual string Copyright { get; set; }

        /// A more detailed description of the package
        [Newtonsoft.Json.JsonPropertyAttribute("detailedDescription")]
        public virtual string DetailedDescription { get; set; }

        ///
        /// This section identifies the download Universal Resource Locator (URL), or a specific location within a
        /// version control system (VCS) for the package at the time that the SPDX file was created
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("downloadLocation")]
        public virtual string DownloadLocation { get; set; }

        /// ExternalRef
        [Newtonsoft.Json.JsonPropertyAttribute("externalRefs")]
        public virtual System.Collections.Generic.IList<ExternalRef> ExternalRefs { get; set; }

        ///
        /// Contain the license the SPDX file creator has concluded as governing the This field is to contain a list of
        /// all licenses found in the package. The relationship between licenses (i.e., conjunctive, disjunctive) is not
        /// specified in this field – it is simply a listing of all licenses found
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("filesLicenseInfo")]
        public virtual System.Collections.Generic.IList<string> FilesLicenseInfo { get; set; }

        ///
        /// Provide a place for the SPDX file creator to record a web site that serves as the package's home page
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("homePage")]
        public virtual string HomePage { get; set; }

        /// List the licenses that have been declared by the authors of the package
        [Newtonsoft.Json.JsonPropertyAttribute("licenseDeclared")]
        public virtual License LicenseDeclared { get; set; }

        ///
        /// If the package identified in the SPDX file originated from a different person or organization than
        /// identified as Package Supplier, this field identifies from where or whom the package originally came
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("originator")]
        public virtual string Originator { get; set; }

        /// The type of package: OS, MAVEN, GO, GO_STDLIB, etc.
        [Newtonsoft.Json.JsonPropertyAttribute("packageType")]
        public virtual string PackageType { get; set; }

        /// A short description of the package
        [Newtonsoft.Json.JsonPropertyAttribute("summaryDescription")]
        public virtual string SummaryDescription { get; set; }

        ///
        /// Identify the actual distribution source for the package/directory identified in the SPDX file
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("supplier")]
        public virtual string Supplier { get; set; }

        /// Identify the full name of the package as given by the Package Originator
        [Newtonsoft.Json.JsonPropertyAttribute("title")]
        public virtual string Title { get; set; }

        ///
        /// This field provides an independently reproducible mechanism identifying specific contents of a package based
        /// on the actual files (except the SPDX file itself, if it is included in the package) that make up each
        /// package and that correlates to the data in this SPDX file
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("verificationCode")]
        public virtual string VerificationCode { get; set; }

        /// Identify the version of the package
        [Newtonsoft.Json.JsonPropertyAttribute("version")]
        public virtual string Version { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// PackageInfoOccurrence represents an SPDX Package Information section:
    /// https://spdx.github.io/spdx-spec/3-package-information/
    ///
    public class PackageInfoOccurrence : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// A place for the SPDX file creator to record any general comments about the package being described
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("comment")]
        public virtual string Comment { get; set; }

        ///
        /// Provide the actual file name of the package, or path of the directory being treated as a package
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("filename")]
        public virtual string Filename { get; set; }

        ///
        /// Output only. Provide a place for the SPDX file creator to record a web site that serves as the package's
        /// home page
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("homePage")]
        public virtual string HomePage { get; set; }

        ///
        /// Uniquely identify any element in an SPDX document which may be referenced by other elements
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("id")]
        public virtual string Id { get; set; }

        /// package or alternative values, if the governing license cannot be determined
        [Newtonsoft.Json.JsonPropertyAttribute("licenseConcluded")]
        public virtual License LicenseConcluded { get; set; }

        /// Output only. The type of package: OS, MAVEN, GO, GO_STDLIB, etc.
        [Newtonsoft.Json.JsonPropertyAttribute("packageType")]
        public virtual string PackageType { get; set; }

        ///
        /// Provide a place for the SPDX file creator to record any relevant background information or additional
        /// comments about the origin of the package
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("sourceInfo")]
        public virtual string SourceInfo { get; set; }

        /// Output only. A short description of the package
        [Newtonsoft.Json.JsonPropertyAttribute("summaryDescription")]
        public virtual string SummaryDescription { get; set; }

        /// Output only. Identify the full name of the package as given by the Package Originator
        [Newtonsoft.Json.JsonPropertyAttribute("title")]
        public virtual string Title { get; set; }

        /// Output only. Identify the version of the package
        [Newtonsoft.Json.JsonPropertyAttribute("version")]
        public virtual string Version { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// This message wraps a location affected by a vulnerability and its associated fix (if one is available).
    ///
    public class PackageIssue : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Required. The location of the vulnerability.
        [Newtonsoft.Json.JsonPropertyAttribute("affectedLocation")]
        public virtual VulnerabilityLocation AffectedLocation { get; set; }

        ///
        /// Output only. The distro or language system assigned severity for this vulnerability when that is available
        /// and note provider assigned severity when it is not available.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("effectiveSeverity")]
        public virtual string EffectiveSeverity { get; set; }

        /// The location of the available fix for vulnerability.
        [Newtonsoft.Json.JsonPropertyAttribute("fixedLocation")]
        public virtual VulnerabilityLocation FixedLocation { get; set; }

        /// The type of package (e.g. OS, MAVEN, GO).
        [Newtonsoft.Json.JsonPropertyAttribute("packageType")]
        public virtual string PackageType { get; set; }

        ///
        /// Deprecated, use Details.effective_severity instead The severity (e.g., distro assigned severity) for this
        /// vulnerability.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("severityName")]
        public virtual string SeverityName { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// An attestation wrapper with a PGP-compatible signature. This message only supports `ATTACHED` signatures, where
    /// the payload that is signed is included alongside the signature itself in the same file.
    ///
    public class PgpSignedAttestation : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// Type (for example schema) of the attestation payload that was signed. The verifier must ensure that the
        /// provided type is one that the verifier supports, and that the attestation payload is a valid instantiation
        /// of that type (for example by validating a JSON schema).
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("contentType")]
        public virtual string ContentType { get; set; }

        ///
        /// The cryptographic fingerprint of the key used to generate the signature, as output by, e.g. `gpg
        /// --list-keys`. This should be the version 4, full 160-bit fingerprint, expressed as a 40 character
        /// hexadecimal string. See https://tools.ietf.org/html/rfc4880#section-12.2 for details. Implementations may
        /// choose to acknowledge "LONG", "SHORT", or other abbreviated key IDs, but only the full fingerprint is
        /// guaranteed to work. In gpg, the full fingerprint can be retrieved from the `fpr` field returned when calling
        /// --list-keys with --with-colons. For example: ``` gpg --with-colons --with-fingerprint --force-v4-certs \
        /// --list-keys attester@example.com tru::1:1513631572:0:3:1:5 pub:......
        /// fpr:::::::::24FF6481B76AC91E66A00AC657A93A81EF3AE6FB: ``` Above, the fingerprint is
        /// `24FF6481B76AC91E66A00AC657A93A81EF3AE6FB`.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("pgpKeyId")]
        public virtual string PgpKeyId { get; set; }

        ///
        /// Required. The raw content of the signature, as output by GNU Privacy Guard (GPG) or equivalent. Since this
        /// message only supports attached signatures, the payload that was signed must be attached. While the signature
        /// format supported is dependent on the verification implementation, currently only ASCII-armored (`--armor` to
        /// gpg), non-clearsigned (`--sign` rather than `--clearsign` to gpg) are supported. Concretely, `gpg --sign
        /// --armor --output=signature.gpg payload.json` will create the signature content expected in this field in
        /// `signature.gpg` for the `payload.json` attestation payload.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("signature")]
        public virtual string Signature { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources. A
    /// `Policy` is a collection of `bindings`. A `binding` binds one or more `members`, or principals, to a single
    /// `role`. Principals can be user accounts, service accounts, Google groups, and domains (such as G Suite). A
    /// `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role.
    /// For some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical
    /// expression that allows access to a resource only if the expression evaluates to `true`. A condition can add
    /// constraints based on attributes of the request, the resource, or both. To learn which resources support
    /// conditions in their IAM policies, see the [IAM
    /// documentation](https://cloud.google.com/iam/help/conditions/resource-policies). **JSON example:** { "bindings":
    /// [ { "role": "roles/resourcemanager.organizationAdmin", "members": [ "user:mike@example.com",
    /// "group:admins@example.com", "domain:google.com", "serviceAccount:my-project-id@appspot.gserviceaccount.com" ] },
    /// { "role": "roles/resourcemanager.organizationViewer", "members": [ "user:eve@example.com" ], "condition": {
    /// "title": "expirable access", "description": "Does not grant access after Sep 2020", "expression": "request.time
    /// &lt; timestamp('2020-10-01T00:00:00.000Z')", } } ], "etag": "BwWWja0YfJA=", "version": 3 } **YAML example:**
    /// bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com -
    /// serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin -
    /// members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable
    /// access description: Does not grant access after Sep 2020 expression: request.time &lt;
    /// timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA= version: 3 For a description of IAM and its features,
    /// see the [IAM documentation](https://cloud.google.com/iam/docs/).
    ///
    public class Policy : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that
        /// determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one
        /// principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals
        /// can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the
        /// `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you
        /// can add another 1,450 principals to the `bindings` in the `Policy`.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("bindings")]
        public virtual System.Collections.Generic.IList<Binding> Bindings { get; set; }

        ///
        /// `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy
        /// from overwriting each other. It is strongly suggested that systems make use of the `etag` in the
        /// read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned
        /// in the response to `getIamPolicy`, and systems are expected to put that etag in the request to
        /// `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:**
        /// If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit
        /// this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the
        /// conditions in the version `3` policy are lost.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("etag")]
        public virtual string ETag { get; set; }

        ///
        /// Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid
        /// value are rejected. Any operation that affects conditional role bindings must specify version `3`. This
        /// requirement applies to the following operations: * Getting a policy that includes a conditional role binding
        /// * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing
        /// any role binding, with or without a condition, from a policy that includes conditions **Important:** If you
        /// use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this
        /// field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the
        /// conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on
        /// that policy may specify any valid version or leave the field unset. To learn which resources support
        /// conditions in their IAM policies, see the [IAM
        /// documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("version")]
        public virtual System.Nullable<int> Version { get; set; }
    }

    ///
    /// Selects a repo using a Google Cloud Platform project ID (e.g., winged-cargo-31) and a repo name within that
    /// project.
    ///
    public class ProjectRepoId : Google.Apis.Requests.IDirectResponseSchema
    {
        /// The ID of the project.
        [Newtonsoft.Json.JsonPropertyAttribute("projectId")]
        public virtual string ProjectId { get; set; }

        /// The name of the repo. Leave empty for the default repo.
        [Newtonsoft.Json.JsonPropertyAttribute("repoName")]
        public virtual string RepoName { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Metadata for any related URL information.
    public class RelatedUrl : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Label to describe usage of the URL.
        [Newtonsoft.Json.JsonPropertyAttribute("label")]
        public virtual string Label { get; set; }

        /// Specific URL associated with the resource.
        [Newtonsoft.Json.JsonPropertyAttribute("url")]
        public virtual string Url { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// RelationshipNote represents an SPDX Relationship section:
    /// https://spdx.github.io/spdx-spec/7-relationships-between-SPDX-elements/
    ///
    public class RelationshipNote : Google.Apis.Requests.IDirectResponseSchema
    {
        /// The type of relationship between the source and target SPDX elements
        [Newtonsoft.Json.JsonPropertyAttribute("type")]
        public virtual string Type { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// RelationshipOccurrence represents an SPDX Relationship section:
    /// https://spdx.github.io/spdx-spec/7-relationships-between-SPDX-elements/
    ///
    public class RelationshipOccurrence : Google.Apis.Requests.IDirectResponseSchema
    {
        /// A place for the SPDX file creator to record any general comments about the relationship
        [Newtonsoft.Json.JsonPropertyAttribute("comment")]
        public virtual string Comment { get; set; }

        /// Also referred to as SPDXRef-A The source SPDX element (file, package, etc)
        [Newtonsoft.Json.JsonPropertyAttribute("source")]
        public virtual string Source { get; set; }

        ///
        /// Also referred to as SPDXRef-B The target SPDC element (file, package, etc) In cases where there are "known
        /// unknowns", the use of the keyword NOASSERTION can be used The keywords NONE can be used to indicate that an
        /// SPDX element (package/file/snippet) has no other elements connected by some relationship to it
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("target")]
        public virtual string Target { get; set; }

        /// Output only. The type of relationship between the source and target SPDX elements
        [Newtonsoft.Json.JsonPropertyAttribute("type")]
        public virtual string Type { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// A unique identifier for a Cloud Repo.
    public class RepoId : Google.Apis.Requests.IDirectResponseSchema
    {
        /// A combination of a project ID and a repo name.
        [Newtonsoft.Json.JsonPropertyAttribute("projectRepoId")]
        public virtual ProjectRepoId ProjectRepoId { get; set; }

        /// A server-assigned, globally unique identifier.
        [Newtonsoft.Json.JsonPropertyAttribute("uid")]
        public virtual string Uid { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// An entity that can have metadata. For example, a Docker image.
    public class Resource : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// Deprecated, do not use. Use uri instead. The hash of the resource content. For example, the Docker digest.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("contentHash")]
        public virtual Hash ContentHash { get; set; }

        ///
        /// Deprecated, do not use. Use uri instead. The name of the resource. For example, the name of a Docker image -
        /// "Debian".
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; }

        ///
        /// Required. The unique URI of the resource. For example, `https://gcr.io/project/image@sha256:foo` for a
        /// Docker image.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("uri")]
        public virtual string Uri { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Request message for `SetIamPolicy` method.
    public class SetIamPolicyRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// REQUIRED: The complete policy to be applied to the `resource`. The size of the policy is limited to a few
        /// 10s of KB. An empty policy is a valid policy but certain Google Cloud services (such as Projects) might
        /// reject them.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("policy")]
        public virtual Policy Policy { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// Verifiers (e.g. Kritis implementations) MUST verify signatures with respect to the trust anchors defined in
    /// policy (e.g. a Kritis policy). Typically this means that the verifier has been configured with a map from
    /// `public_key_id` to public key material (and any required parameters, e.g. signing algorithm). In particular,
    /// verification implementations MUST NOT treat the signature `public_key_id` as anything more than a key lookup
    /// hint. The `public_key_id` DOES NOT validate or authenticate a public key; it only provides a mechanism for
    /// quickly selecting a public key ALREADY CONFIGURED on the verifier through a trusted channel. Verification
    /// implementations MUST reject signatures in any of the following circumstances: * The `public_key_id` is not
    /// recognized by the verifier. * The public key that `public_key_id` refers to does not verify the signature with
    /// respect to the payload. The `signature` contents SHOULD NOT be "attached" (where the payload is included with
    /// the serialized `signature` bytes). Verifiers MUST ignore any "attached" payload and only verify signatures with
    /// respect to explicitly provided payload (e.g. a `payload` field on the proto message that holds this Signature,
    /// or the canonical serialization of the proto message that holds this signature).
    ///
    public class Signature : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// The identifier for the public key that verifies this signature. * The `public_key_id` is required. * The
        /// `public_key_id` SHOULD be an RFC3986 conformant URI. * When possible, the `public_key_id` SHOULD be an
        /// immutable reference, such as a cryptographic digest. Examples of valid `public_key_id`s: OpenPGP V4 public
        /// key fingerprint: * "openpgp4fpr:74FAF3B861BDA0870C7B6DEF607E48D2A663AEEA" See
        /// https://www.iana.org/assignments/uri-schemes/prov/openpgp4fpr for more details on this scheme. RFC6920
        /// digest-named SubjectPublicKeyInfo (digest of the DER serialization): *
        /// "ni:///sha-256;cD9o9Cq6LG3jD0iKXqEi_vdjJGecm_iXkbqVoScViaU" *
        /// "nih:///sha-256;703f68f42aba2c6de30f488a5ea122fef76324679c9bf89791ba95a1271589a5"
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("publicKeyId")]
        public virtual string PublicKeyId { get; set; }

        ///
        /// The content of the signature, an opaque bytestring. The payload that this signature verifies MUST be
        /// unambiguously provided with the Signature during verification. A wrapper message might provide the payload
        /// explicitly. Alternatively, a message might have a canonical serialization that can always be unambiguously
        /// computed to derive the payload.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("signature")]
        public virtual string SignatureValue { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// This defines the format used to record keys used in the software supply chain. An in-toto link is attested using
    /// one or more keys defined in the in-toto layout. An example of this is: { "key_id":
    /// "776a00e29f3559e0141b3b096f696abc6cfb0c657ab40f441132b345b0...", "key_type": "rsa", "public_key_value":
    /// "-----BEGIN PUBLIC KEY-----\nMIIBojANBgkqhkiG9w0B...", "key_scheme": "rsassa-pss-sha256" } The format for
    /// in-toto's key definition can be found in section 4.2 of the in-toto specification.
    ///
    public class SigningKey : Google.Apis.Requests.IDirectResponseSchema
    {
        /// key_id is an identifier for the signing key.
        [Newtonsoft.Json.JsonPropertyAttribute("keyId")]
        public virtual string KeyId { get; set; }

        /// This field contains the corresponding signature scheme. Eg: "rsassa-pss-sha256".
        [Newtonsoft.Json.JsonPropertyAttribute("keyScheme")]
        public virtual string KeyScheme { get; set; }

        /// This field identifies the specific signing method. Eg: "rsa", "ed25519", and "ecdsa".
        [Newtonsoft.Json.JsonPropertyAttribute("keyType")]
        public virtual string KeyType { get; set; }

        /// This field contains the actual public key.
        [Newtonsoft.Json.JsonPropertyAttribute("publicKeyValue")]
        public virtual string PublicKeyValue { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Source describes the location of the source used for the build.
    public class Source : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// If provided, some of the source code used for the build may be found in these locations, in the case where
        /// the source repository had multiple remotes or submodules. This list will not include the context specified
        /// in the context field.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("additionalContexts")]
        public virtual System.Collections.Generic.IList<SourceContext> AdditionalContexts { get; set; }

        /// If provided, the input binary artifacts for the build came from this location.
        [Newtonsoft.Json.JsonPropertyAttribute("artifactStorageSourceUri")]
        public virtual string ArtifactStorageSourceUri { get; set; }

        /// If provided, the source code used for the build came from this location.
        [Newtonsoft.Json.JsonPropertyAttribute("context")]
        public virtual SourceContext Context { get; set; }

        ///
        /// Hash(es) of the build source, which can be used to verify that the original source integrity was maintained
        /// in the build. The keys to this map are file paths used as build source and the values contain the hash
        /// values for those files. If the build source came in a single package such as a gzipped tarfile (.tar.gz),
        /// the FileHash will be for the single path to that file.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("fileHashes")]
        public virtual System.Collections.Generic.IDictionary<string, FileHashes> FileHashes { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// A SourceContext is a reference to a tree of files. A SourceContext together with a path point to a unique
    /// revision of a single file or directory.
    ///
    public class SourceContext : Google.Apis.Requests.IDirectResponseSchema
    {
        /// A SourceContext referring to a revision in a Google Cloud Source Repo.
        [Newtonsoft.Json.JsonPropertyAttribute("cloudRepo")]
        public virtual CloudRepoSourceContext CloudRepo { get; set; }

        /// A SourceContext referring to a Gerrit project.
        [Newtonsoft.Json.JsonPropertyAttribute("gerrit")]
        public virtual GerritSourceContext Gerrit { get; set; }

        /// A SourceContext referring to any third party Git repo (e.g., GitHub).
        [Newtonsoft.Json.JsonPropertyAttribute("git")]
        public virtual GitSourceContext Git { get; set; }

        /// Labels with user defined metadata.
        [Newtonsoft.Json.JsonPropertyAttribute("labels")]
        public virtual System.Collections.Generic.IDictionary<string, string> Labels { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// The `Status` type defines a logical error model that is suitable for different programming environments,
    /// including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains
    /// three pieces of data: error code, error message, and error details. You can find out more about this error model
    /// and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).
    ///
    public class Status : Google.Apis.Requests.IDirectResponseSchema
    {
        /// The status code, which should be an enum value of google.rpc.Code.
        [Newtonsoft.Json.JsonPropertyAttribute("code")]
        public virtual System.Nullable<int> Code { get; set; }

        ///
        /// A list of messages that carry the error details. There is a common set of message types for APIs to use.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("details")]
        public virtual System.Collections.Generic.IList<System.Collections.Generic.IDictionary<string, object>> Details { get; set; }

        ///
        /// A developer-facing error message, which should be in English. Any user-facing error message should be
        /// localized and sent in the google.rpc.Status.details field, or localized by the client.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("message")]
        public virtual string Message { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Request message for `TestIamPermissions` method.
    public class TestIamPermissionsRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// The set of permissions to check for the `resource`. Permissions with wildcards (such as `*` or `storage.*`)
        /// are not allowed. For more information see [IAM
        /// Overview](https://cloud.google.com/iam/docs/overview#permissions).
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("permissions")]
        public virtual System.Collections.Generic.IList<string> Permissions { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Response message for `TestIamPermissions` method.
    public class TestIamPermissionsResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// A subset of `TestPermissionsRequest.permissions` that the caller is allowed.
        [Newtonsoft.Json.JsonPropertyAttribute("permissions")]
        public virtual System.Collections.Generic.IList<string> Permissions { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Start and end times for a build execution phase. Next ID: 3
    public class TimeSpan : Google.Apis.Requests.IDirectResponseSchema
    {
        /// End of time span.
        [Newtonsoft.Json.JsonPropertyAttribute("endTime")]
        public virtual object EndTime { get; set; }

        /// Start of time span.
        [Newtonsoft.Json.JsonPropertyAttribute("startTime")]
        public virtual object StartTime { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Version contains structured information about the version of a package.
    public class Version : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Used to correct mistakes in the version numbering scheme.
        [Newtonsoft.Json.JsonPropertyAttribute("epoch")]
        public virtual System.Nullable<int> Epoch { get; set; }

        ///
        /// Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to
        /// specify version ranges; instead we have fields that specify start version and end versions. At times this is
        /// insufficient - we also need to specify whether the version is included in the range or is excluded from the
        /// range. This boolean is expected to be set to true when the version is included in a range.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("inclusive")]
        public virtual System.Nullable<bool> Inclusive { get; set; }

        /// Required. Distinguishes between sentinel MIN/MAX versions and normal versions.
        [Newtonsoft.Json.JsonPropertyAttribute("kind")]
        public virtual string Kind { get; set; }

        /// Required only when version kind is NORMAL. The main part of the version name.
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; }

        /// The iteration of the package build from the above version.
        [Newtonsoft.Json.JsonPropertyAttribute("revision")]
        public virtual string Revision { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    ///
    /// Volume describes a Docker container volume which is mounted into build steps in order to persist files across
    /// build step execution. Next ID: 3
    ///
    public class Volume : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// Name of the volume to mount. Volume names must be unique per build step and must be valid names for Docker
        /// volumes. Each named volume must be used by at least two build steps.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; }

        ///
        /// Path at which to mount the volume. Paths must be absolute and cannot conflict with other volume paths on the
        /// same build step or with certain reserved volume paths.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("path")]
        public virtual string Path { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Vulnerability provides metadata about a security vulnerability in a Note.
    public class Vulnerability : Google.Apis.Requests.IDirectResponseSchema
    {
        /// The CVSS score for this vulnerability.
        [Newtonsoft.Json.JsonPropertyAttribute("cvssScore")]
        public virtual System.Nullable<float> CvssScore { get; set; }

        /// The full description of the CVSS for version 2.
        [Newtonsoft.Json.JsonPropertyAttribute("cvssV2")]
        public virtual CVSS CvssV2 { get; set; }

        /// The full description of the CVSS for version 3.
        [Newtonsoft.Json.JsonPropertyAttribute("cvssV3")]
        public virtual CVSSv3 CvssV3 { get; set; }

        /// CVSS version used to populate cvss_score and severity.
        [Newtonsoft.Json.JsonPropertyAttribute("cvssVersion")]
        public virtual string CvssVersion { get; set; }

        /// A list of CWE for this vulnerability. For details, see: https://cwe.mitre.org/index.html
        [Newtonsoft.Json.JsonPropertyAttribute("cwe")]
        public virtual System.Collections.Generic.IList<string> Cwe { get; set; }

        ///
        /// All information about the package to specifically identify this vulnerability. One entry per (version range
        /// and cpe_uri) the package vulnerability has manifested in.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("details")]
        public virtual System.Collections.Generic.IList<Detail> Details { get; set; }

        /// Note provider assigned impact of the vulnerability.
        [Newtonsoft.Json.JsonPropertyAttribute("severity")]
        public virtual string Severity { get; set; }

        ///
        /// The time this information was last changed at the source. This is an upstream timestamp from the underlying
        /// information source - e.g. Ubuntu security tracker.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("sourceUpdateTime")]
        public virtual object SourceUpdateTime { get; set; }

        ///
        /// Windows details get their own format because the information format and model don't match a normal detail.
        /// Specifically Windows updates are done as patches, thus Windows vulnerabilities really are a missing package,
        /// rather than a package being at an incorrect version.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("windowsDetails")]
        public virtual System.Collections.Generic.IList<WindowsDetail> WindowsDetails { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// The location of the vulnerability.
    public class VulnerabilityLocation : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// Required. The CPE URI in [cpe format](https://cpe.mitre.org/specification/) format. Examples include distro
        /// or storage location for vulnerable jar.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("cpeUri")]
        public virtual string CpeUri { get; set; }

        /// Required. The package being described.
        [Newtonsoft.Json.JsonPropertyAttribute("package")]
        public virtual string Package { get; set; }

        /// Required. The version of the package being described.
        [Newtonsoft.Json.JsonPropertyAttribute("version")]
        public virtual Version Version { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// A summary of how many vulnerability occurrences there are per resource and severity type.
    public class VulnerabilityOccurrencesSummary : Google.Apis.Requests.IDirectResponseSchema
    {
        /// A listing by resource of the number of fixable and total vulnerabilities.
        [Newtonsoft.Json.JsonPropertyAttribute("counts")]
        public virtual System.Collections.Generic.IList<FixableTotalByDigest> Counts { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    public class WindowsDetail : Google.Apis.Requests.IDirectResponseSchema
    {
        ///
        /// Required. The CPE URI in [cpe format](https://cpe.mitre.org/specification/) in which the vulnerability
        /// manifests. Examples include distro or storage location for vulnerable jar.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("cpeUri")]
        public virtual string CpeUri { get; set; }

        /// The description of the vulnerability.
        [Newtonsoft.Json.JsonPropertyAttribute("description")]
        public virtual string Description { get; set; }

        ///
        /// Required. The names of the KBs which have hotfixes to mitigate this vulnerability. Note that there may be
        /// multiple hotfixes (and thus multiple KBs) that mitigate a given vulnerability. Currently any listed kb's
        /// presence is considered a fix.
        ///
        [Newtonsoft.Json.JsonPropertyAttribute("fixingKbs")]
        public virtual System.Collections.Generic.IList<KnowledgeBase> FixingKbs { get; set; }

        /// Required. The name of the vulnerability.
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }
}