diff --git a/.librarian/state.yaml b/.librarian/state.yaml index 1973bd99aaa7..e845930637a1 100644 --- a/.librarian/state.yaml +++ b/.librarian/state.yaml @@ -1562,6 +1562,29 @@ libraries: release_exclude_paths: - internal/generated/snippets/cloudquotas/ tag_format: '{id}/v{version}' + - id: cloudsecuritycompliance + version: 0.0.0 + last_generated_commit: 286c66a565ed6d9cfecb062e7ac13363e76f2e0a + apis: + - path: google/cloud/cloudsecuritycompliance/v1 + service_config: cloudsecuritycompliance_v1.yaml + source_roots: + - cloudsecuritycompliance + - internal/generated/snippets/cloudsecuritycompliance + preserve_regex: [] + remove_regex: + - ^internal/generated/snippets/cloudsecuritycompliance/ + - ^cloudsecuritycompliance/apiv1/[^/]*_client\.go$ + - ^cloudsecuritycompliance/apiv1/[^/]*_client_example_go123_test\.go$ + - ^cloudsecuritycompliance/apiv1/[^/]*_client_example_test\.go$ + - ^cloudsecuritycompliance/apiv1/auxiliary\.go$ + - ^cloudsecuritycompliance/apiv1/auxiliary_go123\.go$ + - ^cloudsecuritycompliance/apiv1/doc\.go$ + - ^cloudsecuritycompliance/apiv1/gapic_metadata\.json$ + - ^cloudsecuritycompliance/apiv1/helpers\.go$ + - ^cloudsecuritycompliance/apiv1/\.repo-metadata\.json$ + - ^cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb/.*$ + tag_format: '{id}/v{version}' - id: cloudtasks version: 1.13.7 last_generated_commit: c288189b43c016dd3cf1ec73ce3cadee8b732f07 diff --git a/cloudsecuritycompliance/CHANGES.md b/cloudsecuritycompliance/CHANGES.md new file mode 100644 index 000000000000..b671f0bbcdd2 --- /dev/null +++ b/cloudsecuritycompliance/CHANGES.md @@ -0,0 +1 @@ +# Changes diff --git a/cloudsecuritycompliance/README.md b/cloudsecuritycompliance/README.md new file mode 100644 index 000000000000..6861fc66e12a --- /dev/null +++ b/cloudsecuritycompliance/README.md @@ -0,0 +1,55 @@ +# Cloud Security Compliance API + +[![Go Reference](https://pkg.go.dev/badge/cloud.google.com/go/cloudsecuritycompliance.svg)](https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance) + +Go Client Library for Cloud Security Compliance API. + +## Install + +```bash +go get cloud.google.com/go/cloudsecuritycompliance +``` + +## Stability + +The stability of this module is indicated by SemVer. + +However, a `v1+` module may have breaking changes in two scenarios: + +* Packages with `alpha` or `beta` in the import path +* The GoDoc has an explicit stability disclaimer (for example, for an experimental feature). + +### Which package to use? + +Generated client library surfaces can be found in packages who's import path +ends in `.../apivXXX`. The `XXX` could be something like `1` or `2` in the case +of a stable service backend or may be like `1beta2` or `2beta` in the case of a +more experimental service backend. Because of this fact, a given module can have +multiple clients for different service backends. In these cases it is generally +recommend to use clients with stable service backends, with import suffixes like +`apiv1`, unless you need to use features that are only present in a beta backend +or there is not yet a stable backend available. + +## Google Cloud Samples + +To browse ready to use code samples check [Google Cloud Samples](https://cloud.google.com/docs/samples?l=go). + +## Go Version Support + +See the [Go Versions Supported](https://github.com/googleapis/google-cloud-go#go-versions-supported) +section in the root directory's README. + +## Authorization + +See the [Authorization](https://github.com/googleapis/google-cloud-go#authorization) +section in the root directory's README. + +## Contributing + +Contributions are welcome. Please, see the [CONTRIBUTING](https://github.com/GoogleCloudPlatform/google-cloud-go/blob/main/CONTRIBUTING.md) +document for details. + +Please note that this project is released with a Contributor Code of Conduct. +By participating in this project you agree to abide by its terms. See +[Contributor Code of Conduct](https://github.com/GoogleCloudPlatform/google-cloud-go/blob/main/CONTRIBUTING.md#contributor-code-of-conduct) +for more information. diff --git a/cloudsecuritycompliance/apiv1/.repo-metadata.json b/cloudsecuritycompliance/apiv1/.repo-metadata.json new file mode 100644 index 000000000000..f24b55694577 --- /dev/null +++ b/cloudsecuritycompliance/apiv1/.repo-metadata.json @@ -0,0 +1,10 @@ +{ + "api_shortname": "cloudsecuritycompliance", + "client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/cloudsecuritycompliance/latest/apiv1", + "client_library_type": "generated", + "description": "Cloud Security Compliance API", + "distribution_name": "cloud.google.com/go/cloudsecuritycompliance/apiv1", + "language": "go", + "library_type": "GAPIC_AUTO", + "release_level": "preview" +} diff --git a/cloudsecuritycompliance/apiv1/audit_client.go b/cloudsecuritycompliance/apiv1/audit_client.go new file mode 100644 index 000000000000..dc5ab7090387 --- /dev/null +++ b/cloudsecuritycompliance/apiv1/audit_client.go @@ -0,0 +1,1326 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +package cloudsecuritycompliance + +import ( + "bytes" + "context" + "fmt" + "log/slog" + "math" + "net/http" + "net/url" + "time" + + cloudsecuritycompliancepb "cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb" + "cloud.google.com/go/longrunning" + lroauto "cloud.google.com/go/longrunning/autogen" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" + gax "github.com/googleapis/gax-go/v2" + "google.golang.org/api/iterator" + "google.golang.org/api/option" + "google.golang.org/api/option/internaloption" + gtransport "google.golang.org/api/transport/grpc" + httptransport "google.golang.org/api/transport/http" + locationpb "google.golang.org/genproto/googleapis/cloud/location" + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/protobuf/encoding/protojson" + "google.golang.org/protobuf/proto" +) + +var newAuditClientHook clientHook + +// AuditCallOptions contains the retry settings for each method of AuditClient. +type AuditCallOptions struct { + GenerateFrameworkAuditScopeReport []gax.CallOption + CreateFrameworkAudit []gax.CallOption + ListFrameworkAudits []gax.CallOption + GetFrameworkAudit []gax.CallOption + GetLocation []gax.CallOption + ListLocations []gax.CallOption + CancelOperation []gax.CallOption + DeleteOperation []gax.CallOption + GetOperation []gax.CallOption + ListOperations []gax.CallOption +} + +func defaultAuditGRPCClientOptions() []option.ClientOption { + return []option.ClientOption{ + internaloption.WithDefaultEndpoint("cloudsecuritycompliance.googleapis.com:443"), + internaloption.WithDefaultEndpointTemplate("cloudsecuritycompliance.UNIVERSE_DOMAIN:443"), + internaloption.WithDefaultMTLSEndpoint("cloudsecuritycompliance.mtls.googleapis.com:443"), + internaloption.WithDefaultUniverseDomain("googleapis.com"), + internaloption.WithDefaultAudience("https://cloudsecuritycompliance.googleapis.com/"), + internaloption.WithDefaultScopes(DefaultAuthScopes()...), + internaloption.EnableJwtWithScope(), + internaloption.EnableNewAuthLibrary(), + option.WithGRPCDialOption(grpc.WithDefaultCallOptions( + grpc.MaxCallRecvMsgSize(math.MaxInt32))), + } +} + +func defaultAuditCallOptions() *AuditCallOptions { + return &AuditCallOptions{ + GenerateFrameworkAuditScopeReport: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, + CreateFrameworkAudit: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, + ListFrameworkAudits: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + GetFrameworkAudit: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + GetLocation: []gax.CallOption{}, + ListLocations: []gax.CallOption{}, + CancelOperation: []gax.CallOption{}, + DeleteOperation: []gax.CallOption{}, + GetOperation: []gax.CallOption{}, + ListOperations: []gax.CallOption{}, + } +} + +func defaultAuditRESTCallOptions() *AuditCallOptions { + return &AuditCallOptions{ + GenerateFrameworkAuditScopeReport: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, + CreateFrameworkAudit: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, + ListFrameworkAudits: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + GetFrameworkAudit: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + GetLocation: []gax.CallOption{}, + ListLocations: []gax.CallOption{}, + CancelOperation: []gax.CallOption{}, + DeleteOperation: []gax.CallOption{}, + GetOperation: []gax.CallOption{}, + ListOperations: []gax.CallOption{}, + } +} + +// internalAuditClient is an interface that defines the methods available from Cloud Security Compliance API. +type internalAuditClient interface { + Close() error + setGoogleClientInfo(...string) + Connection() *grpc.ClientConn + GenerateFrameworkAuditScopeReport(context.Context, *cloudsecuritycompliancepb.GenerateFrameworkAuditScopeReportRequest, ...gax.CallOption) (*cloudsecuritycompliancepb.GenerateFrameworkAuditScopeReportResponse, error) + CreateFrameworkAudit(context.Context, *cloudsecuritycompliancepb.CreateFrameworkAuditRequest, ...gax.CallOption) (*CreateFrameworkAuditOperation, error) + CreateFrameworkAuditOperation(name string) *CreateFrameworkAuditOperation + ListFrameworkAudits(context.Context, *cloudsecuritycompliancepb.ListFrameworkAuditsRequest, ...gax.CallOption) *FrameworkAuditIterator + GetFrameworkAudit(context.Context, *cloudsecuritycompliancepb.GetFrameworkAuditRequest, ...gax.CallOption) (*cloudsecuritycompliancepb.FrameworkAudit, error) + GetLocation(context.Context, *locationpb.GetLocationRequest, ...gax.CallOption) (*locationpb.Location, error) + ListLocations(context.Context, *locationpb.ListLocationsRequest, ...gax.CallOption) *LocationIterator + CancelOperation(context.Context, *longrunningpb.CancelOperationRequest, ...gax.CallOption) error + DeleteOperation(context.Context, *longrunningpb.DeleteOperationRequest, ...gax.CallOption) error + GetOperation(context.Context, *longrunningpb.GetOperationRequest, ...gax.CallOption) (*longrunningpb.Operation, error) + ListOperations(context.Context, *longrunningpb.ListOperationsRequest, ...gax.CallOption) *OperationIterator +} + +// AuditClient is a client for interacting with Cloud Security Compliance API. +// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. +// +// Service describing handlers for resources +type AuditClient struct { + // The internal transport-dependent client. + internalClient internalAuditClient + + // The call options for this service. + CallOptions *AuditCallOptions + + // LROClient is used internally to handle long-running operations. + // It is exposed so that its CallOptions can be modified if required. + // Users should not Close this client. + LROClient *lroauto.OperationsClient +} + +// Wrapper methods routed to the internal client. + +// Close closes the connection to the API service. The user should invoke this when +// the client is no longer required. +func (c *AuditClient) Close() error { + return c.internalClient.Close() +} + +// setGoogleClientInfo sets the name and version of the application in +// the `x-goog-api-client` header passed on each request. Intended for +// use by Google-written clients. +func (c *AuditClient) setGoogleClientInfo(keyval ...string) { + c.internalClient.setGoogleClientInfo(keyval...) +} + +// Connection returns a connection to the API service. +// +// Deprecated: Connections are now pooled so this method does not always +// return the same resource. +func (c *AuditClient) Connection() *grpc.ClientConn { + return c.internalClient.Connection() +} + +// GenerateFrameworkAuditScopeReport generates an audit scope report for a framework. +func (c *AuditClient) GenerateFrameworkAuditScopeReport(ctx context.Context, req *cloudsecuritycompliancepb.GenerateFrameworkAuditScopeReportRequest, opts ...gax.CallOption) (*cloudsecuritycompliancepb.GenerateFrameworkAuditScopeReportResponse, error) { + return c.internalClient.GenerateFrameworkAuditScopeReport(ctx, req, opts...) +} + +// CreateFrameworkAudit creates an audit scope report for a framework. +func (c *AuditClient) CreateFrameworkAudit(ctx context.Context, req *cloudsecuritycompliancepb.CreateFrameworkAuditRequest, opts ...gax.CallOption) (*CreateFrameworkAuditOperation, error) { + return c.internalClient.CreateFrameworkAudit(ctx, req, opts...) +} + +// CreateFrameworkAuditOperation returns a new CreateFrameworkAuditOperation from a given name. +// The name must be that of a previously created CreateFrameworkAuditOperation, possibly from a different process. +func (c *AuditClient) CreateFrameworkAuditOperation(name string) *CreateFrameworkAuditOperation { + return c.internalClient.CreateFrameworkAuditOperation(name) +} + +// ListFrameworkAudits lists the framework audits for a given organization, folder, or project. +func (c *AuditClient) ListFrameworkAudits(ctx context.Context, req *cloudsecuritycompliancepb.ListFrameworkAuditsRequest, opts ...gax.CallOption) *FrameworkAuditIterator { + return c.internalClient.ListFrameworkAudits(ctx, req, opts...) +} + +// GetFrameworkAudit gets the details for a framework audit. +func (c *AuditClient) GetFrameworkAudit(ctx context.Context, req *cloudsecuritycompliancepb.GetFrameworkAuditRequest, opts ...gax.CallOption) (*cloudsecuritycompliancepb.FrameworkAudit, error) { + return c.internalClient.GetFrameworkAudit(ctx, req, opts...) +} + +// GetLocation gets information about a location. +func (c *AuditClient) GetLocation(ctx context.Context, req *locationpb.GetLocationRequest, opts ...gax.CallOption) (*locationpb.Location, error) { + return c.internalClient.GetLocation(ctx, req, opts...) +} + +// ListLocations lists information about the supported locations for this service. +func (c *AuditClient) ListLocations(ctx context.Context, req *locationpb.ListLocationsRequest, opts ...gax.CallOption) *LocationIterator { + return c.internalClient.ListLocations(ctx, req, opts...) +} + +// CancelOperation is a utility method from google.longrunning.Operations. +func (c *AuditClient) CancelOperation(ctx context.Context, req *longrunningpb.CancelOperationRequest, opts ...gax.CallOption) error { + return c.internalClient.CancelOperation(ctx, req, opts...) +} + +// DeleteOperation is a utility method from google.longrunning.Operations. +func (c *AuditClient) DeleteOperation(ctx context.Context, req *longrunningpb.DeleteOperationRequest, opts ...gax.CallOption) error { + return c.internalClient.DeleteOperation(ctx, req, opts...) +} + +// GetOperation is a utility method from google.longrunning.Operations. +func (c *AuditClient) GetOperation(ctx context.Context, req *longrunningpb.GetOperationRequest, opts ...gax.CallOption) (*longrunningpb.Operation, error) { + return c.internalClient.GetOperation(ctx, req, opts...) +} + +// ListOperations is a utility method from google.longrunning.Operations. +func (c *AuditClient) ListOperations(ctx context.Context, req *longrunningpb.ListOperationsRequest, opts ...gax.CallOption) *OperationIterator { + return c.internalClient.ListOperations(ctx, req, opts...) +} + +// auditGRPCClient is a client for interacting with Cloud Security Compliance API over gRPC transport. +// +// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. +type auditGRPCClient struct { + // Connection pool of gRPC connections to the service. + connPool gtransport.ConnPool + + // Points back to the CallOptions field of the containing AuditClient + CallOptions **AuditCallOptions + + // The gRPC API client. + auditClient cloudsecuritycompliancepb.AuditClient + + // LROClient is used internally to handle long-running operations. + // It is exposed so that its CallOptions can be modified if required. + // Users should not Close this client. + LROClient **lroauto.OperationsClient + + operationsClient longrunningpb.OperationsClient + + locationsClient locationpb.LocationsClient + + // The x-goog-* metadata to be sent with each request. + xGoogHeaders []string + + logger *slog.Logger +} + +// NewAuditClient creates a new audit client based on gRPC. +// The returned client must be Closed when it is done being used to clean up its underlying connections. +// +// Service describing handlers for resources +func NewAuditClient(ctx context.Context, opts ...option.ClientOption) (*AuditClient, error) { + clientOpts := defaultAuditGRPCClientOptions() + if newAuditClientHook != nil { + hookOpts, err := newAuditClientHook(ctx, clientHookParams{}) + if err != nil { + return nil, err + } + clientOpts = append(clientOpts, hookOpts...) + } + + connPool, err := gtransport.DialPool(ctx, append(clientOpts, opts...)...) + if err != nil { + return nil, err + } + client := AuditClient{CallOptions: defaultAuditCallOptions()} + + c := &auditGRPCClient{ + connPool: connPool, + auditClient: cloudsecuritycompliancepb.NewAuditClient(connPool), + CallOptions: &client.CallOptions, + logger: internaloption.GetLogger(opts), + operationsClient: longrunningpb.NewOperationsClient(connPool), + locationsClient: locationpb.NewLocationsClient(connPool), + } + c.setGoogleClientInfo() + + client.internalClient = c + + client.LROClient, err = lroauto.NewOperationsClient(ctx, gtransport.WithConnPool(connPool)) + if err != nil { + // This error "should not happen", since we are just reusing old connection pool + // and never actually need to dial. + // If this does happen, we could leak connp. However, we cannot close conn: + // If the user invoked the constructor with option.WithGRPCConn, + // we would close a connection that's still in use. + // TODO: investigate error conditions. + return nil, err + } + c.LROClient = &client.LROClient + return &client, nil +} + +// Connection returns a connection to the API service. +// +// Deprecated: Connections are now pooled so this method does not always +// return the same resource. +func (c *auditGRPCClient) Connection() *grpc.ClientConn { + return c.connPool.Conn() +} + +// setGoogleClientInfo sets the name and version of the application in +// the `x-goog-api-client` header passed on each request. Intended for +// use by Google-written clients. +func (c *auditGRPCClient) setGoogleClientInfo(keyval ...string) { + kv := append([]string{"gl-go", gax.GoVersion}, keyval...) + kv = append(kv, "gapic", getVersionClient(), "gax", gax.Version, "grpc", grpc.Version, "pb", protoVersion) + c.xGoogHeaders = []string{ + "x-goog-api-client", gax.XGoogHeader(kv...), + } +} + +// Close closes the connection to the API service. The user should invoke this when +// the client is no longer required. +func (c *auditGRPCClient) Close() error { + return c.connPool.Close() +} + +// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. +type auditRESTClient struct { + // The http endpoint to connect to. + endpoint string + + // The http client. + httpClient *http.Client + + // LROClient is used internally to handle long-running operations. + // It is exposed so that its CallOptions can be modified if required. + // Users should not Close this client. + LROClient **lroauto.OperationsClient + + // The x-goog-* headers to be sent with each request. + xGoogHeaders []string + + // Points back to the CallOptions field of the containing AuditClient + CallOptions **AuditCallOptions + + logger *slog.Logger +} + +// NewAuditRESTClient creates a new audit rest client. +// +// Service describing handlers for resources +func NewAuditRESTClient(ctx context.Context, opts ...option.ClientOption) (*AuditClient, error) { + clientOpts := append(defaultAuditRESTClientOptions(), opts...) + httpClient, endpoint, err := httptransport.NewClient(ctx, clientOpts...) + if err != nil { + return nil, err + } + + callOpts := defaultAuditRESTCallOptions() + c := &auditRESTClient{ + endpoint: endpoint, + httpClient: httpClient, + CallOptions: &callOpts, + logger: internaloption.GetLogger(opts), + } + c.setGoogleClientInfo() + + lroOpts := []option.ClientOption{ + option.WithHTTPClient(httpClient), + option.WithEndpoint(endpoint), + } + opClient, err := lroauto.NewOperationsRESTClient(ctx, lroOpts...) + if err != nil { + return nil, err + } + c.LROClient = &opClient + + return &AuditClient{internalClient: c, CallOptions: callOpts}, nil +} + +func defaultAuditRESTClientOptions() []option.ClientOption { + return []option.ClientOption{ + internaloption.WithDefaultEndpoint("https://cloudsecuritycompliance.googleapis.com"), + internaloption.WithDefaultEndpointTemplate("https://cloudsecuritycompliance.UNIVERSE_DOMAIN"), + internaloption.WithDefaultMTLSEndpoint("https://cloudsecuritycompliance.mtls.googleapis.com"), + internaloption.WithDefaultUniverseDomain("googleapis.com"), + internaloption.WithDefaultAudience("https://cloudsecuritycompliance.googleapis.com/"), + internaloption.WithDefaultScopes(DefaultAuthScopes()...), + internaloption.EnableNewAuthLibrary(), + } +} + +// setGoogleClientInfo sets the name and version of the application in +// the `x-goog-api-client` header passed on each request. Intended for +// use by Google-written clients. +func (c *auditRESTClient) setGoogleClientInfo(keyval ...string) { + kv := append([]string{"gl-go", gax.GoVersion}, keyval...) + kv = append(kv, "gapic", getVersionClient(), "gax", gax.Version, "rest", "UNKNOWN", "pb", protoVersion) + c.xGoogHeaders = []string{ + "x-goog-api-client", gax.XGoogHeader(kv...), + } +} + +// Close closes the connection to the API service. The user should invoke this when +// the client is no longer required. +func (c *auditRESTClient) Close() error { + // Replace httpClient with nil to force cleanup. + c.httpClient = nil + return nil +} + +// Connection returns a connection to the API service. +// +// Deprecated: This method always returns nil. +func (c *auditRESTClient) Connection() *grpc.ClientConn { + return nil +} +func (c *auditGRPCClient) GenerateFrameworkAuditScopeReport(ctx context.Context, req *cloudsecuritycompliancepb.GenerateFrameworkAuditScopeReportRequest, opts ...gax.CallOption) (*cloudsecuritycompliancepb.GenerateFrameworkAuditScopeReportResponse, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "scope", url.QueryEscape(req.GetScope()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GenerateFrameworkAuditScopeReport[0:len((*c.CallOptions).GenerateFrameworkAuditScopeReport):len((*c.CallOptions).GenerateFrameworkAuditScopeReport)], opts...) + var resp *cloudsecuritycompliancepb.GenerateFrameworkAuditScopeReportResponse + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.auditClient.GenerateFrameworkAuditScopeReport, req, settings.GRPC, c.logger, "GenerateFrameworkAuditScopeReport") + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *auditGRPCClient) CreateFrameworkAudit(ctx context.Context, req *cloudsecuritycompliancepb.CreateFrameworkAuditRequest, opts ...gax.CallOption) (*CreateFrameworkAuditOperation, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).CreateFrameworkAudit[0:len((*c.CallOptions).CreateFrameworkAudit):len((*c.CallOptions).CreateFrameworkAudit)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.auditClient.CreateFrameworkAudit, req, settings.GRPC, c.logger, "CreateFrameworkAudit") + return err + }, opts...) + if err != nil { + return nil, err + } + return &CreateFrameworkAuditOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil +} + +func (c *auditGRPCClient) ListFrameworkAudits(ctx context.Context, req *cloudsecuritycompliancepb.ListFrameworkAuditsRequest, opts ...gax.CallOption) *FrameworkAuditIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListFrameworkAudits[0:len((*c.CallOptions).ListFrameworkAudits):len((*c.CallOptions).ListFrameworkAudits)], opts...) + it := &FrameworkAuditIterator{} + req = proto.Clone(req).(*cloudsecuritycompliancepb.ListFrameworkAuditsRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*cloudsecuritycompliancepb.FrameworkAudit, string, error) { + resp := &cloudsecuritycompliancepb.ListFrameworkAuditsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.auditClient.ListFrameworkAudits, req, settings.GRPC, c.logger, "ListFrameworkAudits") + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetFrameworkAudits(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +func (c *auditGRPCClient) GetFrameworkAudit(ctx context.Context, req *cloudsecuritycompliancepb.GetFrameworkAuditRequest, opts ...gax.CallOption) (*cloudsecuritycompliancepb.FrameworkAudit, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetFrameworkAudit[0:len((*c.CallOptions).GetFrameworkAudit):len((*c.CallOptions).GetFrameworkAudit)], opts...) + var resp *cloudsecuritycompliancepb.FrameworkAudit + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.auditClient.GetFrameworkAudit, req, settings.GRPC, c.logger, "GetFrameworkAudit") + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *auditGRPCClient) GetLocation(ctx context.Context, req *locationpb.GetLocationRequest, opts ...gax.CallOption) (*locationpb.Location, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetLocation[0:len((*c.CallOptions).GetLocation):len((*c.CallOptions).GetLocation)], opts...) + var resp *locationpb.Location + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.locationsClient.GetLocation, req, settings.GRPC, c.logger, "GetLocation") + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *auditGRPCClient) ListLocations(ctx context.Context, req *locationpb.ListLocationsRequest, opts ...gax.CallOption) *LocationIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListLocations[0:len((*c.CallOptions).ListLocations):len((*c.CallOptions).ListLocations)], opts...) + it := &LocationIterator{} + req = proto.Clone(req).(*locationpb.ListLocationsRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*locationpb.Location, string, error) { + resp := &locationpb.ListLocationsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.locationsClient.ListLocations, req, settings.GRPC, c.logger, "ListLocations") + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetLocations(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +func (c *auditGRPCClient) CancelOperation(ctx context.Context, req *longrunningpb.CancelOperationRequest, opts ...gax.CallOption) error { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).CancelOperation[0:len((*c.CallOptions).CancelOperation):len((*c.CallOptions).CancelOperation)], opts...) + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + _, err = executeRPC(ctx, c.operationsClient.CancelOperation, req, settings.GRPC, c.logger, "CancelOperation") + return err + }, opts...) + return err +} + +func (c *auditGRPCClient) DeleteOperation(ctx context.Context, req *longrunningpb.DeleteOperationRequest, opts ...gax.CallOption) error { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).DeleteOperation[0:len((*c.CallOptions).DeleteOperation):len((*c.CallOptions).DeleteOperation)], opts...) + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + _, err = executeRPC(ctx, c.operationsClient.DeleteOperation, req, settings.GRPC, c.logger, "DeleteOperation") + return err + }, opts...) + return err +} + +func (c *auditGRPCClient) GetOperation(ctx context.Context, req *longrunningpb.GetOperationRequest, opts ...gax.CallOption) (*longrunningpb.Operation, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetOperation[0:len((*c.CallOptions).GetOperation):len((*c.CallOptions).GetOperation)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.operationsClient.GetOperation, req, settings.GRPC, c.logger, "GetOperation") + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *auditGRPCClient) ListOperations(ctx context.Context, req *longrunningpb.ListOperationsRequest, opts ...gax.CallOption) *OperationIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListOperations[0:len((*c.CallOptions).ListOperations):len((*c.CallOptions).ListOperations)], opts...) + it := &OperationIterator{} + req = proto.Clone(req).(*longrunningpb.ListOperationsRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*longrunningpb.Operation, string, error) { + resp := &longrunningpb.ListOperationsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.operationsClient.ListOperations, req, settings.GRPC, c.logger, "ListOperations") + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetOperations(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +// GenerateFrameworkAuditScopeReport generates an audit scope report for a framework. +func (c *auditRESTClient) GenerateFrameworkAuditScopeReport(ctx context.Context, req *cloudsecuritycompliancepb.GenerateFrameworkAuditScopeReportRequest, opts ...gax.CallOption) (*cloudsecuritycompliancepb.GenerateFrameworkAuditScopeReportResponse, error) { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + jsonReq, err := m.Marshal(req) + if err != nil { + return nil, err + } + + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1/%v/frameworkAuditScopeReports:generateFrameworkAuditScopeReport", req.GetScope()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "scope", url.QueryEscape(req.GetScope()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).GenerateFrameworkAuditScopeReport[0:len((*c.CallOptions).GenerateFrameworkAuditScopeReport):len((*c.CallOptions).GenerateFrameworkAuditScopeReport)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &cloudsecuritycompliancepb.GenerateFrameworkAuditScopeReportResponse{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, jsonReq, "GenerateFrameworkAuditScopeReport") + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + +// CreateFrameworkAudit creates an audit scope report for a framework. +func (c *auditRESTClient) CreateFrameworkAudit(ctx context.Context, req *cloudsecuritycompliancepb.CreateFrameworkAuditRequest, opts ...gax.CallOption) (*CreateFrameworkAuditOperation, error) { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + body := req.GetFrameworkAudit() + jsonReq, err := m.Marshal(body) + if err != nil { + return nil, err + } + + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1/%v/frameworkAudits", req.GetParent()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetFrameworkAuditId() != "" { + params.Add("frameworkAuditId", fmt.Sprintf("%v", req.GetFrameworkAuditId())) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &longrunningpb.Operation{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, jsonReq, "CreateFrameworkAudit") + if err != nil { + return err + } + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + + override := fmt.Sprintf("/v1/%s", resp.GetName()) + return &CreateFrameworkAuditOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + pollPath: override, + }, nil +} + +// ListFrameworkAudits lists the framework audits for a given organization, folder, or project. +func (c *auditRESTClient) ListFrameworkAudits(ctx context.Context, req *cloudsecuritycompliancepb.ListFrameworkAuditsRequest, opts ...gax.CallOption) *FrameworkAuditIterator { + it := &FrameworkAuditIterator{} + req = proto.Clone(req).(*cloudsecuritycompliancepb.ListFrameworkAuditsRequest) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + it.InternalFetch = func(pageSize int, pageToken string) ([]*cloudsecuritycompliancepb.FrameworkAudit, string, error) { + resp := &cloudsecuritycompliancepb.ListFrameworkAuditsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, "", err + } + baseUrl.Path += fmt.Sprintf("/v1/%v/frameworkAudits", req.GetParent()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetFilter() != "" { + params.Add("filter", fmt.Sprintf("%v", req.GetFilter())) + } + if req.GetPageSize() != 0 { + params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) + } + if req.GetPageToken() != "" { + params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := append(c.xGoogHeaders, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "ListFrameworkAudits") + if err != nil { + return err + } + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, "", e + } + it.Response = resp + return resp.GetFrameworkAudits(), resp.GetNextPageToken(), nil + } + + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +// GetFrameworkAudit gets the details for a framework audit. +func (c *auditRESTClient) GetFrameworkAudit(ctx context.Context, req *cloudsecuritycompliancepb.GetFrameworkAuditRequest, opts ...gax.CallOption) (*cloudsecuritycompliancepb.FrameworkAudit, error) { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).GetFrameworkAudit[0:len((*c.CallOptions).GetFrameworkAudit):len((*c.CallOptions).GetFrameworkAudit)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &cloudsecuritycompliancepb.FrameworkAudit{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "GetFrameworkAudit") + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + +// GetLocation gets information about a location. +func (c *auditRESTClient) GetLocation(ctx context.Context, req *locationpb.GetLocationRequest, opts ...gax.CallOption) (*locationpb.Location, error) { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).GetLocation[0:len((*c.CallOptions).GetLocation):len((*c.CallOptions).GetLocation)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &locationpb.Location{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "GetLocation") + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + +// ListLocations lists information about the supported locations for this service. +func (c *auditRESTClient) ListLocations(ctx context.Context, req *locationpb.ListLocationsRequest, opts ...gax.CallOption) *LocationIterator { + it := &LocationIterator{} + req = proto.Clone(req).(*locationpb.ListLocationsRequest) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + it.InternalFetch = func(pageSize int, pageToken string) ([]*locationpb.Location, string, error) { + resp := &locationpb.ListLocationsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, "", err + } + baseUrl.Path += fmt.Sprintf("/v1/%v/locations", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetFilter() != "" { + params.Add("filter", fmt.Sprintf("%v", req.GetFilter())) + } + if req.GetPageSize() != 0 { + params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) + } + if req.GetPageToken() != "" { + params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := append(c.xGoogHeaders, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "ListLocations") + if err != nil { + return err + } + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, "", e + } + it.Response = resp + return resp.GetLocations(), resp.GetNextPageToken(), nil + } + + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +// CancelOperation is a utility method from google.longrunning.Operations. +func (c *auditRESTClient) CancelOperation(ctx context.Context, req *longrunningpb.CancelOperationRequest, opts ...gax.CallOption) error { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + jsonReq, err := m.Marshal(req) + if err != nil { + return err + } + + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return err + } + baseUrl.Path += fmt.Sprintf("/v1/%v:cancel", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + return gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + _, err = executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, jsonReq, "CancelOperation") + return err + }, opts...) +} + +// DeleteOperation is a utility method from google.longrunning.Operations. +func (c *auditRESTClient) DeleteOperation(ctx context.Context, req *longrunningpb.DeleteOperationRequest, opts ...gax.CallOption) error { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return err + } + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + return gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("DELETE", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + _, err = executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "DeleteOperation") + return err + }, opts...) +} + +// GetOperation is a utility method from google.longrunning.Operations. +func (c *auditRESTClient) GetOperation(ctx context.Context, req *longrunningpb.GetOperationRequest, opts ...gax.CallOption) (*longrunningpb.Operation, error) { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).GetOperation[0:len((*c.CallOptions).GetOperation):len((*c.CallOptions).GetOperation)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &longrunningpb.Operation{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "GetOperation") + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + +// ListOperations is a utility method from google.longrunning.Operations. +func (c *auditRESTClient) ListOperations(ctx context.Context, req *longrunningpb.ListOperationsRequest, opts ...gax.CallOption) *OperationIterator { + it := &OperationIterator{} + req = proto.Clone(req).(*longrunningpb.ListOperationsRequest) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + it.InternalFetch = func(pageSize int, pageToken string) ([]*longrunningpb.Operation, string, error) { + resp := &longrunningpb.ListOperationsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, "", err + } + baseUrl.Path += fmt.Sprintf("/v1/%v/operations", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetFilter() != "" { + params.Add("filter", fmt.Sprintf("%v", req.GetFilter())) + } + if req.GetPageSize() != 0 { + params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) + } + if req.GetPageToken() != "" { + params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) + } + if req.GetReturnPartialSuccess() { + params.Add("returnPartialSuccess", fmt.Sprintf("%v", req.GetReturnPartialSuccess())) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := append(c.xGoogHeaders, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "ListOperations") + if err != nil { + return err + } + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, "", e + } + it.Response = resp + return resp.GetOperations(), resp.GetNextPageToken(), nil + } + + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +// CreateFrameworkAuditOperation returns a new CreateFrameworkAuditOperation from a given name. +// The name must be that of a previously created CreateFrameworkAuditOperation, possibly from a different process. +func (c *auditGRPCClient) CreateFrameworkAuditOperation(name string) *CreateFrameworkAuditOperation { + return &CreateFrameworkAuditOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + } +} + +// CreateFrameworkAuditOperation returns a new CreateFrameworkAuditOperation from a given name. +// The name must be that of a previously created CreateFrameworkAuditOperation, possibly from a different process. +func (c *auditRESTClient) CreateFrameworkAuditOperation(name string) *CreateFrameworkAuditOperation { + override := fmt.Sprintf("/v1/%s", name) + return &CreateFrameworkAuditOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + pollPath: override, + } +} diff --git a/cloudsecuritycompliance/apiv1/audit_client_example_go123_test.go b/cloudsecuritycompliance/apiv1/audit_client_example_go123_test.go new file mode 100644 index 000000000000..d20a1c2292ec --- /dev/null +++ b/cloudsecuritycompliance/apiv1/audit_client_example_go123_test.go @@ -0,0 +1,106 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +//go:build go1.23 + +package cloudsecuritycompliance_test + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + cloudsecuritycompliancepb "cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" + locationpb "google.golang.org/genproto/googleapis/cloud/location" +) + +func ExampleAuditClient_ListFrameworkAudits_all() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewAuditClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.ListFrameworkAuditsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#ListFrameworkAuditsRequest. + } + for resp, err := range c.ListFrameworkAudits(ctx, req).All() { + if err != nil { + // TODO: Handle error and break/return/continue. Iteration will stop after any error. + } + // TODO: Use resp. + _ = resp + } +} + +func ExampleAuditClient_ListLocations_all() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewAuditClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &locationpb.ListLocationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/google.golang.org/genproto/googleapis/cloud/location#ListLocationsRequest. + } + for resp, err := range c.ListLocations(ctx, req).All() { + if err != nil { + // TODO: Handle error and break/return/continue. Iteration will stop after any error. + } + // TODO: Use resp. + _ = resp + } +} + +func ExampleAuditClient_ListOperations_all() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewAuditClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.ListOperationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#ListOperationsRequest. + } + for resp, err := range c.ListOperations(ctx, req).All() { + if err != nil { + // TODO: Handle error and break/return/continue. Iteration will stop after any error. + } + // TODO: Use resp. + _ = resp + } +} diff --git a/cloudsecuritycompliance/apiv1/audit_client_example_test.go b/cloudsecuritycompliance/apiv1/audit_client_example_test.go new file mode 100644 index 000000000000..c0c120e185a0 --- /dev/null +++ b/cloudsecuritycompliance/apiv1/audit_client_example_test.go @@ -0,0 +1,348 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +package cloudsecuritycompliance_test + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + cloudsecuritycompliancepb "cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" + "google.golang.org/api/iterator" + locationpb "google.golang.org/genproto/googleapis/cloud/location" +) + +func ExampleNewAuditClient() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewAuditClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + // TODO: Use client. + _ = c +} + +func ExampleNewAuditRESTClient() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewAuditRESTClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + // TODO: Use client. + _ = c +} + +func ExampleAuditClient_CreateFrameworkAudit() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewAuditClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.CreateFrameworkAuditRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#CreateFrameworkAuditRequest. + } + op, err := c.CreateFrameworkAudit(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleAuditClient_GenerateFrameworkAuditScopeReport() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewAuditClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.GenerateFrameworkAuditScopeReportRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#GenerateFrameworkAuditScopeReportRequest. + } + resp, err := c.GenerateFrameworkAuditScopeReport(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleAuditClient_GetFrameworkAudit() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewAuditClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.GetFrameworkAuditRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#GetFrameworkAuditRequest. + } + resp, err := c.GetFrameworkAudit(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleAuditClient_ListFrameworkAudits() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewAuditClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.ListFrameworkAuditsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#ListFrameworkAuditsRequest. + } + it := c.ListFrameworkAudits(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*cloudsecuritycompliancepb.ListFrameworkAuditsResponse) + } +} + +func ExampleAuditClient_GetLocation() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewAuditClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &locationpb.GetLocationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/google.golang.org/genproto/googleapis/cloud/location#GetLocationRequest. + } + resp, err := c.GetLocation(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleAuditClient_ListLocations() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewAuditClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &locationpb.ListLocationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/google.golang.org/genproto/googleapis/cloud/location#ListLocationsRequest. + } + it := c.ListLocations(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*locationpb.ListLocationsResponse) + } +} + +func ExampleAuditClient_CancelOperation() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewAuditClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.CancelOperationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#CancelOperationRequest. + } + err = c.CancelOperation(ctx, req) + if err != nil { + // TODO: Handle error. + } +} + +func ExampleAuditClient_DeleteOperation() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewAuditClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.DeleteOperationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#DeleteOperationRequest. + } + err = c.DeleteOperation(ctx, req) + if err != nil { + // TODO: Handle error. + } +} + +func ExampleAuditClient_GetOperation() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewAuditClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.GetOperationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#GetOperationRequest. + } + resp, err := c.GetOperation(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleAuditClient_ListOperations() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewAuditClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.ListOperationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#ListOperationsRequest. + } + it := c.ListOperations(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*longrunningpb.ListOperationsResponse) + } +} diff --git a/cloudsecuritycompliance/apiv1/auxiliary.go b/cloudsecuritycompliance/apiv1/auxiliary.go new file mode 100644 index 000000000000..9b50daf20113 --- /dev/null +++ b/cloudsecuritycompliance/apiv1/auxiliary.go @@ -0,0 +1,680 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +package cloudsecuritycompliance + +import ( + "context" + "time" + + cloudsecuritycompliancepb "cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb" + "cloud.google.com/go/longrunning" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" + gax "github.com/googleapis/gax-go/v2" + "google.golang.org/api/iterator" + locationpb "google.golang.org/genproto/googleapis/cloud/location" +) + +// CreateFrameworkAuditOperation manages a long-running operation from CreateFrameworkAudit. +type CreateFrameworkAuditOperation struct { + lro *longrunning.Operation + pollPath string +} + +// Wait blocks until the long-running operation is completed, returning the response and any errors encountered. +// +// See documentation of Poll for error-handling information. +func (op *CreateFrameworkAuditOperation) Wait(ctx context.Context, opts ...gax.CallOption) (*cloudsecuritycompliancepb.FrameworkAudit, error) { + opts = append([]gax.CallOption{gax.WithPath(op.pollPath)}, opts...) + var resp cloudsecuritycompliancepb.FrameworkAudit + if err := op.lro.WaitWithInterval(ctx, &resp, time.Minute, opts...); err != nil { + return nil, err + } + return &resp, nil +} + +// Poll fetches the latest state of the long-running operation. +// +// Poll also fetches the latest metadata, which can be retrieved by Metadata. +// +// If Poll fails, the error is returned and op is unmodified. If Poll succeeds and +// the operation has completed with failure, the error is returned and op.Done will return true. +// If Poll succeeds and the operation has completed successfully, +// op.Done will return true, and the response of the operation is returned. +// If Poll succeeds and the operation has not completed, the returned response and error are both nil. +func (op *CreateFrameworkAuditOperation) Poll(ctx context.Context, opts ...gax.CallOption) (*cloudsecuritycompliancepb.FrameworkAudit, error) { + opts = append([]gax.CallOption{gax.WithPath(op.pollPath)}, opts...) + var resp cloudsecuritycompliancepb.FrameworkAudit + if err := op.lro.Poll(ctx, &resp, opts...); err != nil { + return nil, err + } + if !op.Done() { + return nil, nil + } + return &resp, nil +} + +// Metadata returns metadata associated with the long-running operation. +// Metadata itself does not contact the server, but Poll does. +// To get the latest metadata, call this method after a successful call to Poll. +// If the metadata is not available, the returned metadata and error are both nil. +func (op *CreateFrameworkAuditOperation) Metadata() (*cloudsecuritycompliancepb.OperationMetadata, error) { + var meta cloudsecuritycompliancepb.OperationMetadata + if err := op.lro.Metadata(&meta); err == longrunning.ErrNoMetadata { + return nil, nil + } else if err != nil { + return nil, err + } + return &meta, nil +} + +// Done reports whether the long-running operation has completed. +func (op *CreateFrameworkAuditOperation) Done() bool { + return op.lro.Done() +} + +// Name returns the name of the long-running operation. +// The name is assigned by the server and is unique within the service from which the operation is created. +func (op *CreateFrameworkAuditOperation) Name() string { + return op.lro.Name() +} + +// CreateFrameworkDeploymentOperation manages a long-running operation from CreateFrameworkDeployment. +type CreateFrameworkDeploymentOperation struct { + lro *longrunning.Operation + pollPath string +} + +// Wait blocks until the long-running operation is completed, returning the response and any errors encountered. +// +// See documentation of Poll for error-handling information. +func (op *CreateFrameworkDeploymentOperation) Wait(ctx context.Context, opts ...gax.CallOption) (*cloudsecuritycompliancepb.FrameworkDeployment, error) { + opts = append([]gax.CallOption{gax.WithPath(op.pollPath)}, opts...) + var resp cloudsecuritycompliancepb.FrameworkDeployment + if err := op.lro.WaitWithInterval(ctx, &resp, time.Minute, opts...); err != nil { + return nil, err + } + return &resp, nil +} + +// Poll fetches the latest state of the long-running operation. +// +// Poll also fetches the latest metadata, which can be retrieved by Metadata. +// +// If Poll fails, the error is returned and op is unmodified. If Poll succeeds and +// the operation has completed with failure, the error is returned and op.Done will return true. +// If Poll succeeds and the operation has completed successfully, +// op.Done will return true, and the response of the operation is returned. +// If Poll succeeds and the operation has not completed, the returned response and error are both nil. +func (op *CreateFrameworkDeploymentOperation) Poll(ctx context.Context, opts ...gax.CallOption) (*cloudsecuritycompliancepb.FrameworkDeployment, error) { + opts = append([]gax.CallOption{gax.WithPath(op.pollPath)}, opts...) + var resp cloudsecuritycompliancepb.FrameworkDeployment + if err := op.lro.Poll(ctx, &resp, opts...); err != nil { + return nil, err + } + if !op.Done() { + return nil, nil + } + return &resp, nil +} + +// Metadata returns metadata associated with the long-running operation. +// Metadata itself does not contact the server, but Poll does. +// To get the latest metadata, call this method after a successful call to Poll. +// If the metadata is not available, the returned metadata and error are both nil. +func (op *CreateFrameworkDeploymentOperation) Metadata() (*cloudsecuritycompliancepb.OperationMetadata, error) { + var meta cloudsecuritycompliancepb.OperationMetadata + if err := op.lro.Metadata(&meta); err == longrunning.ErrNoMetadata { + return nil, nil + } else if err != nil { + return nil, err + } + return &meta, nil +} + +// Done reports whether the long-running operation has completed. +func (op *CreateFrameworkDeploymentOperation) Done() bool { + return op.lro.Done() +} + +// Name returns the name of the long-running operation. +// The name is assigned by the server and is unique within the service from which the operation is created. +func (op *CreateFrameworkDeploymentOperation) Name() string { + return op.lro.Name() +} + +// DeleteFrameworkDeploymentOperation manages a long-running operation from DeleteFrameworkDeployment. +type DeleteFrameworkDeploymentOperation struct { + lro *longrunning.Operation + pollPath string +} + +// Wait blocks until the long-running operation is completed, returning the response and any errors encountered. +// +// See documentation of Poll for error-handling information. +func (op *DeleteFrameworkDeploymentOperation) Wait(ctx context.Context, opts ...gax.CallOption) error { + opts = append([]gax.CallOption{gax.WithPath(op.pollPath)}, opts...) + return op.lro.WaitWithInterval(ctx, nil, time.Minute, opts...) +} + +// Poll fetches the latest state of the long-running operation. +// +// Poll also fetches the latest metadata, which can be retrieved by Metadata. +// +// If Poll fails, the error is returned and op is unmodified. If Poll succeeds and +// the operation has completed with failure, the error is returned and op.Done will return true. +// If Poll succeeds and the operation has completed successfully, +// op.Done will return true, and the response of the operation is returned. +// If Poll succeeds and the operation has not completed, the returned response and error are both nil. +func (op *DeleteFrameworkDeploymentOperation) Poll(ctx context.Context, opts ...gax.CallOption) error { + opts = append([]gax.CallOption{gax.WithPath(op.pollPath)}, opts...) + return op.lro.Poll(ctx, nil, opts...) +} + +// Metadata returns metadata associated with the long-running operation. +// Metadata itself does not contact the server, but Poll does. +// To get the latest metadata, call this method after a successful call to Poll. +// If the metadata is not available, the returned metadata and error are both nil. +func (op *DeleteFrameworkDeploymentOperation) Metadata() (*cloudsecuritycompliancepb.OperationMetadata, error) { + var meta cloudsecuritycompliancepb.OperationMetadata + if err := op.lro.Metadata(&meta); err == longrunning.ErrNoMetadata { + return nil, nil + } else if err != nil { + return nil, err + } + return &meta, nil +} + +// Done reports whether the long-running operation has completed. +func (op *DeleteFrameworkDeploymentOperation) Done() bool { + return op.lro.Done() +} + +// Name returns the name of the long-running operation. +// The name is assigned by the server and is unique within the service from which the operation is created. +func (op *DeleteFrameworkDeploymentOperation) Name() string { + return op.lro.Name() +} + +// CloudControlDeploymentIterator manages a stream of *cloudsecuritycompliancepb.CloudControlDeployment. +type CloudControlDeploymentIterator struct { + items []*cloudsecuritycompliancepb.CloudControlDeployment + pageInfo *iterator.PageInfo + nextFunc func() error + + // Response is the raw response for the current page. + // It must be cast to the RPC response type. + // Calling Next() or InternalFetch() updates this value. + Response interface{} + + // InternalFetch is for use by the Google Cloud Libraries only. + // It is not part of the stable interface of this package. + // + // InternalFetch returns results from a single call to the underlying RPC. + // The number of results is no greater than pageSize. + // If there are no more results, nextPageToken is empty and err is nil. + InternalFetch func(pageSize int, pageToken string) (results []*cloudsecuritycompliancepb.CloudControlDeployment, nextPageToken string, err error) +} + +// PageInfo supports pagination. See the [google.golang.org/api/iterator] package for details. +func (it *CloudControlDeploymentIterator) PageInfo() *iterator.PageInfo { + return it.pageInfo +} + +// Next returns the next result. Its second return value is iterator.Done if there are no more +// results. Once Next returns Done, all subsequent calls will return Done. +func (it *CloudControlDeploymentIterator) Next() (*cloudsecuritycompliancepb.CloudControlDeployment, error) { + var item *cloudsecuritycompliancepb.CloudControlDeployment + if err := it.nextFunc(); err != nil { + return item, err + } + item = it.items[0] + it.items = it.items[1:] + return item, nil +} + +func (it *CloudControlDeploymentIterator) bufLen() int { + return len(it.items) +} + +func (it *CloudControlDeploymentIterator) takeBuf() interface{} { + b := it.items + it.items = nil + return b +} + +// CloudControlIterator manages a stream of *cloudsecuritycompliancepb.CloudControl. +type CloudControlIterator struct { + items []*cloudsecuritycompliancepb.CloudControl + pageInfo *iterator.PageInfo + nextFunc func() error + + // Response is the raw response for the current page. + // It must be cast to the RPC response type. + // Calling Next() or InternalFetch() updates this value. + Response interface{} + + // InternalFetch is for use by the Google Cloud Libraries only. + // It is not part of the stable interface of this package. + // + // InternalFetch returns results from a single call to the underlying RPC. + // The number of results is no greater than pageSize. + // If there are no more results, nextPageToken is empty and err is nil. + InternalFetch func(pageSize int, pageToken string) (results []*cloudsecuritycompliancepb.CloudControl, nextPageToken string, err error) +} + +// PageInfo supports pagination. See the [google.golang.org/api/iterator] package for details. +func (it *CloudControlIterator) PageInfo() *iterator.PageInfo { + return it.pageInfo +} + +// Next returns the next result. Its second return value is iterator.Done if there are no more +// results. Once Next returns Done, all subsequent calls will return Done. +func (it *CloudControlIterator) Next() (*cloudsecuritycompliancepb.CloudControl, error) { + var item *cloudsecuritycompliancepb.CloudControl + if err := it.nextFunc(); err != nil { + return item, err + } + item = it.items[0] + it.items = it.items[1:] + return item, nil +} + +func (it *CloudControlIterator) bufLen() int { + return len(it.items) +} + +func (it *CloudControlIterator) takeBuf() interface{} { + b := it.items + it.items = nil + return b +} + +// ControlComplianceSummaryIterator manages a stream of *cloudsecuritycompliancepb.ControlComplianceSummary. +type ControlComplianceSummaryIterator struct { + items []*cloudsecuritycompliancepb.ControlComplianceSummary + pageInfo *iterator.PageInfo + nextFunc func() error + + // Response is the raw response for the current page. + // It must be cast to the RPC response type. + // Calling Next() or InternalFetch() updates this value. + Response interface{} + + // InternalFetch is for use by the Google Cloud Libraries only. + // It is not part of the stable interface of this package. + // + // InternalFetch returns results from a single call to the underlying RPC. + // The number of results is no greater than pageSize. + // If there are no more results, nextPageToken is empty and err is nil. + InternalFetch func(pageSize int, pageToken string) (results []*cloudsecuritycompliancepb.ControlComplianceSummary, nextPageToken string, err error) +} + +// PageInfo supports pagination. See the [google.golang.org/api/iterator] package for details. +func (it *ControlComplianceSummaryIterator) PageInfo() *iterator.PageInfo { + return it.pageInfo +} + +// Next returns the next result. Its second return value is iterator.Done if there are no more +// results. Once Next returns Done, all subsequent calls will return Done. +func (it *ControlComplianceSummaryIterator) Next() (*cloudsecuritycompliancepb.ControlComplianceSummary, error) { + var item *cloudsecuritycompliancepb.ControlComplianceSummary + if err := it.nextFunc(); err != nil { + return item, err + } + item = it.items[0] + it.items = it.items[1:] + return item, nil +} + +func (it *ControlComplianceSummaryIterator) bufLen() int { + return len(it.items) +} + +func (it *ControlComplianceSummaryIterator) takeBuf() interface{} { + b := it.items + it.items = nil + return b +} + +// FindingSummaryIterator manages a stream of *cloudsecuritycompliancepb.FindingSummary. +type FindingSummaryIterator struct { + items []*cloudsecuritycompliancepb.FindingSummary + pageInfo *iterator.PageInfo + nextFunc func() error + + // Response is the raw response for the current page. + // It must be cast to the RPC response type. + // Calling Next() or InternalFetch() updates this value. + Response interface{} + + // InternalFetch is for use by the Google Cloud Libraries only. + // It is not part of the stable interface of this package. + // + // InternalFetch returns results from a single call to the underlying RPC. + // The number of results is no greater than pageSize. + // If there are no more results, nextPageToken is empty and err is nil. + InternalFetch func(pageSize int, pageToken string) (results []*cloudsecuritycompliancepb.FindingSummary, nextPageToken string, err error) +} + +// PageInfo supports pagination. See the [google.golang.org/api/iterator] package for details. +func (it *FindingSummaryIterator) PageInfo() *iterator.PageInfo { + return it.pageInfo +} + +// Next returns the next result. Its second return value is iterator.Done if there are no more +// results. Once Next returns Done, all subsequent calls will return Done. +func (it *FindingSummaryIterator) Next() (*cloudsecuritycompliancepb.FindingSummary, error) { + var item *cloudsecuritycompliancepb.FindingSummary + if err := it.nextFunc(); err != nil { + return item, err + } + item = it.items[0] + it.items = it.items[1:] + return item, nil +} + +func (it *FindingSummaryIterator) bufLen() int { + return len(it.items) +} + +func (it *FindingSummaryIterator) takeBuf() interface{} { + b := it.items + it.items = nil + return b +} + +// FrameworkAuditIterator manages a stream of *cloudsecuritycompliancepb.FrameworkAudit. +type FrameworkAuditIterator struct { + items []*cloudsecuritycompliancepb.FrameworkAudit + pageInfo *iterator.PageInfo + nextFunc func() error + + // Response is the raw response for the current page. + // It must be cast to the RPC response type. + // Calling Next() or InternalFetch() updates this value. + Response interface{} + + // InternalFetch is for use by the Google Cloud Libraries only. + // It is not part of the stable interface of this package. + // + // InternalFetch returns results from a single call to the underlying RPC. + // The number of results is no greater than pageSize. + // If there are no more results, nextPageToken is empty and err is nil. + InternalFetch func(pageSize int, pageToken string) (results []*cloudsecuritycompliancepb.FrameworkAudit, nextPageToken string, err error) +} + +// PageInfo supports pagination. See the [google.golang.org/api/iterator] package for details. +func (it *FrameworkAuditIterator) PageInfo() *iterator.PageInfo { + return it.pageInfo +} + +// Next returns the next result. Its second return value is iterator.Done if there are no more +// results. Once Next returns Done, all subsequent calls will return Done. +func (it *FrameworkAuditIterator) Next() (*cloudsecuritycompliancepb.FrameworkAudit, error) { + var item *cloudsecuritycompliancepb.FrameworkAudit + if err := it.nextFunc(); err != nil { + return item, err + } + item = it.items[0] + it.items = it.items[1:] + return item, nil +} + +func (it *FrameworkAuditIterator) bufLen() int { + return len(it.items) +} + +func (it *FrameworkAuditIterator) takeBuf() interface{} { + b := it.items + it.items = nil + return b +} + +// FrameworkComplianceSummaryIterator manages a stream of *cloudsecuritycompliancepb.FrameworkComplianceSummary. +type FrameworkComplianceSummaryIterator struct { + items []*cloudsecuritycompliancepb.FrameworkComplianceSummary + pageInfo *iterator.PageInfo + nextFunc func() error + + // Response is the raw response for the current page. + // It must be cast to the RPC response type. + // Calling Next() or InternalFetch() updates this value. + Response interface{} + + // InternalFetch is for use by the Google Cloud Libraries only. + // It is not part of the stable interface of this package. + // + // InternalFetch returns results from a single call to the underlying RPC. + // The number of results is no greater than pageSize. + // If there are no more results, nextPageToken is empty and err is nil. + InternalFetch func(pageSize int, pageToken string) (results []*cloudsecuritycompliancepb.FrameworkComplianceSummary, nextPageToken string, err error) +} + +// PageInfo supports pagination. See the [google.golang.org/api/iterator] package for details. +func (it *FrameworkComplianceSummaryIterator) PageInfo() *iterator.PageInfo { + return it.pageInfo +} + +// Next returns the next result. Its second return value is iterator.Done if there are no more +// results. Once Next returns Done, all subsequent calls will return Done. +func (it *FrameworkComplianceSummaryIterator) Next() (*cloudsecuritycompliancepb.FrameworkComplianceSummary, error) { + var item *cloudsecuritycompliancepb.FrameworkComplianceSummary + if err := it.nextFunc(); err != nil { + return item, err + } + item = it.items[0] + it.items = it.items[1:] + return item, nil +} + +func (it *FrameworkComplianceSummaryIterator) bufLen() int { + return len(it.items) +} + +func (it *FrameworkComplianceSummaryIterator) takeBuf() interface{} { + b := it.items + it.items = nil + return b +} + +// FrameworkDeploymentIterator manages a stream of *cloudsecuritycompliancepb.FrameworkDeployment. +type FrameworkDeploymentIterator struct { + items []*cloudsecuritycompliancepb.FrameworkDeployment + pageInfo *iterator.PageInfo + nextFunc func() error + + // Response is the raw response for the current page. + // It must be cast to the RPC response type. + // Calling Next() or InternalFetch() updates this value. + Response interface{} + + // InternalFetch is for use by the Google Cloud Libraries only. + // It is not part of the stable interface of this package. + // + // InternalFetch returns results from a single call to the underlying RPC. + // The number of results is no greater than pageSize. + // If there are no more results, nextPageToken is empty and err is nil. + InternalFetch func(pageSize int, pageToken string) (results []*cloudsecuritycompliancepb.FrameworkDeployment, nextPageToken string, err error) +} + +// PageInfo supports pagination. See the [google.golang.org/api/iterator] package for details. +func (it *FrameworkDeploymentIterator) PageInfo() *iterator.PageInfo { + return it.pageInfo +} + +// Next returns the next result. Its second return value is iterator.Done if there are no more +// results. Once Next returns Done, all subsequent calls will return Done. +func (it *FrameworkDeploymentIterator) Next() (*cloudsecuritycompliancepb.FrameworkDeployment, error) { + var item *cloudsecuritycompliancepb.FrameworkDeployment + if err := it.nextFunc(); err != nil { + return item, err + } + item = it.items[0] + it.items = it.items[1:] + return item, nil +} + +func (it *FrameworkDeploymentIterator) bufLen() int { + return len(it.items) +} + +func (it *FrameworkDeploymentIterator) takeBuf() interface{} { + b := it.items + it.items = nil + return b +} + +// FrameworkIterator manages a stream of *cloudsecuritycompliancepb.Framework. +type FrameworkIterator struct { + items []*cloudsecuritycompliancepb.Framework + pageInfo *iterator.PageInfo + nextFunc func() error + + // Response is the raw response for the current page. + // It must be cast to the RPC response type. + // Calling Next() or InternalFetch() updates this value. + Response interface{} + + // InternalFetch is for use by the Google Cloud Libraries only. + // It is not part of the stable interface of this package. + // + // InternalFetch returns results from a single call to the underlying RPC. + // The number of results is no greater than pageSize. + // If there are no more results, nextPageToken is empty and err is nil. + InternalFetch func(pageSize int, pageToken string) (results []*cloudsecuritycompliancepb.Framework, nextPageToken string, err error) +} + +// PageInfo supports pagination. See the [google.golang.org/api/iterator] package for details. +func (it *FrameworkIterator) PageInfo() *iterator.PageInfo { + return it.pageInfo +} + +// Next returns the next result. Its second return value is iterator.Done if there are no more +// results. Once Next returns Done, all subsequent calls will return Done. +func (it *FrameworkIterator) Next() (*cloudsecuritycompliancepb.Framework, error) { + var item *cloudsecuritycompliancepb.Framework + if err := it.nextFunc(); err != nil { + return item, err + } + item = it.items[0] + it.items = it.items[1:] + return item, nil +} + +func (it *FrameworkIterator) bufLen() int { + return len(it.items) +} + +func (it *FrameworkIterator) takeBuf() interface{} { + b := it.items + it.items = nil + return b +} + +// LocationIterator manages a stream of *locationpb.Location. +type LocationIterator struct { + items []*locationpb.Location + pageInfo *iterator.PageInfo + nextFunc func() error + + // Response is the raw response for the current page. + // It must be cast to the RPC response type. + // Calling Next() or InternalFetch() updates this value. + Response interface{} + + // InternalFetch is for use by the Google Cloud Libraries only. + // It is not part of the stable interface of this package. + // + // InternalFetch returns results from a single call to the underlying RPC. + // The number of results is no greater than pageSize. + // If there are no more results, nextPageToken is empty and err is nil. + InternalFetch func(pageSize int, pageToken string) (results []*locationpb.Location, nextPageToken string, err error) +} + +// PageInfo supports pagination. See the [google.golang.org/api/iterator] package for details. +func (it *LocationIterator) PageInfo() *iterator.PageInfo { + return it.pageInfo +} + +// Next returns the next result. Its second return value is iterator.Done if there are no more +// results. Once Next returns Done, all subsequent calls will return Done. +func (it *LocationIterator) Next() (*locationpb.Location, error) { + var item *locationpb.Location + if err := it.nextFunc(); err != nil { + return item, err + } + item = it.items[0] + it.items = it.items[1:] + return item, nil +} + +func (it *LocationIterator) bufLen() int { + return len(it.items) +} + +func (it *LocationIterator) takeBuf() interface{} { + b := it.items + it.items = nil + return b +} + +// OperationIterator manages a stream of *longrunningpb.Operation. +type OperationIterator struct { + items []*longrunningpb.Operation + pageInfo *iterator.PageInfo + nextFunc func() error + + // Response is the raw response for the current page. + // It must be cast to the RPC response type. + // Calling Next() or InternalFetch() updates this value. + Response interface{} + + // InternalFetch is for use by the Google Cloud Libraries only. + // It is not part of the stable interface of this package. + // + // InternalFetch returns results from a single call to the underlying RPC. + // The number of results is no greater than pageSize. + // If there are no more results, nextPageToken is empty and err is nil. + InternalFetch func(pageSize int, pageToken string) (results []*longrunningpb.Operation, nextPageToken string, err error) +} + +// PageInfo supports pagination. See the [google.golang.org/api/iterator] package for details. +func (it *OperationIterator) PageInfo() *iterator.PageInfo { + return it.pageInfo +} + +// Next returns the next result. Its second return value is iterator.Done if there are no more +// results. Once Next returns Done, all subsequent calls will return Done. +func (it *OperationIterator) Next() (*longrunningpb.Operation, error) { + var item *longrunningpb.Operation + if err := it.nextFunc(); err != nil { + return item, err + } + item = it.items[0] + it.items = it.items[1:] + return item, nil +} + +func (it *OperationIterator) bufLen() int { + return len(it.items) +} + +func (it *OperationIterator) takeBuf() interface{} { + b := it.items + it.items = nil + return b +} diff --git a/cloudsecuritycompliance/apiv1/auxiliary_go123.go b/cloudsecuritycompliance/apiv1/auxiliary_go123.go new file mode 100644 index 000000000000..7aabab557de3 --- /dev/null +++ b/cloudsecuritycompliance/apiv1/auxiliary_go123.go @@ -0,0 +1,88 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +//go:build go1.23 + +package cloudsecuritycompliance + +import ( + "iter" + + cloudsecuritycompliancepb "cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" + "github.com/googleapis/gax-go/v2/iterator" + locationpb "google.golang.org/genproto/googleapis/cloud/location" +) + +// All returns an iterator. If an error is returned by the iterator, the +// iterator will stop after that iteration. +func (it *CloudControlDeploymentIterator) All() iter.Seq2[*cloudsecuritycompliancepb.CloudControlDeployment, error] { + return iterator.RangeAdapter(it.Next) +} + +// All returns an iterator. If an error is returned by the iterator, the +// iterator will stop after that iteration. +func (it *CloudControlIterator) All() iter.Seq2[*cloudsecuritycompliancepb.CloudControl, error] { + return iterator.RangeAdapter(it.Next) +} + +// All returns an iterator. If an error is returned by the iterator, the +// iterator will stop after that iteration. +func (it *ControlComplianceSummaryIterator) All() iter.Seq2[*cloudsecuritycompliancepb.ControlComplianceSummary, error] { + return iterator.RangeAdapter(it.Next) +} + +// All returns an iterator. If an error is returned by the iterator, the +// iterator will stop after that iteration. +func (it *FindingSummaryIterator) All() iter.Seq2[*cloudsecuritycompliancepb.FindingSummary, error] { + return iterator.RangeAdapter(it.Next) +} + +// All returns an iterator. If an error is returned by the iterator, the +// iterator will stop after that iteration. +func (it *FrameworkAuditIterator) All() iter.Seq2[*cloudsecuritycompliancepb.FrameworkAudit, error] { + return iterator.RangeAdapter(it.Next) +} + +// All returns an iterator. If an error is returned by the iterator, the +// iterator will stop after that iteration. +func (it *FrameworkComplianceSummaryIterator) All() iter.Seq2[*cloudsecuritycompliancepb.FrameworkComplianceSummary, error] { + return iterator.RangeAdapter(it.Next) +} + +// All returns an iterator. If an error is returned by the iterator, the +// iterator will stop after that iteration. +func (it *FrameworkDeploymentIterator) All() iter.Seq2[*cloudsecuritycompliancepb.FrameworkDeployment, error] { + return iterator.RangeAdapter(it.Next) +} + +// All returns an iterator. If an error is returned by the iterator, the +// iterator will stop after that iteration. +func (it *FrameworkIterator) All() iter.Seq2[*cloudsecuritycompliancepb.Framework, error] { + return iterator.RangeAdapter(it.Next) +} + +// All returns an iterator. If an error is returned by the iterator, the +// iterator will stop after that iteration. +func (it *LocationIterator) All() iter.Seq2[*locationpb.Location, error] { + return iterator.RangeAdapter(it.Next) +} + +// All returns an iterator. If an error is returned by the iterator, the +// iterator will stop after that iteration. +func (it *OperationIterator) All() iter.Seq2[*longrunningpb.Operation, error] { + return iterator.RangeAdapter(it.Next) +} diff --git a/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb/audit.pb.go b/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb/audit.pb.go new file mode 100644 index 000000000000..77d5c83f1d37 --- /dev/null +++ b/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb/audit.pb.go @@ -0,0 +1,2159 @@ +// Copyright 2025 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 +// +// http://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. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.35.2 +// protoc v4.25.7 +// source: google/cloud/cloudsecuritycompliance/v1/audit.proto + +package cloudsecuritycompliancepb + +import ( + reflect "reflect" + sync "sync" + + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" + _ "google.golang.org/genproto/googleapis/api/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// The state of compliance after evaluation is complete. +type ComplianceState int32 + +const ( + // Default value. This value is unused. + ComplianceState_COMPLIANCE_STATE_UNSPECIFIED ComplianceState = 0 + // The resource is compliant. + ComplianceState_COMPLIANT ComplianceState = 1 + // The resource has a violation. + ComplianceState_VIOLATION ComplianceState = 2 + // The resource requires manual review from you. + ComplianceState_MANUAL_REVIEW_NEEDED ComplianceState = 3 + // An error occurred while computing the resource status. + ComplianceState_ERROR ComplianceState = 4 + // The resource can't be audited. + ComplianceState_AUDIT_NOT_SUPPORTED ComplianceState = 5 +) + +// Enum value maps for ComplianceState. +var ( + ComplianceState_name = map[int32]string{ + 0: "COMPLIANCE_STATE_UNSPECIFIED", + 1: "COMPLIANT", + 2: "VIOLATION", + 3: "MANUAL_REVIEW_NEEDED", + 4: "ERROR", + 5: "AUDIT_NOT_SUPPORTED", + } + ComplianceState_value = map[string]int32{ + "COMPLIANCE_STATE_UNSPECIFIED": 0, + "COMPLIANT": 1, + "VIOLATION": 2, + "MANUAL_REVIEW_NEEDED": 3, + "ERROR": 4, + "AUDIT_NOT_SUPPORTED": 5, + } +) + +func (x ComplianceState) Enum() *ComplianceState { + p := new(ComplianceState) + *p = x + return p +} + +func (x ComplianceState) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ComplianceState) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_cloudsecuritycompliance_v1_audit_proto_enumTypes[0].Descriptor() +} + +func (ComplianceState) Type() protoreflect.EnumType { + return &file_google_cloud_cloudsecuritycompliance_v1_audit_proto_enumTypes[0] +} + +func (x ComplianceState) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ComplianceState.Descriptor instead. +func (ComplianceState) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_audit_proto_rawDescGZIP(), []int{0} +} + +// The set of options for the audit scope report format. +type GenerateFrameworkAuditScopeReportRequest_Format int32 + +const ( + // Default value. This value is unused. + GenerateFrameworkAuditScopeReportRequest_FORMAT_UNSPECIFIED GenerateFrameworkAuditScopeReportRequest_Format = 0 + // The report format is the Open Document Format (ODF). + GenerateFrameworkAuditScopeReportRequest_ODF GenerateFrameworkAuditScopeReportRequest_Format = 1 +) + +// Enum value maps for GenerateFrameworkAuditScopeReportRequest_Format. +var ( + GenerateFrameworkAuditScopeReportRequest_Format_name = map[int32]string{ + 0: "FORMAT_UNSPECIFIED", + 1: "ODF", + } + GenerateFrameworkAuditScopeReportRequest_Format_value = map[string]int32{ + "FORMAT_UNSPECIFIED": 0, + "ODF": 1, + } +) + +func (x GenerateFrameworkAuditScopeReportRequest_Format) Enum() *GenerateFrameworkAuditScopeReportRequest_Format { + p := new(GenerateFrameworkAuditScopeReportRequest_Format) + *p = x + return p +} + +func (x GenerateFrameworkAuditScopeReportRequest_Format) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (GenerateFrameworkAuditScopeReportRequest_Format) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_cloudsecuritycompliance_v1_audit_proto_enumTypes[1].Descriptor() +} + +func (GenerateFrameworkAuditScopeReportRequest_Format) Type() protoreflect.EnumType { + return &file_google_cloud_cloudsecuritycompliance_v1_audit_proto_enumTypes[1] +} + +func (x GenerateFrameworkAuditScopeReportRequest_Format) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use GenerateFrameworkAuditScopeReportRequest_Format.Descriptor instead. +func (GenerateFrameworkAuditScopeReportRequest_Format) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_audit_proto_rawDescGZIP(), []int{0, 0} +} + +// The set of options for the framework audit format. +type BucketDestination_Format int32 + +const ( + // Default value. This value is unused. + BucketDestination_FORMAT_UNSPECIFIED BucketDestination_Format = 0 + // The format for the framework audit report is Open Document. + BucketDestination_ODF BucketDestination_Format = 1 +) + +// Enum value maps for BucketDestination_Format. +var ( + BucketDestination_Format_name = map[int32]string{ + 0: "FORMAT_UNSPECIFIED", + 1: "ODF", + } + BucketDestination_Format_value = map[string]int32{ + "FORMAT_UNSPECIFIED": 0, + "ODF": 1, + } +) + +func (x BucketDestination_Format) Enum() *BucketDestination_Format { + p := new(BucketDestination_Format) + *p = x + return p +} + +func (x BucketDestination_Format) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (BucketDestination_Format) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_cloudsecuritycompliance_v1_audit_proto_enumTypes[2].Descriptor() +} + +func (BucketDestination_Format) Type() protoreflect.EnumType { + return &file_google_cloud_cloudsecuritycompliance_v1_audit_proto_enumTypes[2] +} + +func (x BucketDestination_Format) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use BucketDestination_Format.Descriptor instead. +func (BucketDestination_Format) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_audit_proto_rawDescGZIP(), []int{5, 0} +} + +// The state of the framework audit. +type FrameworkAudit_State int32 + +const ( + // Default value. This value is unused. + FrameworkAudit_STATE_UNSPECIFIED FrameworkAudit_State = 0 + // The audit is scheduled. + FrameworkAudit_SCHEDULED FrameworkAudit_State = 1 + // The audit is running. + FrameworkAudit_RUNNING FrameworkAudit_State = 2 + // The audit results are being uploaded. + FrameworkAudit_UPLOADING FrameworkAudit_State = 3 + // The audit failed. + FrameworkAudit_FAILED FrameworkAudit_State = 4 + // The audit completed successfully. + FrameworkAudit_SUCCEEDED FrameworkAudit_State = 5 +) + +// Enum value maps for FrameworkAudit_State. +var ( + FrameworkAudit_State_name = map[int32]string{ + 0: "STATE_UNSPECIFIED", + 1: "SCHEDULED", + 2: "RUNNING", + 3: "UPLOADING", + 4: "FAILED", + 5: "SUCCEEDED", + } + FrameworkAudit_State_value = map[string]int32{ + "STATE_UNSPECIFIED": 0, + "SCHEDULED": 1, + "RUNNING": 2, + "UPLOADING": 3, + "FAILED": 4, + "SUCCEEDED": 5, + } +) + +func (x FrameworkAudit_State) Enum() *FrameworkAudit_State { + p := new(FrameworkAudit_State) + *p = x + return p +} + +func (x FrameworkAudit_State) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (FrameworkAudit_State) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_cloudsecuritycompliance_v1_audit_proto_enumTypes[3].Descriptor() +} + +func (FrameworkAudit_State) Type() protoreflect.EnumType { + return &file_google_cloud_cloudsecuritycompliance_v1_audit_proto_enumTypes[3] +} + +func (x FrameworkAudit_State) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use FrameworkAudit_State.Descriptor instead. +func (FrameworkAudit_State) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_audit_proto_rawDescGZIP(), []int{6, 0} +} + +// The request message for [GenerateFrameworkAuditScopeReport][]. +type GenerateFrameworkAuditScopeReportRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The organization, folder or project for the audit report. + // + // Supported formats are the following: + // + // * `projects/{project_id}/locations/{location}` + // * `folders/{folder_id}/locations/{location}` + // * `organizations/{organization_id}/locations/{location}` + Scope string `protobuf:"bytes,1,opt,name=scope,proto3" json:"scope,omitempty"` + // Required. The format that the scope report bytes is returned in. + ReportFormat GenerateFrameworkAuditScopeReportRequest_Format `protobuf:"varint,2,opt,name=report_format,json=reportFormat,proto3,enum=google.cloud.cloudsecuritycompliance.v1.GenerateFrameworkAuditScopeReportRequest_Format" json:"report_format,omitempty"` + // Required. The compliance framework that the scope report is generated for. + ComplianceFramework string `protobuf:"bytes,3,opt,name=compliance_framework,json=complianceFramework,proto3" json:"compliance_framework,omitempty"` +} + +func (x *GenerateFrameworkAuditScopeReportRequest) Reset() { + *x = GenerateFrameworkAuditScopeReportRequest{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_audit_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GenerateFrameworkAuditScopeReportRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenerateFrameworkAuditScopeReportRequest) ProtoMessage() {} + +func (x *GenerateFrameworkAuditScopeReportRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_audit_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenerateFrameworkAuditScopeReportRequest.ProtoReflect.Descriptor instead. +func (*GenerateFrameworkAuditScopeReportRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_audit_proto_rawDescGZIP(), []int{0} +} + +func (x *GenerateFrameworkAuditScopeReportRequest) GetScope() string { + if x != nil { + return x.Scope + } + return "" +} + +func (x *GenerateFrameworkAuditScopeReportRequest) GetReportFormat() GenerateFrameworkAuditScopeReportRequest_Format { + if x != nil { + return x.ReportFormat + } + return GenerateFrameworkAuditScopeReportRequest_FORMAT_UNSPECIFIED +} + +func (x *GenerateFrameworkAuditScopeReportRequest) GetComplianceFramework() string { + if x != nil { + return x.ComplianceFramework + } + return "" +} + +// The response message for [GenerateFrameworkAuditScopeReport][]. +type GenerateFrameworkAuditScopeReportResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The set of options that the audit scope report is exported in. + // + // Types that are assignable to AuditReport: + // + // *GenerateFrameworkAuditScopeReportResponse_ScopeReportContents + AuditReport isGenerateFrameworkAuditScopeReportResponse_AuditReport `protobuf_oneof:"audit_report"` + // Identifier. The name of the audit report, in the format that was + // given in the request. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Required. The compliance framework that the audit scope report is generated + // for. + ComplianceFramework string `protobuf:"bytes,2,opt,name=compliance_framework,json=complianceFramework,proto3" json:"compliance_framework,omitempty"` +} + +func (x *GenerateFrameworkAuditScopeReportResponse) Reset() { + *x = GenerateFrameworkAuditScopeReportResponse{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_audit_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GenerateFrameworkAuditScopeReportResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenerateFrameworkAuditScopeReportResponse) ProtoMessage() {} + +func (x *GenerateFrameworkAuditScopeReportResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_audit_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenerateFrameworkAuditScopeReportResponse.ProtoReflect.Descriptor instead. +func (*GenerateFrameworkAuditScopeReportResponse) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_audit_proto_rawDescGZIP(), []int{1} +} + +func (m *GenerateFrameworkAuditScopeReportResponse) GetAuditReport() isGenerateFrameworkAuditScopeReportResponse_AuditReport { + if m != nil { + return m.AuditReport + } + return nil +} + +func (x *GenerateFrameworkAuditScopeReportResponse) GetScopeReportContents() []byte { + if x, ok := x.GetAuditReport().(*GenerateFrameworkAuditScopeReportResponse_ScopeReportContents); ok { + return x.ScopeReportContents + } + return nil +} + +func (x *GenerateFrameworkAuditScopeReportResponse) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *GenerateFrameworkAuditScopeReportResponse) GetComplianceFramework() string { + if x != nil { + return x.ComplianceFramework + } + return "" +} + +type isGenerateFrameworkAuditScopeReportResponse_AuditReport interface { + isGenerateFrameworkAuditScopeReportResponse_AuditReport() +} + +type GenerateFrameworkAuditScopeReportResponse_ScopeReportContents struct { + // The audit scope report content in byte format. + ScopeReportContents []byte `protobuf:"bytes,3,opt,name=scope_report_contents,json=scopeReportContents,proto3,oneof"` +} + +func (*GenerateFrameworkAuditScopeReportResponse_ScopeReportContents) isGenerateFrameworkAuditScopeReportResponse_AuditReport() { +} + +// Additional information for an audit operation. +type ReportSummary struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. The total number of checks. + TotalCount int32 `protobuf:"varint,1,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty"` + // Output only. The number of compliant checks. + CompliantCount int32 `protobuf:"varint,2,opt,name=compliant_count,json=compliantCount,proto3" json:"compliant_count,omitempty"` + // Output only. The number of checks with violations. + ViolationCount int32 `protobuf:"varint,3,opt,name=violation_count,json=violationCount,proto3" json:"violation_count,omitempty"` + // Output only. The number of checks with "manual review needed" status. + ManualReviewNeededCount int32 `protobuf:"varint,4,opt,name=manual_review_needed_count,json=manualReviewNeededCount,proto3" json:"manual_review_needed_count,omitempty"` + // Output only. The number of checks that can't be performed due to errors. + ErrorCount int32 `protobuf:"varint,5,opt,name=error_count,json=errorCount,proto3" json:"error_count,omitempty"` +} + +func (x *ReportSummary) Reset() { + *x = ReportSummary{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_audit_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReportSummary) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReportSummary) ProtoMessage() {} + +func (x *ReportSummary) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_audit_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReportSummary.ProtoReflect.Descriptor instead. +func (*ReportSummary) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_audit_proto_rawDescGZIP(), []int{2} +} + +func (x *ReportSummary) GetTotalCount() int32 { + if x != nil { + return x.TotalCount + } + return 0 +} + +func (x *ReportSummary) GetCompliantCount() int32 { + if x != nil { + return x.CompliantCount + } + return 0 +} + +func (x *ReportSummary) GetViolationCount() int32 { + if x != nil { + return x.ViolationCount + } + return 0 +} + +func (x *ReportSummary) GetManualReviewNeededCount() int32 { + if x != nil { + return x.ManualReviewNeededCount + } + return 0 +} + +func (x *ReportSummary) GetErrorCount() int32 { + if x != nil { + return x.ErrorCount + } + return 0 +} + +// The request message for [CreateFrameworkAudit][]. +type CreateFrameworkAuditRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The parent resource where this framework audit is created. + // + // Supported formats are the following: + // + // * `organizations/{organization_id}/locations/{location}` + // * `folders/{folder_id}/locations/{location}` + // * `projects/{project_id}/locations/{location}` + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Optional. The ID to use for the framework audit. The ID becomes the final + // component of the framework audit's full resource name. + // + // The ID must be between 4-63 characters, and valid characters + // are `\[a-z][0-9]-\`. + FrameworkAuditId string `protobuf:"bytes,2,opt,name=framework_audit_id,json=frameworkAuditId,proto3" json:"framework_audit_id,omitempty"` + // Required. The framework audit to create. + FrameworkAudit *FrameworkAudit `protobuf:"bytes,3,opt,name=framework_audit,json=frameworkAudit,proto3" json:"framework_audit,omitempty"` +} + +func (x *CreateFrameworkAuditRequest) Reset() { + *x = CreateFrameworkAuditRequest{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_audit_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateFrameworkAuditRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateFrameworkAuditRequest) ProtoMessage() {} + +func (x *CreateFrameworkAuditRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_audit_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateFrameworkAuditRequest.ProtoReflect.Descriptor instead. +func (*CreateFrameworkAuditRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_audit_proto_rawDescGZIP(), []int{3} +} + +func (x *CreateFrameworkAuditRequest) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +func (x *CreateFrameworkAuditRequest) GetFrameworkAuditId() string { + if x != nil { + return x.FrameworkAuditId + } + return "" +} + +func (x *CreateFrameworkAuditRequest) GetFrameworkAudit() *FrameworkAudit { + if x != nil { + return x.FrameworkAudit + } + return nil +} + +// A destination for the framework audit. +type FrameworkAuditDestination struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The type of destination. + // + // Types that are assignable to DestinationType: + // + // *FrameworkAuditDestination_Bucket + DestinationType isFrameworkAuditDestination_DestinationType `protobuf_oneof:"destination_type"` +} + +func (x *FrameworkAuditDestination) Reset() { + *x = FrameworkAuditDestination{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_audit_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FrameworkAuditDestination) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FrameworkAuditDestination) ProtoMessage() {} + +func (x *FrameworkAuditDestination) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_audit_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FrameworkAuditDestination.ProtoReflect.Descriptor instead. +func (*FrameworkAuditDestination) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_audit_proto_rawDescGZIP(), []int{4} +} + +func (m *FrameworkAuditDestination) GetDestinationType() isFrameworkAuditDestination_DestinationType { + if m != nil { + return m.DestinationType + } + return nil +} + +func (x *FrameworkAuditDestination) GetBucket() *BucketDestination { + if x, ok := x.GetDestinationType().(*FrameworkAuditDestination_Bucket); ok { + return x.Bucket + } + return nil +} + +type isFrameworkAuditDestination_DestinationType interface { + isFrameworkAuditDestination_DestinationType() +} + +type FrameworkAuditDestination_Bucket struct { + // The Cloud Storage bucket destination. + Bucket *BucketDestination `protobuf:"bytes,1,opt,name=bucket,proto3,oneof"` +} + +func (*FrameworkAuditDestination_Bucket) isFrameworkAuditDestination_DestinationType() {} + +// A Cloud Storage bucket destination. +type BucketDestination struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The URI of the Cloud Storage bucket. + BucketUri string `protobuf:"bytes,1,opt,name=bucket_uri,json=bucketUri,proto3" json:"bucket_uri,omitempty"` + // Optional. The format of the framework audit. + FrameworkAuditFormat BucketDestination_Format `protobuf:"varint,3,opt,name=framework_audit_format,json=frameworkAuditFormat,proto3,enum=google.cloud.cloudsecuritycompliance.v1.BucketDestination_Format" json:"framework_audit_format,omitempty"` +} + +func (x *BucketDestination) Reset() { + *x = BucketDestination{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_audit_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BucketDestination) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BucketDestination) ProtoMessage() {} + +func (x *BucketDestination) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_audit_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BucketDestination.ProtoReflect.Descriptor instead. +func (*BucketDestination) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_audit_proto_rawDescGZIP(), []int{5} +} + +func (x *BucketDestination) GetBucketUri() string { + if x != nil { + return x.BucketUri + } + return "" +} + +func (x *BucketDestination) GetFrameworkAuditFormat() BucketDestination_Format { + if x != nil { + return x.FrameworkAuditFormat + } + return BucketDestination_FORMAT_UNSPECIFIED +} + +// A framework audit. +type FrameworkAudit struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. Identifier. The name of the framework audit. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Output only. The ID of the framework audit. + FrameworkAuditId string `protobuf:"bytes,2,opt,name=framework_audit_id,json=frameworkAuditId,proto3" json:"framework_audit_id,omitempty"` + // Output only. The compliance framework used for the audit. + ComplianceFramework string `protobuf:"bytes,3,opt,name=compliance_framework,json=complianceFramework,proto3" json:"compliance_framework,omitempty"` + // Output only. The scope of the audit. + Scope string `protobuf:"bytes,4,opt,name=scope,proto3" json:"scope,omitempty"` + // Required. The destination for the audit reports. + FrameworkAuditDestination *FrameworkAuditDestination `protobuf:"bytes,5,opt,name=framework_audit_destination,json=frameworkAuditDestination,proto3" json:"framework_audit_destination,omitempty"` + // Output only. The time that the audit started. + StartTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` + // Output only. The time that the audit finished. + FinishTime *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=finish_time,json=finishTime,proto3" json:"finish_time,omitempty"` + // Output only. The overall compliance state of the audit. + ComplianceState ComplianceState `protobuf:"varint,8,opt,name=compliance_state,json=complianceState,proto3,enum=google.cloud.cloudsecuritycompliance.v1.ComplianceState" json:"compliance_state,omitempty"` + // Output only. The summary of the report. + ReportSummary *ReportSummary `protobuf:"bytes,9,opt,name=report_summary,json=reportSummary,proto3" json:"report_summary,omitempty"` + // Optional. The details for the cloud control groups within this audit. + CloudControlGroupAuditDetails []*CloudControlGroupAuditDetails `protobuf:"bytes,10,rep,name=cloud_control_group_audit_details,json=cloudControlGroupAuditDetails,proto3" json:"cloud_control_group_audit_details,omitempty"` + // Optional. The details for the cloud controls within this audit. + CloudControlAuditDetails []*CloudControlAuditDetails `protobuf:"bytes,11,rep,name=cloud_control_audit_details,json=cloudControlAuditDetails,proto3" json:"cloud_control_audit_details,omitempty"` + // Output only. The ID of the long-running operation. + OperationId string `protobuf:"bytes,12,opt,name=operation_id,json=operationId,proto3" json:"operation_id,omitempty"` + // Output only. The framework audit state of the audit. + State FrameworkAudit_State `protobuf:"varint,13,opt,name=state,proto3,enum=google.cloud.cloudsecuritycompliance.v1.FrameworkAudit_State" json:"state,omitempty"` +} + +func (x *FrameworkAudit) Reset() { + *x = FrameworkAudit{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_audit_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FrameworkAudit) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FrameworkAudit) ProtoMessage() {} + +func (x *FrameworkAudit) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_audit_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FrameworkAudit.ProtoReflect.Descriptor instead. +func (*FrameworkAudit) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_audit_proto_rawDescGZIP(), []int{6} +} + +func (x *FrameworkAudit) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *FrameworkAudit) GetFrameworkAuditId() string { + if x != nil { + return x.FrameworkAuditId + } + return "" +} + +func (x *FrameworkAudit) GetComplianceFramework() string { + if x != nil { + return x.ComplianceFramework + } + return "" +} + +func (x *FrameworkAudit) GetScope() string { + if x != nil { + return x.Scope + } + return "" +} + +func (x *FrameworkAudit) GetFrameworkAuditDestination() *FrameworkAuditDestination { + if x != nil { + return x.FrameworkAuditDestination + } + return nil +} + +func (x *FrameworkAudit) GetStartTime() *timestamppb.Timestamp { + if x != nil { + return x.StartTime + } + return nil +} + +func (x *FrameworkAudit) GetFinishTime() *timestamppb.Timestamp { + if x != nil { + return x.FinishTime + } + return nil +} + +func (x *FrameworkAudit) GetComplianceState() ComplianceState { + if x != nil { + return x.ComplianceState + } + return ComplianceState_COMPLIANCE_STATE_UNSPECIFIED +} + +func (x *FrameworkAudit) GetReportSummary() *ReportSummary { + if x != nil { + return x.ReportSummary + } + return nil +} + +func (x *FrameworkAudit) GetCloudControlGroupAuditDetails() []*CloudControlGroupAuditDetails { + if x != nil { + return x.CloudControlGroupAuditDetails + } + return nil +} + +func (x *FrameworkAudit) GetCloudControlAuditDetails() []*CloudControlAuditDetails { + if x != nil { + return x.CloudControlAuditDetails + } + return nil +} + +func (x *FrameworkAudit) GetOperationId() string { + if x != nil { + return x.OperationId + } + return "" +} + +func (x *FrameworkAudit) GetState() FrameworkAudit_State { + if x != nil { + return x.State + } + return FrameworkAudit_STATE_UNSPECIFIED +} + +// The request message for [ListFrameworkAudits][]. +type ListFrameworkAuditsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The parent resource where the framework audits are listed. + // + // Supported formats are the following: + // + // * `organizations/{organization_id}/locations/{location}` + // * `folders/{folder_id}/locations/{location}` + // * `projects/{project_id}/locations/{location}` + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Optional. The maximum number of framework audits to return. The service + // might return fewer audits than this value. If unspecified, a maximum of 10 + // framework audits are returned. The maximum value is 50; values above 50 are + // limited to 50. + PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + // Optional. The `next_page_token` value that's returned from a previous list + // request, if any. + PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` + // Optional. The filters to apply to the framework audits. + // Supported filters are `compliance_framework`, `compliance_state`, + // `create_time,` and `framework_audit_name`. If the filter is invalid, an + // invalid argument error is returned. + // For syntax details, see [AIP-160][https://google.aip.dev/160]. + Filter string `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"` +} + +func (x *ListFrameworkAuditsRequest) Reset() { + *x = ListFrameworkAuditsRequest{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_audit_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListFrameworkAuditsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListFrameworkAuditsRequest) ProtoMessage() {} + +func (x *ListFrameworkAuditsRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_audit_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListFrameworkAuditsRequest.ProtoReflect.Descriptor instead. +func (*ListFrameworkAuditsRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_audit_proto_rawDescGZIP(), []int{7} +} + +func (x *ListFrameworkAuditsRequest) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +func (x *ListFrameworkAuditsRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *ListFrameworkAuditsRequest) GetPageToken() string { + if x != nil { + return x.PageToken + } + return "" +} + +func (x *ListFrameworkAuditsRequest) GetFilter() string { + if x != nil { + return x.Filter + } + return "" +} + +// The response message for [ListFrameworkAudits][]. +type ListFrameworkAuditsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The framework audits. + FrameworkAudits []*FrameworkAudit `protobuf:"bytes,1,rep,name=framework_audits,json=frameworkAudits,proto3" json:"framework_audits,omitempty"` + // A token, which you can send as the `page_token` to retrieve the next page. + // If this field is omitted, there are no subsequent pages. + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` +} + +func (x *ListFrameworkAuditsResponse) Reset() { + *x = ListFrameworkAuditsResponse{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_audit_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListFrameworkAuditsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListFrameworkAuditsResponse) ProtoMessage() {} + +func (x *ListFrameworkAuditsResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_audit_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListFrameworkAuditsResponse.ProtoReflect.Descriptor instead. +func (*ListFrameworkAuditsResponse) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_audit_proto_rawDescGZIP(), []int{8} +} + +func (x *ListFrameworkAuditsResponse) GetFrameworkAudits() []*FrameworkAudit { + if x != nil { + return x.FrameworkAudits + } + return nil +} + +func (x *ListFrameworkAuditsResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken + } + return "" +} + +// The request message for [GetFrameworkAudit][]. +type GetFrameworkAuditRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The name of the framework audit to retrieve. + // + // Supported formats are the following: + // + // * `organizations/{organization_id}/locations/{location}/frameworkAudits/{frameworkAuditName}` + // * `folders/{folder_id}/locations/{location}/frameworkAudits/{frameworkAuditName}` + // * `projects/{project_id}/locations/{location}/frameworkAudits/{frameworkAuditName}` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *GetFrameworkAuditRequest) Reset() { + *x = GetFrameworkAuditRequest{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_audit_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetFrameworkAuditRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetFrameworkAuditRequest) ProtoMessage() {} + +func (x *GetFrameworkAuditRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_audit_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetFrameworkAuditRequest.ProtoReflect.Descriptor instead. +func (*GetFrameworkAuditRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_audit_proto_rawDescGZIP(), []int{9} +} + +func (x *GetFrameworkAuditRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// The details for a cloud control group. +type CloudControlGroupAuditDetails struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. The ID of the cloud control group. + CloudControlGroupId string `protobuf:"bytes,1,opt,name=cloud_control_group_id,json=cloudControlGroupId,proto3" json:"cloud_control_group_id,omitempty"` + // Output only. The display name of the cloud control group. + DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + // Output only. The description of the cloud control group. + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + // Output only. The responsibility type. + ResponsibilityType string `protobuf:"bytes,4,opt,name=responsibility_type,json=responsibilityType,proto3" json:"responsibility_type,omitempty"` + // Output only. The description of Google's responsibility. + GoogleResponsibilityDescription string `protobuf:"bytes,5,opt,name=google_responsibility_description,json=googleResponsibilityDescription,proto3" json:"google_responsibility_description,omitempty"` + // Output only. The implementation of Google's responsibility. + GoogleResponsibilityImplementation string `protobuf:"bytes,6,opt,name=google_responsibility_implementation,json=googleResponsibilityImplementation,proto3" json:"google_responsibility_implementation,omitempty"` + // Output only. The description of your responsibility. + CustomerResponsibilityDescription string `protobuf:"bytes,7,opt,name=customer_responsibility_description,json=customerResponsibilityDescription,proto3" json:"customer_responsibility_description,omitempty"` + // Output only. The implementation of your responsibility. + CustomerResponsibilityImplementation string `protobuf:"bytes,8,opt,name=customer_responsibility_implementation,json=customerResponsibilityImplementation,proto3" json:"customer_responsibility_implementation,omitempty"` + // Output only. The compliance state of the control group. + ComplianceState ComplianceState `protobuf:"varint,9,opt,name=compliance_state,json=complianceState,proto3,enum=google.cloud.cloudsecuritycompliance.v1.ComplianceState" json:"compliance_state,omitempty"` + // Output only. The ID of the regulatory control. + ControlId string `protobuf:"bytes,10,opt,name=control_id,json=controlId,proto3" json:"control_id,omitempty"` + // Output only. The control family. + ControlFamily *ControlFamily `protobuf:"bytes,11,opt,name=control_family,json=controlFamily,proto3" json:"control_family,omitempty"` + // Output only. The details for the cloud controls within this group. + CloudControlDetails []*CloudControlAuditDetails `protobuf:"bytes,12,rep,name=cloud_control_details,json=cloudControlDetails,proto3" json:"cloud_control_details,omitempty"` + // Output only. The summary of the report. + ReportSummary *ReportSummary `protobuf:"bytes,13,opt,name=report_summary,json=reportSummary,proto3" json:"report_summary,omitempty"` +} + +func (x *CloudControlGroupAuditDetails) Reset() { + *x = CloudControlGroupAuditDetails{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_audit_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CloudControlGroupAuditDetails) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CloudControlGroupAuditDetails) ProtoMessage() {} + +func (x *CloudControlGroupAuditDetails) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_audit_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CloudControlGroupAuditDetails.ProtoReflect.Descriptor instead. +func (*CloudControlGroupAuditDetails) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_audit_proto_rawDescGZIP(), []int{10} +} + +func (x *CloudControlGroupAuditDetails) GetCloudControlGroupId() string { + if x != nil { + return x.CloudControlGroupId + } + return "" +} + +func (x *CloudControlGroupAuditDetails) GetDisplayName() string { + if x != nil { + return x.DisplayName + } + return "" +} + +func (x *CloudControlGroupAuditDetails) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *CloudControlGroupAuditDetails) GetResponsibilityType() string { + if x != nil { + return x.ResponsibilityType + } + return "" +} + +func (x *CloudControlGroupAuditDetails) GetGoogleResponsibilityDescription() string { + if x != nil { + return x.GoogleResponsibilityDescription + } + return "" +} + +func (x *CloudControlGroupAuditDetails) GetGoogleResponsibilityImplementation() string { + if x != nil { + return x.GoogleResponsibilityImplementation + } + return "" +} + +func (x *CloudControlGroupAuditDetails) GetCustomerResponsibilityDescription() string { + if x != nil { + return x.CustomerResponsibilityDescription + } + return "" +} + +func (x *CloudControlGroupAuditDetails) GetCustomerResponsibilityImplementation() string { + if x != nil { + return x.CustomerResponsibilityImplementation + } + return "" +} + +func (x *CloudControlGroupAuditDetails) GetComplianceState() ComplianceState { + if x != nil { + return x.ComplianceState + } + return ComplianceState_COMPLIANCE_STATE_UNSPECIFIED +} + +func (x *CloudControlGroupAuditDetails) GetControlId() string { + if x != nil { + return x.ControlId + } + return "" +} + +func (x *CloudControlGroupAuditDetails) GetControlFamily() *ControlFamily { + if x != nil { + return x.ControlFamily + } + return nil +} + +func (x *CloudControlGroupAuditDetails) GetCloudControlDetails() []*CloudControlAuditDetails { + if x != nil { + return x.CloudControlDetails + } + return nil +} + +func (x *CloudControlGroupAuditDetails) GetReportSummary() *ReportSummary { + if x != nil { + return x.ReportSummary + } + return nil +} + +// The details for a finding. +type FindingDetails struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. The name of the finding. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Output only. The compliance state of the finding. + ComplianceState ComplianceState `protobuf:"varint,2,opt,name=compliance_state,json=complianceState,proto3,enum=google.cloud.cloudsecuritycompliance.v1.ComplianceState" json:"compliance_state,omitempty"` + // Output only. The observation details for the finding. + Observation *ObservationDetails `protobuf:"bytes,3,opt,name=observation,proto3" json:"observation,omitempty"` + // Output only. The evidence details for the finding. + Evidence *EvidenceDetails `protobuf:"bytes,4,opt,name=evidence,proto3" json:"evidence,omitempty"` +} + +func (x *FindingDetails) Reset() { + *x = FindingDetails{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_audit_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FindingDetails) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FindingDetails) ProtoMessage() {} + +func (x *FindingDetails) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_audit_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FindingDetails.ProtoReflect.Descriptor instead. +func (*FindingDetails) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_audit_proto_rawDescGZIP(), []int{11} +} + +func (x *FindingDetails) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *FindingDetails) GetComplianceState() ComplianceState { + if x != nil { + return x.ComplianceState + } + return ComplianceState_COMPLIANCE_STATE_UNSPECIFIED +} + +func (x *FindingDetails) GetObservation() *ObservationDetails { + if x != nil { + return x.Observation + } + return nil +} + +func (x *FindingDetails) GetEvidence() *EvidenceDetails { + if x != nil { + return x.Evidence + } + return nil +} + +// The observation details for a finding. +type ObservationDetails struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. The current value. + CurrentValue string `protobuf:"bytes,1,opt,name=current_value,json=currentValue,proto3" json:"current_value,omitempty"` + // Optional. The expected value. + ExpectedValue string `protobuf:"bytes,2,opt,name=expected_value,json=expectedValue,proto3" json:"expected_value,omitempty"` + // Output only. Any guidance for the observation. + Guidance string `protobuf:"bytes,3,opt,name=guidance,proto3" json:"guidance,omitempty"` +} + +func (x *ObservationDetails) Reset() { + *x = ObservationDetails{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_audit_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ObservationDetails) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ObservationDetails) ProtoMessage() {} + +func (x *ObservationDetails) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_audit_proto_msgTypes[12] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ObservationDetails.ProtoReflect.Descriptor instead. +func (*ObservationDetails) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_audit_proto_rawDescGZIP(), []int{12} +} + +func (x *ObservationDetails) GetCurrentValue() string { + if x != nil { + return x.CurrentValue + } + return "" +} + +func (x *ObservationDetails) GetExpectedValue() string { + if x != nil { + return x.ExpectedValue + } + return "" +} + +func (x *ObservationDetails) GetGuidance() string { + if x != nil { + return x.Guidance + } + return "" +} + +// The evidence details for a finding. +type EvidenceDetails struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. The resource identifier. + Resource string `protobuf:"bytes,1,opt,name=resource,proto3" json:"resource,omitempty"` + // Output only. The service identifier. + Service string `protobuf:"bytes,2,opt,name=service,proto3" json:"service,omitempty"` + // Output only. The path to the evidence. + EvidencePath string `protobuf:"bytes,3,opt,name=evidence_path,json=evidencePath,proto3" json:"evidence_path,omitempty"` +} + +func (x *EvidenceDetails) Reset() { + *x = EvidenceDetails{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_audit_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *EvidenceDetails) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EvidenceDetails) ProtoMessage() {} + +func (x *EvidenceDetails) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_audit_proto_msgTypes[13] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EvidenceDetails.ProtoReflect.Descriptor instead. +func (*EvidenceDetails) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_audit_proto_rawDescGZIP(), []int{13} +} + +func (x *EvidenceDetails) GetResource() string { + if x != nil { + return x.Resource + } + return "" +} + +func (x *EvidenceDetails) GetService() string { + if x != nil { + return x.Service + } + return "" +} + +func (x *EvidenceDetails) GetEvidencePath() string { + if x != nil { + return x.EvidencePath + } + return "" +} + +// The details for a cloud control audit. +type CloudControlAuditDetails struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. The name of the cloud control. + CloudControl string `protobuf:"bytes,1,opt,name=cloud_control,json=cloudControl,proto3" json:"cloud_control,omitempty"` + // Output only. The ID of the cloud control. + CloudControlId string `protobuf:"bytes,2,opt,name=cloud_control_id,json=cloudControlId,proto3" json:"cloud_control_id,omitempty"` + // Output only. The description of the cloud control. + CloudControlDescription string `protobuf:"bytes,3,opt,name=cloud_control_description,json=cloudControlDescription,proto3" json:"cloud_control_description,omitempty"` + // Output only. The overall status of the findings for the control. + ComplianceState ComplianceState `protobuf:"varint,4,opt,name=compliance_state,json=complianceState,proto3,enum=google.cloud.cloudsecuritycompliance.v1.ComplianceState" json:"compliance_state,omitempty"` + // Output only. The summary of the report. + ReportSummary *ReportSummary `protobuf:"bytes,5,opt,name=report_summary,json=reportSummary,proto3" json:"report_summary,omitempty"` + // Output only. The findings for the control. + Findings []*FindingDetails `protobuf:"bytes,6,rep,name=findings,proto3" json:"findings,omitempty"` +} + +func (x *CloudControlAuditDetails) Reset() { + *x = CloudControlAuditDetails{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_audit_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CloudControlAuditDetails) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CloudControlAuditDetails) ProtoMessage() {} + +func (x *CloudControlAuditDetails) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_audit_proto_msgTypes[14] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CloudControlAuditDetails.ProtoReflect.Descriptor instead. +func (*CloudControlAuditDetails) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_audit_proto_rawDescGZIP(), []int{14} +} + +func (x *CloudControlAuditDetails) GetCloudControl() string { + if x != nil { + return x.CloudControl + } + return "" +} + +func (x *CloudControlAuditDetails) GetCloudControlId() string { + if x != nil { + return x.CloudControlId + } + return "" +} + +func (x *CloudControlAuditDetails) GetCloudControlDescription() string { + if x != nil { + return x.CloudControlDescription + } + return "" +} + +func (x *CloudControlAuditDetails) GetComplianceState() ComplianceState { + if x != nil { + return x.ComplianceState + } + return ComplianceState_COMPLIANCE_STATE_UNSPECIFIED +} + +func (x *CloudControlAuditDetails) GetReportSummary() *ReportSummary { + if x != nil { + return x.ReportSummary + } + return nil +} + +func (x *CloudControlAuditDetails) GetFindings() []*FindingDetails { + if x != nil { + return x.Findings + } + return nil +} + +var File_google_cloud_cloudsecuritycompliance_v1_audit_proto protoreflect.FileDescriptor + +var file_google_cloud_cloudsecuritycompliance_v1_audit_proto_rawDesc = []byte{ + 0x0a, 0x33, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, + 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x75, 0x64, 0x69, 0x74, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x27, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, + 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x1a, 0x1c, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x34, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2f, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xad, 0x02, + 0x0a, 0x28, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, + 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, 0x69, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x63, + 0x6f, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, + 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x82, 0x01, 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x58, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, + 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, + 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, 0x69, 0x74, 0x53, 0x63, + 0x6f, 0x70, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, 0x72, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x36, 0x0a, 0x14, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, + 0x72, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x13, 0x63, + 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, + 0x72, 0x6b, 0x22, 0x29, 0x0a, 0x06, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x16, 0x0a, 0x12, + 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x4f, 0x44, 0x46, 0x10, 0x01, 0x22, 0xd6, 0x04, + 0x0a, 0x29, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, + 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, 0x69, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x15, 0x73, + 0x63, 0x6f, 0x70, 0x65, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x13, 0x73, 0x63, + 0x6f, 0x70, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x73, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x03, 0xe0, 0x41, 0x08, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x14, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, + 0x72, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x13, 0x63, + 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, + 0x72, 0x6b, 0x3a, 0x91, 0x03, 0xea, 0x41, 0x8d, 0x03, 0x0a, 0x50, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, + 0x63, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, + 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, 0x69, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x73, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, + 0x64, 0x69, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, + 0x7b, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, + 0x6f, 0x72, 0x6b, 0x5f, 0x61, 0x75, 0x64, 0x69, 0x74, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x5f, + 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x7d, + 0x12, 0x7d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x7d, 0x2f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, + 0x69, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x7b, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, + 0x72, 0x6b, 0x5f, 0x61, 0x75, 0x64, 0x69, 0x74, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x5f, 0x72, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x7d, 0x2a, + 0x1a, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, 0x69, 0x74, 0x53, + 0x63, 0x6f, 0x70, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x32, 0x29, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, + 0x64, 0x69, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x61, 0x75, 0x64, 0x69, 0x74, 0x5f, + 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x22, 0xf9, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x24, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, + 0x41, 0x03, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2c, + 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x0f, + 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x76, 0x69, 0x6f, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x40, 0x0a, 0x1a, 0x6d, 0x61, + 0x6e, 0x75, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x6e, 0x65, 0x65, 0x64, + 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, + 0xe0, 0x41, 0x03, 0x52, 0x17, 0x6d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x52, 0x65, 0x76, 0x69, 0x65, + 0x77, 0x4e, 0x65, 0x65, 0x64, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0b, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x05, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x22, 0x8e, 0x02, 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x72, 0x61, + 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, 0x69, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x55, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x3d, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x37, 0x12, 0x35, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, + 0x6e, 0x63, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, 0x69, + 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x31, 0x0a, 0x12, 0x66, 0x72, 0x61, + 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x61, 0x75, 0x64, 0x69, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, 0x66, 0x72, 0x61, 0x6d, + 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, 0x69, 0x74, 0x49, 0x64, 0x12, 0x65, 0x0a, 0x0f, + 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x61, 0x75, 0x64, 0x69, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, + 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, 0x69, 0x74, 0x42, 0x03, + 0xe0, 0x41, 0x02, 0x52, 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, + 0x64, 0x69, 0x74, 0x22, 0x85, 0x01, 0x0a, 0x19, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, + 0x6b, 0x41, 0x75, 0x64, 0x69, 0x74, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x54, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, + 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x12, 0x0a, 0x10, 0x64, 0x65, 0x73, 0x74, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xe0, 0x01, 0x0a, 0x11, + 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x22, 0x0a, 0x0a, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x75, 0x72, 0x69, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x62, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x55, 0x72, 0x69, 0x12, 0x7c, 0x0a, 0x16, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, + 0x72, 0x6b, 0x5f, 0x61, 0x75, 0x64, 0x69, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, + 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x14, 0x66, + 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, 0x69, 0x74, 0x46, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x22, 0x29, 0x0a, 0x06, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x16, 0x0a, + 0x12, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x4f, 0x44, 0x46, 0x10, 0x01, 0x22, 0x93, + 0x0b, 0x0a, 0x0e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, 0x69, + 0x74, 0x12, 0x1a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x06, 0xe0, 0x41, 0x08, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, + 0x12, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x61, 0x75, 0x64, 0x69, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x10, + 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, 0x69, 0x74, 0x49, 0x64, + 0x12, 0x36, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x66, + 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, + 0xe0, 0x41, 0x03, 0x52, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x46, + 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x73, 0x63, + 0x6f, 0x70, 0x65, 0x12, 0x87, 0x01, 0x0a, 0x1b, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, + 0x6b, 0x5f, 0x61, 0x75, 0x64, 0x69, 0x74, 0x5f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, + 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, + 0x69, 0x74, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, + 0x41, 0x02, 0x52, 0x19, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, + 0x69, 0x74, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, + 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, + 0x41, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, + 0x0b, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, + 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x68, 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, + 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, + 0x61, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x62, 0x0a, 0x0e, 0x72, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, + 0x72, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0d, + 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x95, 0x01, + 0x0a, 0x21, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x61, 0x75, 0x64, 0x69, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, + 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x75, 0x64, 0x69, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x1d, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x75, 0x64, 0x69, 0x74, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x85, 0x01, 0x0a, 0x1b, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x61, 0x75, 0x64, 0x69, 0x74, 0x5f, 0x64, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x41, 0x75, 0x64, 0x69, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x18, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x41, 0x75, 0x64, 0x69, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x26, 0x0a, + 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x58, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0d, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, + 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, + 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, 0x69, 0x74, 0x2e, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, + 0x64, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, + 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x0d, 0x0a, 0x09, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0b, + 0x0a, 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x55, + 0x50, 0x4c, 0x4f, 0x41, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, + 0x49, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x55, 0x43, 0x43, 0x45, 0x45, + 0x44, 0x45, 0x44, 0x10, 0x05, 0x3a, 0xfc, 0x01, 0xea, 0x41, 0xf8, 0x01, 0x0a, 0x35, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, + 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, + 0x64, 0x69, 0x74, 0x12, 0x49, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x66, 0x72, 0x61, + 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, 0x69, 0x74, 0x73, 0x2f, 0x7b, 0x66, 0x72, + 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x61, 0x75, 0x64, 0x69, 0x74, 0x7d, 0x12, 0x53, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x7d, 0x2f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, 0x69, 0x74, + 0x73, 0x2f, 0x7b, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x61, 0x75, 0x64, + 0x69, 0x74, 0x7d, 0x2a, 0x0f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, + 0x64, 0x69, 0x74, 0x73, 0x32, 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x41, + 0x75, 0x64, 0x69, 0x74, 0x22, 0xd6, 0x01, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x72, 0x61, + 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, 0x69, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x55, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x3d, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x37, 0x12, 0x35, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, + 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, + 0x69, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, + 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, + 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0xa9, 0x01, + 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x41, + 0x75, 0x64, 0x69, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x62, 0x0a, + 0x10, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x61, 0x75, 0x64, 0x69, 0x74, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, + 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, 0x69, 0x74, + 0x52, 0x0f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, 0x69, 0x74, + 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, + 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x6d, 0x0a, 0x18, 0x47, 0x65, 0x74, + 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, 0x69, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x51, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x3d, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x37, 0x0a, 0x35, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, + 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, + 0x69, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x88, 0x08, 0x0a, 0x1d, 0x43, 0x6c, 0x6f, + 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x75, + 0x64, 0x69, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x38, 0x0a, 0x16, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, + 0x13, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, + 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x13, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x69, 0x62, + 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x12, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x69, 0x62, + 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x4f, 0x0a, 0x21, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, + 0x74, 0x79, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x44, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x55, 0x0a, 0x24, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x69, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x79, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x22, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x69, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x79, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x53, 0x0a, 0x23, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x72, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, + 0xe0, 0x41, 0x03, 0x52, 0x21, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x44, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x59, 0x0a, 0x26, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x65, 0x72, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, + 0x79, 0x5f, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x24, 0x63, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x69, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x79, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x68, 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x5f, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0f, 0x63, 0x6f, 0x6d, 0x70, + 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x49, 0x64, 0x12, + 0x62, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, + 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, + 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x42, + 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x46, 0x61, 0x6d, + 0x69, 0x6c, 0x79, 0x12, 0x7a, 0x0a, 0x15, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x0c, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, + 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x6f, + 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x41, 0x75, 0x64, 0x69, 0x74, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x13, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, + 0x62, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, + 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, + 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x42, + 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x75, 0x6d, 0x6d, + 0x61, 0x72, 0x79, 0x22, 0xd2, 0x02, 0x0a, 0x0e, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x68, 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, + 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, + 0x61, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x62, 0x0a, 0x0b, 0x6f, 0x62, 0x73, + 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, + 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x03, + 0x52, 0x0b, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x59, 0x0a, + 0x08, 0x65, 0x76, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, + 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x69, 0x64, 0x65, 0x6e, + 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x08, + 0x65, 0x76, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x8b, 0x01, 0x0a, 0x12, 0x4f, 0x62, 0x73, + 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, + 0x28, 0x0a, 0x0d, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0c, 0x63, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2a, 0x0a, 0x0e, 0x65, 0x78, 0x70, + 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x64, 0x61, 0x6e, 0x63, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x08, 0x67, 0x75, + 0x69, 0x64, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x7b, 0x0a, 0x0f, 0x45, 0x76, 0x69, 0x64, 0x65, 0x6e, + 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x1f, 0x0a, 0x08, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, + 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x07, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, + 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0d, 0x65, 0x76, 0x69, + 0x64, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0c, 0x65, 0x76, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x50, + 0x61, 0x74, 0x68, 0x22, 0xdc, 0x03, 0x0a, 0x18, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x41, 0x75, 0x64, 0x69, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x12, 0x28, 0x0a, 0x0d, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0c, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x2d, 0x0a, 0x10, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x49, 0x64, 0x12, 0x3f, 0x0a, 0x19, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x03, 0x52, 0x17, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x44, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x68, 0x0a, 0x10, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, + 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, + 0xe0, 0x41, 0x03, 0x52, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x12, 0x62, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, + 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x75, 0x6d, + 0x6d, 0x61, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x58, 0x0a, 0x08, 0x66, 0x69, 0x6e, 0x64, + 0x69, 0x6e, 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, + 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x08, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x73, 0x2a, 0x8f, 0x01, 0x0a, 0x0f, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, + 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x1c, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x49, + 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x4d, 0x50, + 0x4c, 0x49, 0x41, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x56, 0x49, 0x4f, 0x4c, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x02, 0x12, 0x18, 0x0a, 0x14, 0x4d, 0x41, 0x4e, 0x55, 0x41, 0x4c, + 0x5f, 0x52, 0x45, 0x56, 0x49, 0x45, 0x57, 0x5f, 0x4e, 0x45, 0x45, 0x44, 0x45, 0x44, 0x10, 0x03, + 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x12, 0x17, 0x0a, 0x13, 0x41, + 0x55, 0x44, 0x49, 0x54, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, + 0x45, 0x44, 0x10, 0x05, 0x32, 0x9c, 0x0e, 0x0a, 0x05, 0x41, 0x75, 0x64, 0x69, 0x74, 0x12, 0xb3, + 0x04, 0x0a, 0x21, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, + 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, 0x69, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x12, 0x51, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, + 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, + 0x41, 0x75, 0x64, 0x69, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x52, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, + 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, + 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, 0x69, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe6, 0x02, 0xda, 0x41, + 0x28, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x2c, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x2c, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x5f, + 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xb4, 0x02, + 0x3a, 0x01, 0x2a, 0x5a, 0x64, 0x3a, 0x01, 0x2a, 0x22, 0x5f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x73, + 0x63, 0x6f, 0x70, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x66, 0x72, 0x61, + 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, 0x69, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, + 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x3a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, + 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, 0x69, 0x74, 0x53, 0x63, + 0x6f, 0x70, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5a, 0x69, 0x3a, 0x01, 0x2a, 0x22, 0x64, + 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, + 0x6b, 0x41, 0x75, 0x64, 0x69, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x73, 0x3a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, + 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, 0x69, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x22, 0x5e, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x73, 0x63, 0x6f, 0x70, 0x65, + 0x3d, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, + 0x6b, 0x41, 0x75, 0x64, 0x69, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x73, 0x3a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, + 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, 0x69, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x12, 0xd9, 0x03, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, + 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, 0x69, 0x74, 0x12, 0x44, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, + 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x72, + 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, 0x69, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, + 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x22, 0xdb, 0x02, 0xca, 0x41, 0x4b, 0x0a, 0x0e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, + 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, 0x69, 0x74, 0x12, 0x39, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, + 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0xda, 0x41, 0x29, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x66, 0x72, 0x61, + 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x61, 0x75, 0x64, 0x69, 0x74, 0x2c, 0x66, 0x72, 0x61, + 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x61, 0x75, 0x64, 0x69, 0x74, 0x5f, 0x69, 0x64, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0xda, 0x01, 0x3a, 0x0f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, + 0x6b, 0x5f, 0x61, 0x75, 0x64, 0x69, 0x74, 0x5a, 0x45, 0x3a, 0x0f, 0x66, 0x72, 0x61, 0x6d, 0x65, + 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x61, 0x75, 0x64, 0x69, 0x74, 0x22, 0x32, 0x2f, 0x76, 0x31, 0x2f, + 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x2f, + 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x66, + 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, 0x69, 0x74, 0x73, 0x5a, 0x46, + 0x3a, 0x0f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x61, 0x75, 0x64, 0x69, + 0x74, 0x22, 0x33, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, + 0x41, 0x75, 0x64, 0x69, 0x74, 0x73, 0x22, 0x38, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, + 0x2f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, 0x69, 0x74, 0x73, + 0x12, 0xda, 0x02, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, + 0x72, 0x6b, 0x41, 0x75, 0x64, 0x69, 0x74, 0x73, 0x12, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, + 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, + 0x41, 0x75, 0x64, 0x69, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x44, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, + 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x72, 0x61, 0x6d, + 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, 0x69, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0xb7, 0x01, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0xa7, 0x01, 0x5a, 0x34, 0x12, 0x32, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x2f, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x66, 0x72, 0x61, + 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, 0x69, 0x74, 0x73, 0x5a, 0x35, 0x12, 0x33, + 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x2a, 0x7d, 0x2f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, + 0x69, 0x74, 0x73, 0x12, 0x38, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, + 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x66, 0x72, + 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, 0x69, 0x74, 0x73, 0x12, 0xc7, 0x02, + 0x0a, 0x11, 0x47, 0x65, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, + 0x64, 0x69, 0x74, 0x12, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, + 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, 0x69, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, + 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, 0x69, 0x74, 0x22, + 0xb5, 0x01, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xa7, 0x01, + 0x5a, 0x34, 0x12, 0x32, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x66, 0x6f, + 0x6c, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x2a, 0x2f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, + 0x69, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x5a, 0x35, 0x12, 0x33, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, + 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x66, 0x72, 0x61, 0x6d, 0x65, + 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, 0x64, 0x69, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x38, 0x2f, + 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x75, + 0x64, 0x69, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x1a, 0x5a, 0xca, 0x41, 0x26, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, + 0x6e, 0x63, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, + 0x6f, 0x6d, 0xd2, 0x41, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x42, 0xa3, 0x02, 0x0a, 0x2b, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, + 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x42, 0x0a, 0x41, 0x75, 0x64, 0x69, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, + 0x01, 0x5a, 0x65, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, + 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2f, 0x61, + 0x70, 0x69, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, + 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x70, 0x62, 0x3b, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, + 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x70, 0x62, 0xaa, 0x02, 0x27, 0x47, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x65, 0x63, + 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, + 0x56, 0x31, 0xca, 0x02, 0x27, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, + 0x64, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, + 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x5c, 0x56, 0x31, 0xea, 0x02, 0x2a, 0x47, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x43, 0x6c, + 0x6f, 0x75, 0x64, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6d, 0x70, 0x6c, + 0x69, 0x61, 0x6e, 0x63, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, +} + +var ( + file_google_cloud_cloudsecuritycompliance_v1_audit_proto_rawDescOnce sync.Once + file_google_cloud_cloudsecuritycompliance_v1_audit_proto_rawDescData = file_google_cloud_cloudsecuritycompliance_v1_audit_proto_rawDesc +) + +func file_google_cloud_cloudsecuritycompliance_v1_audit_proto_rawDescGZIP() []byte { + file_google_cloud_cloudsecuritycompliance_v1_audit_proto_rawDescOnce.Do(func() { + file_google_cloud_cloudsecuritycompliance_v1_audit_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_cloudsecuritycompliance_v1_audit_proto_rawDescData) + }) + return file_google_cloud_cloudsecuritycompliance_v1_audit_proto_rawDescData +} + +var file_google_cloud_cloudsecuritycompliance_v1_audit_proto_enumTypes = make([]protoimpl.EnumInfo, 4) +var file_google_cloud_cloudsecuritycompliance_v1_audit_proto_msgTypes = make([]protoimpl.MessageInfo, 15) +var file_google_cloud_cloudsecuritycompliance_v1_audit_proto_goTypes = []any{ + (ComplianceState)(0), // 0: google.cloud.cloudsecuritycompliance.v1.ComplianceState + (GenerateFrameworkAuditScopeReportRequest_Format)(0), // 1: google.cloud.cloudsecuritycompliance.v1.GenerateFrameworkAuditScopeReportRequest.Format + (BucketDestination_Format)(0), // 2: google.cloud.cloudsecuritycompliance.v1.BucketDestination.Format + (FrameworkAudit_State)(0), // 3: google.cloud.cloudsecuritycompliance.v1.FrameworkAudit.State + (*GenerateFrameworkAuditScopeReportRequest)(nil), // 4: google.cloud.cloudsecuritycompliance.v1.GenerateFrameworkAuditScopeReportRequest + (*GenerateFrameworkAuditScopeReportResponse)(nil), // 5: google.cloud.cloudsecuritycompliance.v1.GenerateFrameworkAuditScopeReportResponse + (*ReportSummary)(nil), // 6: google.cloud.cloudsecuritycompliance.v1.ReportSummary + (*CreateFrameworkAuditRequest)(nil), // 7: google.cloud.cloudsecuritycompliance.v1.CreateFrameworkAuditRequest + (*FrameworkAuditDestination)(nil), // 8: google.cloud.cloudsecuritycompliance.v1.FrameworkAuditDestination + (*BucketDestination)(nil), // 9: google.cloud.cloudsecuritycompliance.v1.BucketDestination + (*FrameworkAudit)(nil), // 10: google.cloud.cloudsecuritycompliance.v1.FrameworkAudit + (*ListFrameworkAuditsRequest)(nil), // 11: google.cloud.cloudsecuritycompliance.v1.ListFrameworkAuditsRequest + (*ListFrameworkAuditsResponse)(nil), // 12: google.cloud.cloudsecuritycompliance.v1.ListFrameworkAuditsResponse + (*GetFrameworkAuditRequest)(nil), // 13: google.cloud.cloudsecuritycompliance.v1.GetFrameworkAuditRequest + (*CloudControlGroupAuditDetails)(nil), // 14: google.cloud.cloudsecuritycompliance.v1.CloudControlGroupAuditDetails + (*FindingDetails)(nil), // 15: google.cloud.cloudsecuritycompliance.v1.FindingDetails + (*ObservationDetails)(nil), // 16: google.cloud.cloudsecuritycompliance.v1.ObservationDetails + (*EvidenceDetails)(nil), // 17: google.cloud.cloudsecuritycompliance.v1.EvidenceDetails + (*CloudControlAuditDetails)(nil), // 18: google.cloud.cloudsecuritycompliance.v1.CloudControlAuditDetails + (*timestamppb.Timestamp)(nil), // 19: google.protobuf.Timestamp + (*ControlFamily)(nil), // 20: google.cloud.cloudsecuritycompliance.v1.ControlFamily + (*longrunningpb.Operation)(nil), // 21: google.longrunning.Operation +} +var file_google_cloud_cloudsecuritycompliance_v1_audit_proto_depIdxs = []int32{ + 1, // 0: google.cloud.cloudsecuritycompliance.v1.GenerateFrameworkAuditScopeReportRequest.report_format:type_name -> google.cloud.cloudsecuritycompliance.v1.GenerateFrameworkAuditScopeReportRequest.Format + 10, // 1: google.cloud.cloudsecuritycompliance.v1.CreateFrameworkAuditRequest.framework_audit:type_name -> google.cloud.cloudsecuritycompliance.v1.FrameworkAudit + 9, // 2: google.cloud.cloudsecuritycompliance.v1.FrameworkAuditDestination.bucket:type_name -> google.cloud.cloudsecuritycompliance.v1.BucketDestination + 2, // 3: google.cloud.cloudsecuritycompliance.v1.BucketDestination.framework_audit_format:type_name -> google.cloud.cloudsecuritycompliance.v1.BucketDestination.Format + 8, // 4: google.cloud.cloudsecuritycompliance.v1.FrameworkAudit.framework_audit_destination:type_name -> google.cloud.cloudsecuritycompliance.v1.FrameworkAuditDestination + 19, // 5: google.cloud.cloudsecuritycompliance.v1.FrameworkAudit.start_time:type_name -> google.protobuf.Timestamp + 19, // 6: google.cloud.cloudsecuritycompliance.v1.FrameworkAudit.finish_time:type_name -> google.protobuf.Timestamp + 0, // 7: google.cloud.cloudsecuritycompliance.v1.FrameworkAudit.compliance_state:type_name -> google.cloud.cloudsecuritycompliance.v1.ComplianceState + 6, // 8: google.cloud.cloudsecuritycompliance.v1.FrameworkAudit.report_summary:type_name -> google.cloud.cloudsecuritycompliance.v1.ReportSummary + 14, // 9: google.cloud.cloudsecuritycompliance.v1.FrameworkAudit.cloud_control_group_audit_details:type_name -> google.cloud.cloudsecuritycompliance.v1.CloudControlGroupAuditDetails + 18, // 10: google.cloud.cloudsecuritycompliance.v1.FrameworkAudit.cloud_control_audit_details:type_name -> google.cloud.cloudsecuritycompliance.v1.CloudControlAuditDetails + 3, // 11: google.cloud.cloudsecuritycompliance.v1.FrameworkAudit.state:type_name -> google.cloud.cloudsecuritycompliance.v1.FrameworkAudit.State + 10, // 12: google.cloud.cloudsecuritycompliance.v1.ListFrameworkAuditsResponse.framework_audits:type_name -> google.cloud.cloudsecuritycompliance.v1.FrameworkAudit + 0, // 13: google.cloud.cloudsecuritycompliance.v1.CloudControlGroupAuditDetails.compliance_state:type_name -> google.cloud.cloudsecuritycompliance.v1.ComplianceState + 20, // 14: google.cloud.cloudsecuritycompliance.v1.CloudControlGroupAuditDetails.control_family:type_name -> google.cloud.cloudsecuritycompliance.v1.ControlFamily + 18, // 15: google.cloud.cloudsecuritycompliance.v1.CloudControlGroupAuditDetails.cloud_control_details:type_name -> google.cloud.cloudsecuritycompliance.v1.CloudControlAuditDetails + 6, // 16: google.cloud.cloudsecuritycompliance.v1.CloudControlGroupAuditDetails.report_summary:type_name -> google.cloud.cloudsecuritycompliance.v1.ReportSummary + 0, // 17: google.cloud.cloudsecuritycompliance.v1.FindingDetails.compliance_state:type_name -> google.cloud.cloudsecuritycompliance.v1.ComplianceState + 16, // 18: google.cloud.cloudsecuritycompliance.v1.FindingDetails.observation:type_name -> google.cloud.cloudsecuritycompliance.v1.ObservationDetails + 17, // 19: google.cloud.cloudsecuritycompliance.v1.FindingDetails.evidence:type_name -> google.cloud.cloudsecuritycompliance.v1.EvidenceDetails + 0, // 20: google.cloud.cloudsecuritycompliance.v1.CloudControlAuditDetails.compliance_state:type_name -> google.cloud.cloudsecuritycompliance.v1.ComplianceState + 6, // 21: google.cloud.cloudsecuritycompliance.v1.CloudControlAuditDetails.report_summary:type_name -> google.cloud.cloudsecuritycompliance.v1.ReportSummary + 15, // 22: google.cloud.cloudsecuritycompliance.v1.CloudControlAuditDetails.findings:type_name -> google.cloud.cloudsecuritycompliance.v1.FindingDetails + 4, // 23: google.cloud.cloudsecuritycompliance.v1.Audit.GenerateFrameworkAuditScopeReport:input_type -> google.cloud.cloudsecuritycompliance.v1.GenerateFrameworkAuditScopeReportRequest + 7, // 24: google.cloud.cloudsecuritycompliance.v1.Audit.CreateFrameworkAudit:input_type -> google.cloud.cloudsecuritycompliance.v1.CreateFrameworkAuditRequest + 11, // 25: google.cloud.cloudsecuritycompliance.v1.Audit.ListFrameworkAudits:input_type -> google.cloud.cloudsecuritycompliance.v1.ListFrameworkAuditsRequest + 13, // 26: google.cloud.cloudsecuritycompliance.v1.Audit.GetFrameworkAudit:input_type -> google.cloud.cloudsecuritycompliance.v1.GetFrameworkAuditRequest + 5, // 27: google.cloud.cloudsecuritycompliance.v1.Audit.GenerateFrameworkAuditScopeReport:output_type -> google.cloud.cloudsecuritycompliance.v1.GenerateFrameworkAuditScopeReportResponse + 21, // 28: google.cloud.cloudsecuritycompliance.v1.Audit.CreateFrameworkAudit:output_type -> google.longrunning.Operation + 12, // 29: google.cloud.cloudsecuritycompliance.v1.Audit.ListFrameworkAudits:output_type -> google.cloud.cloudsecuritycompliance.v1.ListFrameworkAuditsResponse + 10, // 30: google.cloud.cloudsecuritycompliance.v1.Audit.GetFrameworkAudit:output_type -> google.cloud.cloudsecuritycompliance.v1.FrameworkAudit + 27, // [27:31] is the sub-list for method output_type + 23, // [23:27] is the sub-list for method input_type + 23, // [23:23] is the sub-list for extension type_name + 23, // [23:23] is the sub-list for extension extendee + 0, // [0:23] is the sub-list for field type_name +} + +func init() { file_google_cloud_cloudsecuritycompliance_v1_audit_proto_init() } +func file_google_cloud_cloudsecuritycompliance_v1_audit_proto_init() { + if File_google_cloud_cloudsecuritycompliance_v1_audit_proto != nil { + return + } + file_google_cloud_cloudsecuritycompliance_v1_common_proto_init() + file_google_cloud_cloudsecuritycompliance_v1_audit_proto_msgTypes[1].OneofWrappers = []any{ + (*GenerateFrameworkAuditScopeReportResponse_ScopeReportContents)(nil), + } + file_google_cloud_cloudsecuritycompliance_v1_audit_proto_msgTypes[4].OneofWrappers = []any{ + (*FrameworkAuditDestination_Bucket)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_google_cloud_cloudsecuritycompliance_v1_audit_proto_rawDesc, + NumEnums: 4, + NumMessages: 15, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_google_cloud_cloudsecuritycompliance_v1_audit_proto_goTypes, + DependencyIndexes: file_google_cloud_cloudsecuritycompliance_v1_audit_proto_depIdxs, + EnumInfos: file_google_cloud_cloudsecuritycompliance_v1_audit_proto_enumTypes, + MessageInfos: file_google_cloud_cloudsecuritycompliance_v1_audit_proto_msgTypes, + }.Build() + File_google_cloud_cloudsecuritycompliance_v1_audit_proto = out.File + file_google_cloud_cloudsecuritycompliance_v1_audit_proto_rawDesc = nil + file_google_cloud_cloudsecuritycompliance_v1_audit_proto_goTypes = nil + file_google_cloud_cloudsecuritycompliance_v1_audit_proto_depIdxs = nil +} diff --git a/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb/audit_grpc.pb.go b/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb/audit_grpc.pb.go new file mode 100644 index 000000000000..7bc4d5b92849 --- /dev/null +++ b/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb/audit_grpc.pb.go @@ -0,0 +1,242 @@ +// Copyright 2025 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 +// +// http://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. + +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc v4.25.7 +// source: google/cloud/cloudsecuritycompliance/v1/audit.proto + +package cloudsecuritycompliancepb + +import ( + context "context" + + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +const ( + Audit_GenerateFrameworkAuditScopeReport_FullMethodName = "/google.cloud.cloudsecuritycompliance.v1.Audit/GenerateFrameworkAuditScopeReport" + Audit_CreateFrameworkAudit_FullMethodName = "/google.cloud.cloudsecuritycompliance.v1.Audit/CreateFrameworkAudit" + Audit_ListFrameworkAudits_FullMethodName = "/google.cloud.cloudsecuritycompliance.v1.Audit/ListFrameworkAudits" + Audit_GetFrameworkAudit_FullMethodName = "/google.cloud.cloudsecuritycompliance.v1.Audit/GetFrameworkAudit" +) + +// AuditClient is the client API for Audit service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type AuditClient interface { + // Generates an audit scope report for a framework. + GenerateFrameworkAuditScopeReport(ctx context.Context, in *GenerateFrameworkAuditScopeReportRequest, opts ...grpc.CallOption) (*GenerateFrameworkAuditScopeReportResponse, error) + // Creates an audit scope report for a framework. + CreateFrameworkAudit(ctx context.Context, in *CreateFrameworkAuditRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) + // Lists the framework audits for a given organization, folder, or project. + ListFrameworkAudits(ctx context.Context, in *ListFrameworkAuditsRequest, opts ...grpc.CallOption) (*ListFrameworkAuditsResponse, error) + // Gets the details for a framework audit. + GetFrameworkAudit(ctx context.Context, in *GetFrameworkAuditRequest, opts ...grpc.CallOption) (*FrameworkAudit, error) +} + +type auditClient struct { + cc grpc.ClientConnInterface +} + +func NewAuditClient(cc grpc.ClientConnInterface) AuditClient { + return &auditClient{cc} +} + +func (c *auditClient) GenerateFrameworkAuditScopeReport(ctx context.Context, in *GenerateFrameworkAuditScopeReportRequest, opts ...grpc.CallOption) (*GenerateFrameworkAuditScopeReportResponse, error) { + out := new(GenerateFrameworkAuditScopeReportResponse) + err := c.cc.Invoke(ctx, Audit_GenerateFrameworkAuditScopeReport_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *auditClient) CreateFrameworkAudit(ctx context.Context, in *CreateFrameworkAuditRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) { + out := new(longrunningpb.Operation) + err := c.cc.Invoke(ctx, Audit_CreateFrameworkAudit_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *auditClient) ListFrameworkAudits(ctx context.Context, in *ListFrameworkAuditsRequest, opts ...grpc.CallOption) (*ListFrameworkAuditsResponse, error) { + out := new(ListFrameworkAuditsResponse) + err := c.cc.Invoke(ctx, Audit_ListFrameworkAudits_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *auditClient) GetFrameworkAudit(ctx context.Context, in *GetFrameworkAuditRequest, opts ...grpc.CallOption) (*FrameworkAudit, error) { + out := new(FrameworkAudit) + err := c.cc.Invoke(ctx, Audit_GetFrameworkAudit_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// AuditServer is the server API for Audit service. +// All implementations should embed UnimplementedAuditServer +// for forward compatibility +type AuditServer interface { + // Generates an audit scope report for a framework. + GenerateFrameworkAuditScopeReport(context.Context, *GenerateFrameworkAuditScopeReportRequest) (*GenerateFrameworkAuditScopeReportResponse, error) + // Creates an audit scope report for a framework. + CreateFrameworkAudit(context.Context, *CreateFrameworkAuditRequest) (*longrunningpb.Operation, error) + // Lists the framework audits for a given organization, folder, or project. + ListFrameworkAudits(context.Context, *ListFrameworkAuditsRequest) (*ListFrameworkAuditsResponse, error) + // Gets the details for a framework audit. + GetFrameworkAudit(context.Context, *GetFrameworkAuditRequest) (*FrameworkAudit, error) +} + +// UnimplementedAuditServer should be embedded to have forward compatible implementations. +type UnimplementedAuditServer struct { +} + +func (UnimplementedAuditServer) GenerateFrameworkAuditScopeReport(context.Context, *GenerateFrameworkAuditScopeReportRequest) (*GenerateFrameworkAuditScopeReportResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GenerateFrameworkAuditScopeReport not implemented") +} +func (UnimplementedAuditServer) CreateFrameworkAudit(context.Context, *CreateFrameworkAuditRequest) (*longrunningpb.Operation, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateFrameworkAudit not implemented") +} +func (UnimplementedAuditServer) ListFrameworkAudits(context.Context, *ListFrameworkAuditsRequest) (*ListFrameworkAuditsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListFrameworkAudits not implemented") +} +func (UnimplementedAuditServer) GetFrameworkAudit(context.Context, *GetFrameworkAuditRequest) (*FrameworkAudit, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetFrameworkAudit not implemented") +} + +// UnsafeAuditServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to AuditServer will +// result in compilation errors. +type UnsafeAuditServer interface { + mustEmbedUnimplementedAuditServer() +} + +func RegisterAuditServer(s grpc.ServiceRegistrar, srv AuditServer) { + s.RegisterService(&Audit_ServiceDesc, srv) +} + +func _Audit_GenerateFrameworkAuditScopeReport_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GenerateFrameworkAuditScopeReportRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AuditServer).GenerateFrameworkAuditScopeReport(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Audit_GenerateFrameworkAuditScopeReport_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AuditServer).GenerateFrameworkAuditScopeReport(ctx, req.(*GenerateFrameworkAuditScopeReportRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Audit_CreateFrameworkAudit_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateFrameworkAuditRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AuditServer).CreateFrameworkAudit(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Audit_CreateFrameworkAudit_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AuditServer).CreateFrameworkAudit(ctx, req.(*CreateFrameworkAuditRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Audit_ListFrameworkAudits_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListFrameworkAuditsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AuditServer).ListFrameworkAudits(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Audit_ListFrameworkAudits_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AuditServer).ListFrameworkAudits(ctx, req.(*ListFrameworkAuditsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Audit_GetFrameworkAudit_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetFrameworkAuditRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AuditServer).GetFrameworkAudit(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Audit_GetFrameworkAudit_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AuditServer).GetFrameworkAudit(ctx, req.(*GetFrameworkAuditRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// Audit_ServiceDesc is the grpc.ServiceDesc for Audit service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Audit_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "google.cloud.cloudsecuritycompliance.v1.Audit", + HandlerType: (*AuditServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GenerateFrameworkAuditScopeReport", + Handler: _Audit_GenerateFrameworkAuditScopeReport_Handler, + }, + { + MethodName: "CreateFrameworkAudit", + Handler: _Audit_CreateFrameworkAudit_Handler, + }, + { + MethodName: "ListFrameworkAudits", + Handler: _Audit_ListFrameworkAudits_Handler, + }, + { + MethodName: "GetFrameworkAudit", + Handler: _Audit_GetFrameworkAudit_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "google/cloud/cloudsecuritycompliance/v1/audit.proto", +} diff --git a/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb/cm_enrollment_service.pb.go b/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb/cm_enrollment_service.pb.go new file mode 100644 index 000000000000..e3ac7284de35 --- /dev/null +++ b/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb/cm_enrollment_service.pb.go @@ -0,0 +1,621 @@ +// Copyright 2025 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 +// +// http://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. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.35.2 +// protoc v4.25.7 +// source: google/cloud/cloudsecuritycompliance/v1/cm_enrollment_service.proto + +package cloudsecuritycompliancepb + +import ( + reflect "reflect" + sync "sync" + + _ "google.golang.org/genproto/googleapis/api/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// The request message for [UpdateCmEnrollment][]. +type UpdateCmEnrollmentRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The Compliance Manager enrollment to update. + // The `name` field is used to identify the settings that you want to update. + CmEnrollment *CmEnrollment `protobuf:"bytes,1,opt,name=cm_enrollment,json=cmEnrollment,proto3" json:"cm_enrollment,omitempty"` + // Optional. The list of fields that you want to update. + UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` +} + +func (x *UpdateCmEnrollmentRequest) Reset() { + *x = UpdateCmEnrollmentRequest{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_cm_enrollment_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateCmEnrollmentRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateCmEnrollmentRequest) ProtoMessage() {} + +func (x *UpdateCmEnrollmentRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_cm_enrollment_service_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateCmEnrollmentRequest.ProtoReflect.Descriptor instead. +func (*UpdateCmEnrollmentRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_cm_enrollment_service_proto_rawDescGZIP(), []int{0} +} + +func (x *UpdateCmEnrollmentRequest) GetCmEnrollment() *CmEnrollment { + if x != nil { + return x.CmEnrollment + } + return nil +} + +func (x *UpdateCmEnrollmentRequest) GetUpdateMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.UpdateMask + } + return nil +} + +// The request message for [CalculateEffectiveCmEnrollment][]. +type CalculateEffectiveCmEnrollmentRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The name of the Compliance Manager enrollment to calculate. + // + // Supported formats are the following: + // + // * `organizations/{organization_id}/locations/{location}/cmEnrollment` + // * `folders/{folder_id}/locations/{location}/cmEnrollment` + // * `projects/{project_id}/locations/{location}/cmEnrollment` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *CalculateEffectiveCmEnrollmentRequest) Reset() { + *x = CalculateEffectiveCmEnrollmentRequest{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_cm_enrollment_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CalculateEffectiveCmEnrollmentRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CalculateEffectiveCmEnrollmentRequest) ProtoMessage() {} + +func (x *CalculateEffectiveCmEnrollmentRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_cm_enrollment_service_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CalculateEffectiveCmEnrollmentRequest.ProtoReflect.Descriptor instead. +func (*CalculateEffectiveCmEnrollmentRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_cm_enrollment_service_proto_rawDescGZIP(), []int{1} +} + +func (x *CalculateEffectiveCmEnrollmentRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// The settings for Compliance Manager at a specific resource scope.= +type CmEnrollment struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Identifier. The name of the Compliance Manager enrollment. + // + // Supported formats are the following: + // + // * `organizations/{organization_id}/locations/{location}/cmEnrollment` + // * `folders/{folder_id}/locations/{location}/cmEnrollment` + // * `projects/{project_id}/locations/{location}/cmEnrollment` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Optional. Whether the resource is enrolled in Compliance Manager. + // This setting is inherited by all descendants. + Enrolled bool `protobuf:"varint,2,opt,name=enrolled,proto3" json:"enrolled,omitempty"` + // Optional. The audit configuration for Compliance Manager. + // If set at a scope, this configuration overrides any inherited audit + // configuration. + AuditConfig *AuditConfig `protobuf:"bytes,3,opt,name=audit_config,json=auditConfig,proto3" json:"audit_config,omitempty"` +} + +func (x *CmEnrollment) Reset() { + *x = CmEnrollment{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_cm_enrollment_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CmEnrollment) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CmEnrollment) ProtoMessage() {} + +func (x *CmEnrollment) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_cm_enrollment_service_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CmEnrollment.ProtoReflect.Descriptor instead. +func (*CmEnrollment) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_cm_enrollment_service_proto_rawDescGZIP(), []int{2} +} + +func (x *CmEnrollment) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *CmEnrollment) GetEnrolled() bool { + if x != nil { + return x.Enrolled + } + return false +} + +func (x *CmEnrollment) GetAuditConfig() *AuditConfig { + if x != nil { + return x.AuditConfig + } + return nil +} + +// The response message for [CalculateEffectiveCmEnrollment][]. +type CalculateEffectiveCmEnrollmentResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The effective Compliance Manager enrollment for the resource. + CmEnrollment *CmEnrollment `protobuf:"bytes,1,opt,name=cm_enrollment,json=cmEnrollment,proto3" json:"cm_enrollment,omitempty"` +} + +func (x *CalculateEffectiveCmEnrollmentResponse) Reset() { + *x = CalculateEffectiveCmEnrollmentResponse{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_cm_enrollment_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CalculateEffectiveCmEnrollmentResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CalculateEffectiveCmEnrollmentResponse) ProtoMessage() {} + +func (x *CalculateEffectiveCmEnrollmentResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_cm_enrollment_service_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CalculateEffectiveCmEnrollmentResponse.ProtoReflect.Descriptor instead. +func (*CalculateEffectiveCmEnrollmentResponse) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_cm_enrollment_service_proto_rawDescGZIP(), []int{3} +} + +func (x *CalculateEffectiveCmEnrollmentResponse) GetCmEnrollment() *CmEnrollment { + if x != nil { + return x.CmEnrollment + } + return nil +} + +// The audit configuration for Compliance Manager. +type AuditConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The list of destinations that can be selected for uploading audit + // reports to. + Destinations []*AuditConfig_CmEligibleDestination `protobuf:"bytes,1,rep,name=destinations,proto3" json:"destinations,omitempty"` +} + +func (x *AuditConfig) Reset() { + *x = AuditConfig{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_cm_enrollment_service_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AuditConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AuditConfig) ProtoMessage() {} + +func (x *AuditConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_cm_enrollment_service_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AuditConfig.ProtoReflect.Descriptor instead. +func (*AuditConfig) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_cm_enrollment_service_proto_rawDescGZIP(), []int{4} +} + +func (x *AuditConfig) GetDestinations() []*AuditConfig_CmEligibleDestination { + if x != nil { + return x.Destinations + } + return nil +} + +// The destination details where audit reports are +// uploaded. +type AuditConfig_CmEligibleDestination struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Set of options for the report destination location. + // + // Types that are assignable to CmEligibleDestinations: + // + // *AuditConfig_CmEligibleDestination_GcsBucket + CmEligibleDestinations isAuditConfig_CmEligibleDestination_CmEligibleDestinations `protobuf_oneof:"cm_eligible_destinations"` +} + +func (x *AuditConfig_CmEligibleDestination) Reset() { + *x = AuditConfig_CmEligibleDestination{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_cm_enrollment_service_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AuditConfig_CmEligibleDestination) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AuditConfig_CmEligibleDestination) ProtoMessage() {} + +func (x *AuditConfig_CmEligibleDestination) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_cm_enrollment_service_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AuditConfig_CmEligibleDestination.ProtoReflect.Descriptor instead. +func (*AuditConfig_CmEligibleDestination) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_cm_enrollment_service_proto_rawDescGZIP(), []int{4, 0} +} + +func (m *AuditConfig_CmEligibleDestination) GetCmEligibleDestinations() isAuditConfig_CmEligibleDestination_CmEligibleDestinations { + if m != nil { + return m.CmEligibleDestinations + } + return nil +} + +func (x *AuditConfig_CmEligibleDestination) GetGcsBucket() string { + if x, ok := x.GetCmEligibleDestinations().(*AuditConfig_CmEligibleDestination_GcsBucket); ok { + return x.GcsBucket + } + return "" +} + +type isAuditConfig_CmEligibleDestination_CmEligibleDestinations interface { + isAuditConfig_CmEligibleDestination_CmEligibleDestinations() +} + +type AuditConfig_CmEligibleDestination_GcsBucket struct { + // The Cloud Storage bucket where audit reports and evidences can be + // uploaded. The format is `gs://{bucket_name}`. + GcsBucket string `protobuf:"bytes,1,opt,name=gcs_bucket,json=gcsBucket,proto3,oneof"` +} + +func (*AuditConfig_CmEligibleDestination_GcsBucket) isAuditConfig_CmEligibleDestination_CmEligibleDestinations() { +} + +var File_google_cloud_cloudsecuritycompliance_v1_cm_enrollment_service_proto protoreflect.FileDescriptor + +var file_google_cloud_cloudsecuritycompliance_v1_cm_enrollment_service_proto_rawDesc = []byte{ + 0x0a, 0x43, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, + 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6d, 0x5f, 0x65, 0x6e, 0x72, + 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x27, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, + 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x1a, 0x1c, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x22, 0xbe, 0x01, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6d, + 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x5f, 0x0a, 0x0d, 0x63, 0x6d, 0x5f, 0x65, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, + 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, + 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x6d, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x42, + 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, 0x63, 0x6d, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, + 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, + 0x61, 0x73, 0x6b, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x78, 0x0a, 0x25, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, + 0x65, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6d, 0x45, 0x6e, 0x72, 0x6f, + 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4f, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3b, 0xe0, 0x41, 0x02, + 0xfa, 0x41, 0x35, 0x0a, 0x33, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, + 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6d, 0x45, 0x6e, + 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xf5, + 0x02, 0x0a, 0x0c, 0x43, 0x6d, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x12, + 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x08, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x08, 0x65, 0x6e, 0x72, 0x6f, + 0x6c, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, + 0x08, 0x65, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x64, 0x12, 0x5c, 0x0a, 0x0c, 0x61, 0x75, 0x64, + 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, + 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x74, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x61, 0x75, 0x64, 0x69, + 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x3a, 0xcc, 0x01, 0xea, 0x41, 0xc8, 0x01, 0x0a, 0x33, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6d, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x3e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x63, 0x6d, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x34, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x63, 0x6d, 0x45, + 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x2a, 0x0d, 0x63, 0x6d, 0x45, 0x6e, 0x72, + 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x32, 0x0c, 0x63, 0x6d, 0x45, 0x6e, 0x72, 0x6f, + 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x84, 0x01, 0x0a, 0x26, 0x43, 0x61, 0x6c, 0x63, 0x75, + 0x6c, 0x61, 0x74, 0x65, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6d, 0x45, + 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x5a, 0x0a, 0x0d, 0x63, 0x6d, 0x5f, 0x65, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, + 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, + 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x6d, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x52, + 0x0c, 0x63, 0x6d, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0xd8, 0x01, + 0x0a, 0x0b, 0x41, 0x75, 0x64, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x73, 0x0a, + 0x0c, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x4a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, + 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, + 0x64, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6d, 0x45, 0x6c, 0x69, 0x67, + 0x69, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, + 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x1a, 0x54, 0x0a, 0x15, 0x43, 0x6d, 0x45, 0x6c, 0x69, 0x67, 0x69, 0x62, 0x6c, 0x65, + 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0a, 0x67, + 0x63, 0x73, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x09, 0x67, 0x63, 0x73, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x1a, 0x0a, 0x18, + 0x63, 0x6d, 0x5f, 0x65, 0x6c, 0x69, 0x67, 0x69, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x73, 0x74, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x32, 0xa3, 0x07, 0x0a, 0x13, 0x43, 0x6d, 0x45, + 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x12, 0xa4, 0x03, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6d, 0x45, 0x6e, 0x72, + 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, + 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6d, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, + 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6d, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, + 0x6e, 0x74, 0x22, 0x92, 0x02, 0xda, 0x41, 0x19, 0x63, 0x6d, 0x5f, 0x65, 0x6e, 0x72, 0x6f, 0x6c, + 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, + 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xef, 0x01, 0x3a, 0x0d, 0x63, 0x6d, 0x5f, 0x65, 0x6e, 0x72, + 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x5a, 0x4c, 0x3a, 0x0d, 0x63, 0x6d, 0x5f, 0x65, 0x6e, + 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x32, 0x3b, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x63, + 0x6d, 0x5f, 0x65, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x6e, 0x61, 0x6d, + 0x65, 0x3d, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6d, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, + 0x6d, 0x65, 0x6e, 0x74, 0x7d, 0x5a, 0x4d, 0x3a, 0x0d, 0x63, 0x6d, 0x5f, 0x65, 0x6e, 0x72, 0x6f, + 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x32, 0x3c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x63, 0x6d, 0x5f, + 0x65, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6d, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, + 0x65, 0x6e, 0x74, 0x7d, 0x32, 0x41, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x63, 0x6d, 0x5f, 0x65, 0x6e, + 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6d, 0x45, 0x6e, 0x72, 0x6f, + 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x7d, 0x12, 0x88, 0x03, 0x0a, 0x1e, 0x43, 0x61, 0x6c, 0x63, + 0x75, 0x6c, 0x61, 0x74, 0x65, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6d, + 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x4e, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, + 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x45, 0x66, + 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6d, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, + 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x4f, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, + 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x45, 0x66, + 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6d, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, + 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc4, 0x01, 0xda, 0x41, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xb6, 0x01, 0x5a, 0x39, 0x12, 0x37, + 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, + 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, + 0x63, 0x6d, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x7d, 0x3a, 0x63, 0x61, + 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x5a, 0x3a, 0x12, 0x38, 0x2f, 0x76, 0x31, 0x2f, 0x7b, + 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6d, 0x45, 0x6e, + 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x7d, 0x3a, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, + 0x61, 0x74, 0x65, 0x12, 0x3d, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6d, 0x45, 0x6e, 0x72, + 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x7d, 0x3a, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, + 0x74, 0x65, 0x1a, 0x5a, 0xca, 0x41, 0x26, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, + 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0x2e, + 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0xb1, + 0x02, 0x0a, 0x2b, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, + 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x18, + 0x43, 0x6d, 0x45, 0x6e, 0x72, 0x6f, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x65, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x2f, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, + 0x69, 0x61, 0x6e, 0x63, 0x65, 0x70, 0x62, 0x3b, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, + 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x70, + 0x62, 0xaa, 0x02, 0x27, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6f, + 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x27, 0x47, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, + 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, + 0x63, 0x65, 0x5c, 0x56, 0x31, 0xea, 0x02, 0x2a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, + 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x65, 0x63, 0x75, + 0x72, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x3a, 0x3a, + 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_google_cloud_cloudsecuritycompliance_v1_cm_enrollment_service_proto_rawDescOnce sync.Once + file_google_cloud_cloudsecuritycompliance_v1_cm_enrollment_service_proto_rawDescData = file_google_cloud_cloudsecuritycompliance_v1_cm_enrollment_service_proto_rawDesc +) + +func file_google_cloud_cloudsecuritycompliance_v1_cm_enrollment_service_proto_rawDescGZIP() []byte { + file_google_cloud_cloudsecuritycompliance_v1_cm_enrollment_service_proto_rawDescOnce.Do(func() { + file_google_cloud_cloudsecuritycompliance_v1_cm_enrollment_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_cloudsecuritycompliance_v1_cm_enrollment_service_proto_rawDescData) + }) + return file_google_cloud_cloudsecuritycompliance_v1_cm_enrollment_service_proto_rawDescData +} + +var file_google_cloud_cloudsecuritycompliance_v1_cm_enrollment_service_proto_msgTypes = make([]protoimpl.MessageInfo, 6) +var file_google_cloud_cloudsecuritycompliance_v1_cm_enrollment_service_proto_goTypes = []any{ + (*UpdateCmEnrollmentRequest)(nil), // 0: google.cloud.cloudsecuritycompliance.v1.UpdateCmEnrollmentRequest + (*CalculateEffectiveCmEnrollmentRequest)(nil), // 1: google.cloud.cloudsecuritycompliance.v1.CalculateEffectiveCmEnrollmentRequest + (*CmEnrollment)(nil), // 2: google.cloud.cloudsecuritycompliance.v1.CmEnrollment + (*CalculateEffectiveCmEnrollmentResponse)(nil), // 3: google.cloud.cloudsecuritycompliance.v1.CalculateEffectiveCmEnrollmentResponse + (*AuditConfig)(nil), // 4: google.cloud.cloudsecuritycompliance.v1.AuditConfig + (*AuditConfig_CmEligibleDestination)(nil), // 5: google.cloud.cloudsecuritycompliance.v1.AuditConfig.CmEligibleDestination + (*fieldmaskpb.FieldMask)(nil), // 6: google.protobuf.FieldMask +} +var file_google_cloud_cloudsecuritycompliance_v1_cm_enrollment_service_proto_depIdxs = []int32{ + 2, // 0: google.cloud.cloudsecuritycompliance.v1.UpdateCmEnrollmentRequest.cm_enrollment:type_name -> google.cloud.cloudsecuritycompliance.v1.CmEnrollment + 6, // 1: google.cloud.cloudsecuritycompliance.v1.UpdateCmEnrollmentRequest.update_mask:type_name -> google.protobuf.FieldMask + 4, // 2: google.cloud.cloudsecuritycompliance.v1.CmEnrollment.audit_config:type_name -> google.cloud.cloudsecuritycompliance.v1.AuditConfig + 2, // 3: google.cloud.cloudsecuritycompliance.v1.CalculateEffectiveCmEnrollmentResponse.cm_enrollment:type_name -> google.cloud.cloudsecuritycompliance.v1.CmEnrollment + 5, // 4: google.cloud.cloudsecuritycompliance.v1.AuditConfig.destinations:type_name -> google.cloud.cloudsecuritycompliance.v1.AuditConfig.CmEligibleDestination + 0, // 5: google.cloud.cloudsecuritycompliance.v1.CmEnrollmentService.UpdateCmEnrollment:input_type -> google.cloud.cloudsecuritycompliance.v1.UpdateCmEnrollmentRequest + 1, // 6: google.cloud.cloudsecuritycompliance.v1.CmEnrollmentService.CalculateEffectiveCmEnrollment:input_type -> google.cloud.cloudsecuritycompliance.v1.CalculateEffectiveCmEnrollmentRequest + 2, // 7: google.cloud.cloudsecuritycompliance.v1.CmEnrollmentService.UpdateCmEnrollment:output_type -> google.cloud.cloudsecuritycompliance.v1.CmEnrollment + 3, // 8: google.cloud.cloudsecuritycompliance.v1.CmEnrollmentService.CalculateEffectiveCmEnrollment:output_type -> google.cloud.cloudsecuritycompliance.v1.CalculateEffectiveCmEnrollmentResponse + 7, // [7:9] is the sub-list for method output_type + 5, // [5:7] is the sub-list for method input_type + 5, // [5:5] is the sub-list for extension type_name + 5, // [5:5] is the sub-list for extension extendee + 0, // [0:5] is the sub-list for field type_name +} + +func init() { file_google_cloud_cloudsecuritycompliance_v1_cm_enrollment_service_proto_init() } +func file_google_cloud_cloudsecuritycompliance_v1_cm_enrollment_service_proto_init() { + if File_google_cloud_cloudsecuritycompliance_v1_cm_enrollment_service_proto != nil { + return + } + file_google_cloud_cloudsecuritycompliance_v1_cm_enrollment_service_proto_msgTypes[5].OneofWrappers = []any{ + (*AuditConfig_CmEligibleDestination_GcsBucket)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_google_cloud_cloudsecuritycompliance_v1_cm_enrollment_service_proto_rawDesc, + NumEnums: 0, + NumMessages: 6, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_google_cloud_cloudsecuritycompliance_v1_cm_enrollment_service_proto_goTypes, + DependencyIndexes: file_google_cloud_cloudsecuritycompliance_v1_cm_enrollment_service_proto_depIdxs, + MessageInfos: file_google_cloud_cloudsecuritycompliance_v1_cm_enrollment_service_proto_msgTypes, + }.Build() + File_google_cloud_cloudsecuritycompliance_v1_cm_enrollment_service_proto = out.File + file_google_cloud_cloudsecuritycompliance_v1_cm_enrollment_service_proto_rawDesc = nil + file_google_cloud_cloudsecuritycompliance_v1_cm_enrollment_service_proto_goTypes = nil + file_google_cloud_cloudsecuritycompliance_v1_cm_enrollment_service_proto_depIdxs = nil +} diff --git a/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb/cm_enrollment_service_grpc.pb.go b/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb/cm_enrollment_service_grpc.pb.go new file mode 100644 index 000000000000..2f9f4f68a8e1 --- /dev/null +++ b/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb/cm_enrollment_service_grpc.pb.go @@ -0,0 +1,175 @@ +// Copyright 2025 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 +// +// http://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. + +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc v4.25.7 +// source: google/cloud/cloudsecuritycompliance/v1/cm_enrollment_service.proto + +package cloudsecuritycompliancepb + +import ( + context "context" + + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +const ( + CmEnrollmentService_UpdateCmEnrollment_FullMethodName = "/google.cloud.cloudsecuritycompliance.v1.CmEnrollmentService/UpdateCmEnrollment" + CmEnrollmentService_CalculateEffectiveCmEnrollment_FullMethodName = "/google.cloud.cloudsecuritycompliance.v1.CmEnrollmentService/CalculateEffectiveCmEnrollment" +) + +// CmEnrollmentServiceClient is the client API for CmEnrollmentService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type CmEnrollmentServiceClient interface { + // Updates the Compliance Manager enrollment for a resource to facilitate + // an audit. + // Use this method to enroll a resource in Compliance Manager or to + // create or update feature-specific configurations. + UpdateCmEnrollment(ctx context.Context, in *UpdateCmEnrollmentRequest, opts ...grpc.CallOption) (*CmEnrollment, error) + // Calculates the effective Compliance Manager enrollment for a resource. + // An effective enrollment is either a direct enrollment of a + // resource (if it exists), or an enrollment of the closest parent of a + // resource that's enrolled in Compliance Manager. + CalculateEffectiveCmEnrollment(ctx context.Context, in *CalculateEffectiveCmEnrollmentRequest, opts ...grpc.CallOption) (*CalculateEffectiveCmEnrollmentResponse, error) +} + +type cmEnrollmentServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewCmEnrollmentServiceClient(cc grpc.ClientConnInterface) CmEnrollmentServiceClient { + return &cmEnrollmentServiceClient{cc} +} + +func (c *cmEnrollmentServiceClient) UpdateCmEnrollment(ctx context.Context, in *UpdateCmEnrollmentRequest, opts ...grpc.CallOption) (*CmEnrollment, error) { + out := new(CmEnrollment) + err := c.cc.Invoke(ctx, CmEnrollmentService_UpdateCmEnrollment_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *cmEnrollmentServiceClient) CalculateEffectiveCmEnrollment(ctx context.Context, in *CalculateEffectiveCmEnrollmentRequest, opts ...grpc.CallOption) (*CalculateEffectiveCmEnrollmentResponse, error) { + out := new(CalculateEffectiveCmEnrollmentResponse) + err := c.cc.Invoke(ctx, CmEnrollmentService_CalculateEffectiveCmEnrollment_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// CmEnrollmentServiceServer is the server API for CmEnrollmentService service. +// All implementations should embed UnimplementedCmEnrollmentServiceServer +// for forward compatibility +type CmEnrollmentServiceServer interface { + // Updates the Compliance Manager enrollment for a resource to facilitate + // an audit. + // Use this method to enroll a resource in Compliance Manager or to + // create or update feature-specific configurations. + UpdateCmEnrollment(context.Context, *UpdateCmEnrollmentRequest) (*CmEnrollment, error) + // Calculates the effective Compliance Manager enrollment for a resource. + // An effective enrollment is either a direct enrollment of a + // resource (if it exists), or an enrollment of the closest parent of a + // resource that's enrolled in Compliance Manager. + CalculateEffectiveCmEnrollment(context.Context, *CalculateEffectiveCmEnrollmentRequest) (*CalculateEffectiveCmEnrollmentResponse, error) +} + +// UnimplementedCmEnrollmentServiceServer should be embedded to have forward compatible implementations. +type UnimplementedCmEnrollmentServiceServer struct { +} + +func (UnimplementedCmEnrollmentServiceServer) UpdateCmEnrollment(context.Context, *UpdateCmEnrollmentRequest) (*CmEnrollment, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateCmEnrollment not implemented") +} +func (UnimplementedCmEnrollmentServiceServer) CalculateEffectiveCmEnrollment(context.Context, *CalculateEffectiveCmEnrollmentRequest) (*CalculateEffectiveCmEnrollmentResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CalculateEffectiveCmEnrollment not implemented") +} + +// UnsafeCmEnrollmentServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to CmEnrollmentServiceServer will +// result in compilation errors. +type UnsafeCmEnrollmentServiceServer interface { + mustEmbedUnimplementedCmEnrollmentServiceServer() +} + +func RegisterCmEnrollmentServiceServer(s grpc.ServiceRegistrar, srv CmEnrollmentServiceServer) { + s.RegisterService(&CmEnrollmentService_ServiceDesc, srv) +} + +func _CmEnrollmentService_UpdateCmEnrollment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateCmEnrollmentRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CmEnrollmentServiceServer).UpdateCmEnrollment(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: CmEnrollmentService_UpdateCmEnrollment_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CmEnrollmentServiceServer).UpdateCmEnrollment(ctx, req.(*UpdateCmEnrollmentRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _CmEnrollmentService_CalculateEffectiveCmEnrollment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CalculateEffectiveCmEnrollmentRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CmEnrollmentServiceServer).CalculateEffectiveCmEnrollment(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: CmEnrollmentService_CalculateEffectiveCmEnrollment_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CmEnrollmentServiceServer).CalculateEffectiveCmEnrollment(ctx, req.(*CalculateEffectiveCmEnrollmentRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// CmEnrollmentService_ServiceDesc is the grpc.ServiceDesc for CmEnrollmentService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var CmEnrollmentService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "google.cloud.cloudsecuritycompliance.v1.CmEnrollmentService", + HandlerType: (*CmEnrollmentServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "UpdateCmEnrollment", + Handler: _CmEnrollmentService_UpdateCmEnrollment_Handler, + }, + { + MethodName: "CalculateEffectiveCmEnrollment", + Handler: _CmEnrollmentService_CalculateEffectiveCmEnrollment_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "google/cloud/cloudsecuritycompliance/v1/cm_enrollment_service.proto", +} diff --git a/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb/common.pb.go b/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb/common.pb.go new file mode 100644 index 000000000000..11a5048b6cc0 --- /dev/null +++ b/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb/common.pb.go @@ -0,0 +1,2976 @@ +// Copyright 2025 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 +// +// http://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. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.35.2 +// protoc v4.25.7 +// source: google/cloud/cloudsecuritycompliance/v1/common.proto + +package cloudsecuritycompliancepb + +import ( + reflect "reflect" + sync "sync" + + _ "google.golang.org/genproto/googleapis/api/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// The responsibility type for the regulatory control. +type RegulatoryControlResponsibilityType int32 + +const ( + // Default value. This value is unused. + RegulatoryControlResponsibilityType_REGULATORY_CONTROL_RESPONSIBILITY_TYPE_UNSPECIFIED RegulatoryControlResponsibilityType = 0 + // Google's responsibility. + RegulatoryControlResponsibilityType_GOOGLE RegulatoryControlResponsibilityType = 1 + // Your responsibility. + RegulatoryControlResponsibilityType_CUSTOMER RegulatoryControlResponsibilityType = 2 + // Shared responsibility. + RegulatoryControlResponsibilityType_SHARED RegulatoryControlResponsibilityType = 3 +) + +// Enum value maps for RegulatoryControlResponsibilityType. +var ( + RegulatoryControlResponsibilityType_name = map[int32]string{ + 0: "REGULATORY_CONTROL_RESPONSIBILITY_TYPE_UNSPECIFIED", + 1: "GOOGLE", + 2: "CUSTOMER", + 3: "SHARED", + } + RegulatoryControlResponsibilityType_value = map[string]int32{ + "REGULATORY_CONTROL_RESPONSIBILITY_TYPE_UNSPECIFIED": 0, + "GOOGLE": 1, + "CUSTOMER": 2, + "SHARED": 3, + } +) + +func (x RegulatoryControlResponsibilityType) Enum() *RegulatoryControlResponsibilityType { + p := new(RegulatoryControlResponsibilityType) + *p = x + return p +} + +func (x RegulatoryControlResponsibilityType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (RegulatoryControlResponsibilityType) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_cloudsecuritycompliance_v1_common_proto_enumTypes[0].Descriptor() +} + +func (RegulatoryControlResponsibilityType) Type() protoreflect.EnumType { + return &file_google_cloud_cloudsecuritycompliance_v1_common_proto_enumTypes[0] +} + +func (x RegulatoryControlResponsibilityType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use RegulatoryControlResponsibilityType.Descriptor instead. +func (RegulatoryControlResponsibilityType) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_common_proto_rawDescGZIP(), []int{0} +} + +// The enforcement mode for the cloud control. +type EnforcementMode int32 + +const ( + // Default value. This value is unused. + EnforcementMode_ENFORCEMENT_MODE_UNSPECIFIED EnforcementMode = 0 + // The cloud control is enforced to prevent non-compliance. + EnforcementMode_PREVENTIVE EnforcementMode = 1 + // The cloud control is enforced to detect non-compliance. + EnforcementMode_DETECTIVE EnforcementMode = 2 + // The cloud control is enforced to audit for non-compliance. + EnforcementMode_AUDIT EnforcementMode = 3 +) + +// Enum value maps for EnforcementMode. +var ( + EnforcementMode_name = map[int32]string{ + 0: "ENFORCEMENT_MODE_UNSPECIFIED", + 1: "PREVENTIVE", + 2: "DETECTIVE", + 3: "AUDIT", + } + EnforcementMode_value = map[string]int32{ + "ENFORCEMENT_MODE_UNSPECIFIED": 0, + "PREVENTIVE": 1, + "DETECTIVE": 2, + "AUDIT": 3, + } +) + +func (x EnforcementMode) Enum() *EnforcementMode { + p := new(EnforcementMode) + *p = x + return p +} + +func (x EnforcementMode) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (EnforcementMode) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_cloudsecuritycompliance_v1_common_proto_enumTypes[1].Descriptor() +} + +func (EnforcementMode) Type() protoreflect.EnumType { + return &file_google_cloud_cloudsecuritycompliance_v1_common_proto_enumTypes[1] +} + +func (x EnforcementMode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use EnforcementMode.Descriptor instead. +func (EnforcementMode) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_common_proto_rawDescGZIP(), []int{1} +} + +// The category for the framework. +type FrameworkCategory int32 + +const ( + // Default value. This value is unused. + FrameworkCategory_FRAMEWORK_CATEGORY_UNSPECIFIED FrameworkCategory = 0 + // An industry-defined framework. + FrameworkCategory_INDUSTRY_DEFINED_STANDARD FrameworkCategory = 1 + // An Assured Workloads framework. + FrameworkCategory_ASSURED_WORKLOADS FrameworkCategory = 2 + // A data security posture framework. + FrameworkCategory_DATA_SECURITY FrameworkCategory = 3 + // A Google's best practices framework. + FrameworkCategory_GOOGLE_BEST_PRACTICES FrameworkCategory = 4 + // A user-created framework. + FrameworkCategory_CUSTOM_FRAMEWORK FrameworkCategory = 5 +) + +// Enum value maps for FrameworkCategory. +var ( + FrameworkCategory_name = map[int32]string{ + 0: "FRAMEWORK_CATEGORY_UNSPECIFIED", + 1: "INDUSTRY_DEFINED_STANDARD", + 2: "ASSURED_WORKLOADS", + 3: "DATA_SECURITY", + 4: "GOOGLE_BEST_PRACTICES", + 5: "CUSTOM_FRAMEWORK", + } + FrameworkCategory_value = map[string]int32{ + "FRAMEWORK_CATEGORY_UNSPECIFIED": 0, + "INDUSTRY_DEFINED_STANDARD": 1, + "ASSURED_WORKLOADS": 2, + "DATA_SECURITY": 3, + "GOOGLE_BEST_PRACTICES": 4, + "CUSTOM_FRAMEWORK": 5, + } +) + +func (x FrameworkCategory) Enum() *FrameworkCategory { + p := new(FrameworkCategory) + *p = x + return p +} + +func (x FrameworkCategory) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (FrameworkCategory) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_cloudsecuritycompliance_v1_common_proto_enumTypes[2].Descriptor() +} + +func (FrameworkCategory) Type() protoreflect.EnumType { + return &file_google_cloud_cloudsecuritycompliance_v1_common_proto_enumTypes[2] +} + +func (x FrameworkCategory) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use FrameworkCategory.Descriptor instead. +func (FrameworkCategory) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_common_proto_rawDescGZIP(), []int{2} +} + +// The category for the cloud control. +type CloudControlCategory int32 + +const ( + // Default value. This value is unused. + CloudControlCategory_CLOUD_CONTROL_CATEGORY_UNSPECIFIED CloudControlCategory = 0 + // The infrastructure security category. + CloudControlCategory_CC_CATEGORY_INFRASTRUCTURE CloudControlCategory = 1 + // The artificial intelligence category. + CloudControlCategory_CC_CATEGORY_ARTIFICIAL_INTELLIGENCE CloudControlCategory = 2 + // The physical security category. + CloudControlCategory_CC_CATEGORY_PHYSICAL_SECURITY CloudControlCategory = 3 + // The data security category. + CloudControlCategory_CC_CATEGORY_DATA_SECURITY CloudControlCategory = 4 + // The network security category. + CloudControlCategory_CC_CATEGORY_NETWORK_SECURITY CloudControlCategory = 5 + // The incident management category. + CloudControlCategory_CC_CATEGORY_INCIDENT_MANAGEMENT CloudControlCategory = 6 + // The identity and access management category. + CloudControlCategory_CC_CATEGORY_IDENTITY_AND_ACCESS_MANAGEMENT CloudControlCategory = 7 + // The encryption category. + CloudControlCategory_CC_CATEGORY_ENCRYPTION CloudControlCategory = 8 + // The logs management and infrastructure category. + CloudControlCategory_CC_CATEGORY_LOGS_MANAGEMENT_AND_INFRASTRUCTURE CloudControlCategory = 9 + // The HR, admin, and processes category. + CloudControlCategory_CC_CATEGORY_HR_ADMIN_AND_PROCESSES CloudControlCategory = 10 + // The third-party and sub-processor management category. + CloudControlCategory_CC_CATEGORY_THIRD_PARTY_AND_SUB_PROCESSOR_MANAGEMENT CloudControlCategory = 11 + // The legal and disclosures category. + CloudControlCategory_CC_CATEGORY_LEGAL_AND_DISCLOSURES CloudControlCategory = 12 + // The vulnerability management category. + CloudControlCategory_CC_CATEGORY_VULNERABILITY_MANAGEMENT CloudControlCategory = 13 + // The privacy category. + CloudControlCategory_CC_CATEGORY_PRIVACY CloudControlCategory = 14 + // The business continuity and disaster recovery (BCDR) category. + CloudControlCategory_CC_CATEGORY_BCDR CloudControlCategory = 15 +) + +// Enum value maps for CloudControlCategory. +var ( + CloudControlCategory_name = map[int32]string{ + 0: "CLOUD_CONTROL_CATEGORY_UNSPECIFIED", + 1: "CC_CATEGORY_INFRASTRUCTURE", + 2: "CC_CATEGORY_ARTIFICIAL_INTELLIGENCE", + 3: "CC_CATEGORY_PHYSICAL_SECURITY", + 4: "CC_CATEGORY_DATA_SECURITY", + 5: "CC_CATEGORY_NETWORK_SECURITY", + 6: "CC_CATEGORY_INCIDENT_MANAGEMENT", + 7: "CC_CATEGORY_IDENTITY_AND_ACCESS_MANAGEMENT", + 8: "CC_CATEGORY_ENCRYPTION", + 9: "CC_CATEGORY_LOGS_MANAGEMENT_AND_INFRASTRUCTURE", + 10: "CC_CATEGORY_HR_ADMIN_AND_PROCESSES", + 11: "CC_CATEGORY_THIRD_PARTY_AND_SUB_PROCESSOR_MANAGEMENT", + 12: "CC_CATEGORY_LEGAL_AND_DISCLOSURES", + 13: "CC_CATEGORY_VULNERABILITY_MANAGEMENT", + 14: "CC_CATEGORY_PRIVACY", + 15: "CC_CATEGORY_BCDR", + } + CloudControlCategory_value = map[string]int32{ + "CLOUD_CONTROL_CATEGORY_UNSPECIFIED": 0, + "CC_CATEGORY_INFRASTRUCTURE": 1, + "CC_CATEGORY_ARTIFICIAL_INTELLIGENCE": 2, + "CC_CATEGORY_PHYSICAL_SECURITY": 3, + "CC_CATEGORY_DATA_SECURITY": 4, + "CC_CATEGORY_NETWORK_SECURITY": 5, + "CC_CATEGORY_INCIDENT_MANAGEMENT": 6, + "CC_CATEGORY_IDENTITY_AND_ACCESS_MANAGEMENT": 7, + "CC_CATEGORY_ENCRYPTION": 8, + "CC_CATEGORY_LOGS_MANAGEMENT_AND_INFRASTRUCTURE": 9, + "CC_CATEGORY_HR_ADMIN_AND_PROCESSES": 10, + "CC_CATEGORY_THIRD_PARTY_AND_SUB_PROCESSOR_MANAGEMENT": 11, + "CC_CATEGORY_LEGAL_AND_DISCLOSURES": 12, + "CC_CATEGORY_VULNERABILITY_MANAGEMENT": 13, + "CC_CATEGORY_PRIVACY": 14, + "CC_CATEGORY_BCDR": 15, + } +) + +func (x CloudControlCategory) Enum() *CloudControlCategory { + p := new(CloudControlCategory) + *p = x + return p +} + +func (x CloudControlCategory) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (CloudControlCategory) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_cloudsecuritycompliance_v1_common_proto_enumTypes[3].Descriptor() +} + +func (CloudControlCategory) Type() protoreflect.EnumType { + return &file_google_cloud_cloudsecuritycompliance_v1_common_proto_enumTypes[3] +} + +func (x CloudControlCategory) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CloudControlCategory.Descriptor instead. +func (CloudControlCategory) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_common_proto_rawDescGZIP(), []int{3} +} + +// The cloud provider that's associated with the cloud control. +type CloudProvider int32 + +const ( + // Default value. This value is unused. + CloudProvider_CLOUD_PROVIDER_UNSPECIFIED CloudProvider = 0 + // Amazon Web Services (AWS). + CloudProvider_AWS CloudProvider = 1 + // Microsoft Azure. + CloudProvider_AZURE CloudProvider = 2 + // Google Cloud. + CloudProvider_GCP CloudProvider = 3 +) + +// Enum value maps for CloudProvider. +var ( + CloudProvider_name = map[int32]string{ + 0: "CLOUD_PROVIDER_UNSPECIFIED", + 1: "AWS", + 2: "AZURE", + 3: "GCP", + } + CloudProvider_value = map[string]int32{ + "CLOUD_PROVIDER_UNSPECIFIED": 0, + "AWS": 1, + "AZURE": 2, + "GCP": 3, + } +) + +func (x CloudProvider) Enum() *CloudProvider { + p := new(CloudProvider) + *p = x + return p +} + +func (x CloudProvider) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (CloudProvider) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_cloudsecuritycompliance_v1_common_proto_enumTypes[4].Descriptor() +} + +func (CloudProvider) Type() protoreflect.EnumType { + return &file_google_cloud_cloudsecuritycompliance_v1_common_proto_enumTypes[4] +} + +func (x CloudProvider) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CloudProvider.Descriptor instead. +func (CloudProvider) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_common_proto_rawDescGZIP(), []int{4} +} + +// The severity of the finding. +type Severity int32 + +const ( + // Default value. This value is unused. + Severity_SEVERITY_UNSPECIFIED Severity = 0 + // A critical vulnerability is easily discoverable by an external actor, + // exploitable, and results in the direct ability to execute arbitrary code, + // exfiltrate data, and otherwise gain additional access and privileges to + // cloud resources and workloads. Examples include publicly accessible + // unprotected user data and public SSH access with weak or no + // passwords. + // + // A critical threat is a threat that can access, modify, or delete data or + // execute unauthorized code within existing resources. + Severity_CRITICAL Severity = 1 + // A high-risk vulnerability can be easily discovered and exploited in + // combination with other vulnerabilities to gain direct access and + // the ability to execute arbitrary code, exfiltrate data, and otherwise + // gain additional access and privileges to cloud resources and workloads. + // An example is a database with weak or no passwords that is only + // accessible internally. This database could easily be compromised by an + // actor that had access to the internal network. + // + // A high-risk threat is a threat that can create new computational + // resources in an environment but can't access data or execute code in + // existing resources. + Severity_HIGH Severity = 2 + // A medium-risk vulnerability can be used by an actor to gain access to + // resources or privileges that enable them to eventually (through multiple + // steps or a complex exploit) gain access and the ability to execute + // arbitrary code or exfiltrate data. An example is a service account with + // access to more projects than it should have. If an actor gains access to + // the service account, they could potentially use that access to manipulate + // a project the service account was not intended to. + // + // A medium-risk threat can cause operational impact but might not + // access data or execute unauthorized code. + Severity_MEDIUM Severity = 3 + // A low-risk vulnerability hampers a security organization's ability to + // detect vulnerabilities or active threats in their deployment, or prevents + // the root cause investigation of security issues. An example is monitoring + // and logs being disabled for resource configurations and access. + // + // A low-risk threat is a threat that has obtained minimal access to an + // environment but can't access data, execute code, or create resources. + Severity_LOW Severity = 4 +) + +// Enum value maps for Severity. +var ( + Severity_name = map[int32]string{ + 0: "SEVERITY_UNSPECIFIED", + 1: "CRITICAL", + 2: "HIGH", + 3: "MEDIUM", + 4: "LOW", + } + Severity_value = map[string]int32{ + "SEVERITY_UNSPECIFIED": 0, + "CRITICAL": 1, + "HIGH": 2, + "MEDIUM": 3, + "LOW": 4, + } +) + +func (x Severity) Enum() *Severity { + p := new(Severity) + *p = x + return p +} + +func (x Severity) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Severity) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_cloudsecuritycompliance_v1_common_proto_enumTypes[5].Descriptor() +} + +func (Severity) Type() protoreflect.EnumType { + return &file_google_cloud_cloudsecuritycompliance_v1_common_proto_enumTypes[5] +} + +func (x Severity) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Severity.Descriptor instead. +func (Severity) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_common_proto_rawDescGZIP(), []int{5} +} + +// The action type of the rule. +type RuleActionType int32 + +const ( + // Default value. This value is unused. + RuleActionType_RULE_ACTION_TYPE_UNSPECIFIED RuleActionType = 0 + // The rule is intended to prevent non-compliance. + RuleActionType_RULE_ACTION_TYPE_PREVENTIVE RuleActionType = 1 + // The rule is intended to detect non-compliance. + RuleActionType_RULE_ACTION_TYPE_DETECTIVE RuleActionType = 2 + // The rule is intended to audit non-compliance. + RuleActionType_RULE_ACTION_TYPE_AUDIT RuleActionType = 3 +) + +// Enum value maps for RuleActionType. +var ( + RuleActionType_name = map[int32]string{ + 0: "RULE_ACTION_TYPE_UNSPECIFIED", + 1: "RULE_ACTION_TYPE_PREVENTIVE", + 2: "RULE_ACTION_TYPE_DETECTIVE", + 3: "RULE_ACTION_TYPE_AUDIT", + } + RuleActionType_value = map[string]int32{ + "RULE_ACTION_TYPE_UNSPECIFIED": 0, + "RULE_ACTION_TYPE_PREVENTIVE": 1, + "RULE_ACTION_TYPE_DETECTIVE": 2, + "RULE_ACTION_TYPE_AUDIT": 3, + } +) + +func (x RuleActionType) Enum() *RuleActionType { + p := new(RuleActionType) + *p = x + return p +} + +func (x RuleActionType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (RuleActionType) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_cloudsecuritycompliance_v1_common_proto_enumTypes[6].Descriptor() +} + +func (RuleActionType) Type() protoreflect.EnumType { + return &file_google_cloud_cloudsecuritycompliance_v1_common_proto_enumTypes[6] +} + +func (x RuleActionType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use RuleActionType.Descriptor instead. +func (RuleActionType) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_common_proto_rawDescGZIP(), []int{6} +} + +// The type of resource that a control or framework can be applied to. +type TargetResourceType int32 + +const ( + // Default value. This value is unused. + TargetResourceType_TARGET_RESOURCE_TYPE_UNSPECIFIED TargetResourceType = 0 + // The target resource is a Google Cloud organization. + TargetResourceType_TARGET_RESOURCE_CRM_TYPE_ORG TargetResourceType = 1 + // The target resource is a folder. + TargetResourceType_TARGET_RESOURCE_CRM_TYPE_FOLDER TargetResourceType = 2 + // The target resource is a project. + TargetResourceType_TARGET_RESOURCE_CRM_TYPE_PROJECT TargetResourceType = 3 + // The target resource is an application in App Hub. + TargetResourceType_TARGET_RESOURCE_TYPE_APPLICATION TargetResourceType = 4 +) + +// Enum value maps for TargetResourceType. +var ( + TargetResourceType_name = map[int32]string{ + 0: "TARGET_RESOURCE_TYPE_UNSPECIFIED", + 1: "TARGET_RESOURCE_CRM_TYPE_ORG", + 2: "TARGET_RESOURCE_CRM_TYPE_FOLDER", + 3: "TARGET_RESOURCE_CRM_TYPE_PROJECT", + 4: "TARGET_RESOURCE_TYPE_APPLICATION", + } + TargetResourceType_value = map[string]int32{ + "TARGET_RESOURCE_TYPE_UNSPECIFIED": 0, + "TARGET_RESOURCE_CRM_TYPE_ORG": 1, + "TARGET_RESOURCE_CRM_TYPE_FOLDER": 2, + "TARGET_RESOURCE_CRM_TYPE_PROJECT": 3, + "TARGET_RESOURCE_TYPE_APPLICATION": 4, + } +) + +func (x TargetResourceType) Enum() *TargetResourceType { + p := new(TargetResourceType) + *p = x + return p +} + +func (x TargetResourceType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (TargetResourceType) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_cloudsecuritycompliance_v1_common_proto_enumTypes[7].Descriptor() +} + +func (TargetResourceType) Type() protoreflect.EnumType { + return &file_google_cloud_cloudsecuritycompliance_v1_common_proto_enumTypes[7] +} + +func (x TargetResourceType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use TargetResourceType.Descriptor instead. +func (TargetResourceType) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_common_proto_rawDescGZIP(), []int{7} +} + +// The type of framework. +type Framework_FrameworkType int32 + +const ( + // Default value. This value is unused. + Framework_FRAMEWORK_TYPE_UNSPECIFIED Framework_FrameworkType = 0 + // A framework that's provided and managed by Google. + Framework_BUILT_IN Framework_FrameworkType = 1 + // A framework that's created and managed by you. + Framework_CUSTOM Framework_FrameworkType = 2 +) + +// Enum value maps for Framework_FrameworkType. +var ( + Framework_FrameworkType_name = map[int32]string{ + 0: "FRAMEWORK_TYPE_UNSPECIFIED", + 1: "BUILT_IN", + 2: "CUSTOM", + } + Framework_FrameworkType_value = map[string]int32{ + "FRAMEWORK_TYPE_UNSPECIFIED": 0, + "BUILT_IN": 1, + "CUSTOM": 2, + } +) + +func (x Framework_FrameworkType) Enum() *Framework_FrameworkType { + p := new(Framework_FrameworkType) + *p = x + return p +} + +func (x Framework_FrameworkType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Framework_FrameworkType) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_cloudsecuritycompliance_v1_common_proto_enumTypes[8].Descriptor() +} + +func (Framework_FrameworkType) Type() protoreflect.EnumType { + return &file_google_cloud_cloudsecuritycompliance_v1_common_proto_enumTypes[8] +} + +func (x Framework_FrameworkType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Framework_FrameworkType.Descriptor instead. +func (Framework_FrameworkType) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_common_proto_rawDescGZIP(), []int{0, 0} +} + +// The type of cloud control. +type CloudControl_Type int32 + +const ( + // Default value. This value is unused. + CloudControl_TYPE_UNSPECIFIED CloudControl_Type = 0 + // A cloud control that's created and managed by you. + CloudControl_CUSTOM CloudControl_Type = 1 + // A cloud control that's provided and managed by Google. + CloudControl_BUILT_IN CloudControl_Type = 2 +) + +// Enum value maps for CloudControl_Type. +var ( + CloudControl_Type_name = map[int32]string{ + 0: "TYPE_UNSPECIFIED", + 1: "CUSTOM", + 2: "BUILT_IN", + } + CloudControl_Type_value = map[string]int32{ + "TYPE_UNSPECIFIED": 0, + "CUSTOM": 1, + "BUILT_IN": 2, + } +) + +func (x CloudControl_Type) Enum() *CloudControl_Type { + p := new(CloudControl_Type) + *p = x + return p +} + +func (x CloudControl_Type) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (CloudControl_Type) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_cloudsecuritycompliance_v1_common_proto_enumTypes[9].Descriptor() +} + +func (CloudControl_Type) Type() protoreflect.EnumType { + return &file_google_cloud_cloudsecuritycompliance_v1_common_proto_enumTypes[9] +} + +func (x CloudControl_Type) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CloudControl_Type.Descriptor instead. +func (CloudControl_Type) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_common_proto_rawDescGZIP(), []int{4, 0} +} + +// The type of parameter value. +type ParameterSpec_ValueType int32 + +const ( + // Default value. This value is unused. + ParameterSpec_VALUE_TYPE_UNSPECIFIED ParameterSpec_ValueType = 0 + // A string value. + ParameterSpec_STRING ParameterSpec_ValueType = 3 + // A boolean value. + ParameterSpec_BOOLEAN ParameterSpec_ValueType = 4 + // A string list value. + ParameterSpec_STRINGLIST ParameterSpec_ValueType = 5 + // A numeric value. + ParameterSpec_NUMBER ParameterSpec_ValueType = 6 + // A oneOf value. + ParameterSpec_ONEOF ParameterSpec_ValueType = 7 +) + +// Enum value maps for ParameterSpec_ValueType. +var ( + ParameterSpec_ValueType_name = map[int32]string{ + 0: "VALUE_TYPE_UNSPECIFIED", + 3: "STRING", + 4: "BOOLEAN", + 5: "STRINGLIST", + 6: "NUMBER", + 7: "ONEOF", + } + ParameterSpec_ValueType_value = map[string]int32{ + "VALUE_TYPE_UNSPECIFIED": 0, + "STRING": 3, + "BOOLEAN": 4, + "STRINGLIST": 5, + "NUMBER": 6, + "ONEOF": 7, + } +) + +func (x ParameterSpec_ValueType) Enum() *ParameterSpec_ValueType { + p := new(ParameterSpec_ValueType) + *p = x + return p +} + +func (x ParameterSpec_ValueType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ParameterSpec_ValueType) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_cloudsecuritycompliance_v1_common_proto_enumTypes[10].Descriptor() +} + +func (ParameterSpec_ValueType) Type() protoreflect.EnumType { + return &file_google_cloud_cloudsecuritycompliance_v1_common_proto_enumTypes[10] +} + +func (x ParameterSpec_ValueType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ParameterSpec_ValueType.Descriptor instead. +func (ParameterSpec_ValueType) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_common_proto_rawDescGZIP(), []int{5, 0} +} + +// A framework is a collection of cloud controls and regulatory controls +// that represent security best practices or industry-defined standards such as +// FedRAMP or NIST. +type Framework struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Identifier. The name of the framework, in the format + // `organizations/{organization}/locations/{location}/frameworks/{framework_id}`. + // The only supported location is `global`. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Output only. The major version of the framework, which is incremented in + // ascending order. + MajorRevisionId int64 `protobuf:"varint,2,opt,name=major_revision_id,json=majorRevisionId,proto3" json:"major_revision_id,omitempty"` + // Optional. The friendly name of the framework. The maximum length is 200 + // characters. + DisplayName string `protobuf:"bytes,4,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + // Optional. The description of the framework. The maximum length is 2000 + // characters. + Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"` + // Output only. The type of framework. + Type Framework_FrameworkType `protobuf:"varint,6,opt,name=type,proto3,enum=google.cloud.cloudsecuritycompliance.v1.Framework_FrameworkType" json:"type,omitempty"` + // Optional. The cloud control details that are directly added without any + // grouping in the framework. + CloudControlDetails []*CloudControlDetails `protobuf:"bytes,8,rep,name=cloud_control_details,json=cloudControlDetails,proto3" json:"cloud_control_details,omitempty"` + // Optional. The category of the framework. + Category []FrameworkCategory `protobuf:"varint,9,rep,packed,name=category,proto3,enum=google.cloud.cloudsecuritycompliance.v1.FrameworkCategory" json:"category,omitempty"` + // Output only. The cloud providers that are supported by the framework. + SupportedCloudProviders []CloudProvider `protobuf:"varint,10,rep,packed,name=supported_cloud_providers,json=supportedCloudProviders,proto3,enum=google.cloud.cloudsecuritycompliance.v1.CloudProvider" json:"supported_cloud_providers,omitempty"` + // Output only. The target resource types that are supported by the framework. + SupportedTargetResourceTypes []TargetResourceType `protobuf:"varint,11,rep,packed,name=supported_target_resource_types,json=supportedTargetResourceTypes,proto3,enum=google.cloud.cloudsecuritycompliance.v1.TargetResourceType" json:"supported_target_resource_types,omitempty"` + // Output only. The supported enforcement modes of the framework. + SupportedEnforcementModes []EnforcementMode `protobuf:"varint,13,rep,packed,name=supported_enforcement_modes,json=supportedEnforcementModes,proto3,enum=google.cloud.cloudsecuritycompliance.v1.EnforcementMode" json:"supported_enforcement_modes,omitempty"` +} + +func (x *Framework) Reset() { + *x = Framework{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Framework) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Framework) ProtoMessage() {} + +func (x *Framework) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Framework.ProtoReflect.Descriptor instead. +func (*Framework) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_common_proto_rawDescGZIP(), []int{0} +} + +func (x *Framework) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Framework) GetMajorRevisionId() int64 { + if x != nil { + return x.MajorRevisionId + } + return 0 +} + +func (x *Framework) GetDisplayName() string { + if x != nil { + return x.DisplayName + } + return "" +} + +func (x *Framework) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *Framework) GetType() Framework_FrameworkType { + if x != nil { + return x.Type + } + return Framework_FRAMEWORK_TYPE_UNSPECIFIED +} + +func (x *Framework) GetCloudControlDetails() []*CloudControlDetails { + if x != nil { + return x.CloudControlDetails + } + return nil +} + +func (x *Framework) GetCategory() []FrameworkCategory { + if x != nil { + return x.Category + } + return nil +} + +func (x *Framework) GetSupportedCloudProviders() []CloudProvider { + if x != nil { + return x.SupportedCloudProviders + } + return nil +} + +func (x *Framework) GetSupportedTargetResourceTypes() []TargetResourceType { + if x != nil { + return x.SupportedTargetResourceTypes + } + return nil +} + +func (x *Framework) GetSupportedEnforcementModes() []EnforcementMode { + if x != nil { + return x.SupportedEnforcementModes + } + return nil +} + +// The details of a cloud control. +type CloudControlDetails struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The name of the cloud control, in the format + // `organizations/{organization}/locations/{location}/cloudControls/{cloud-control}`. + // The only supported location is `global`. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Required. The major version of the cloud control. + MajorRevisionId int64 `protobuf:"varint,2,opt,name=major_revision_id,json=majorRevisionId,proto3" json:"major_revision_id,omitempty"` + // Optional. Parameters are key-value pairs that let you provide your custom + // location requirements, environment requirements, or other settings that are + // relevant to the cloud control. An example parameter is + // `{"name": "location","value": "us-west-1"}`. + Parameters []*Parameter `protobuf:"bytes,4,rep,name=parameters,proto3" json:"parameters,omitempty"` +} + +func (x *CloudControlDetails) Reset() { + *x = CloudControlDetails{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CloudControlDetails) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CloudControlDetails) ProtoMessage() {} + +func (x *CloudControlDetails) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CloudControlDetails.ProtoReflect.Descriptor instead. +func (*CloudControlDetails) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_common_proto_rawDescGZIP(), []int{1} +} + +func (x *CloudControlDetails) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *CloudControlDetails) GetMajorRevisionId() int64 { + if x != nil { + return x.MajorRevisionId + } + return 0 +} + +func (x *CloudControlDetails) GetParameters() []*Parameter { + if x != nil { + return x.Parameters + } + return nil +} + +// The reference of a framework, in the format +// `organizations/{organization}/locations/{location}/frameworks/{framework}`. +// The only supported location is `global`. +type FrameworkReference struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The major version of the framework. If not specified, the version + // corresponds to the latest version of the framework. + Framework string `protobuf:"bytes,1,opt,name=framework,proto3" json:"framework,omitempty"` + // Optional. The major version of the framework. If not specified, the version + // corresponds to the latest version of the framework. + MajorRevisionId *int64 `protobuf:"varint,2,opt,name=major_revision_id,json=majorRevisionId,proto3,oneof" json:"major_revision_id,omitempty"` +} + +func (x *FrameworkReference) Reset() { + *x = FrameworkReference{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FrameworkReference) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FrameworkReference) ProtoMessage() {} + +func (x *FrameworkReference) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FrameworkReference.ProtoReflect.Descriptor instead. +func (*FrameworkReference) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_common_proto_rawDescGZIP(), []int{2} +} + +func (x *FrameworkReference) GetFramework() string { + if x != nil { + return x.Framework + } + return "" +} + +func (x *FrameworkReference) GetMajorRevisionId() int64 { + if x != nil && x.MajorRevisionId != nil { + return *x.MajorRevisionId + } + return 0 +} + +// Parameters are key-value pairs that let you provide your custom location +// requirements, environment requirements, or other settings that are +// relevant to the cloud control. +type Parameter struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The name or key of the parameter. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Required. The value of the parameter. + ParameterValue *ParamValue `protobuf:"bytes,2,opt,name=parameter_value,json=parameterValue,proto3" json:"parameter_value,omitempty"` +} + +func (x *Parameter) Reset() { + *x = Parameter{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Parameter) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Parameter) ProtoMessage() {} + +func (x *Parameter) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Parameter.ProtoReflect.Descriptor instead. +func (*Parameter) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_common_proto_rawDescGZIP(), []int{3} +} + +func (x *Parameter) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Parameter) GetParameterValue() *ParamValue { + if x != nil { + return x.ParameterValue + } + return nil +} + +// A cloud control is a set of rules and associated metadata that you can +// use to define your organization's security or compliance intent. +type CloudControl struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Identifier. The name of the cloud control, in the format + // `organizations/{organization}/locations/{location}/cloudControls/{cloud_control_id}`. + // The only supported location is `global`. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Output only. The major version of the cloud control, which is incremented + // in ascending order. + MajorRevisionId int64 `protobuf:"varint,2,opt,name=major_revision_id,json=majorRevisionId,proto3" json:"major_revision_id,omitempty"` + // Optional. A description of the cloud control. The maximum length is 2000 + // characters. + Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` + // Optional. The friendly name of the cloud control. The maximum length is 200 + // characters. + DisplayName string `protobuf:"bytes,5,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + // Output only. The supported enforcement modes for the cloud control. + SupportedEnforcementModes []EnforcementMode `protobuf:"varint,7,rep,packed,name=supported_enforcement_modes,json=supportedEnforcementModes,proto3,enum=google.cloud.cloudsecuritycompliance.v1.EnforcementMode" json:"supported_enforcement_modes,omitempty"` + // Optional. The parameter specifications for the cloud control. + ParameterSpec []*ParameterSpec `protobuf:"bytes,8,rep,name=parameter_spec,json=parameterSpec,proto3" json:"parameter_spec,omitempty"` + // Optional. The rules that you can enforce to meet your security or + // compliance intent. + Rules []*Rule `protobuf:"bytes,9,rep,name=rules,proto3" json:"rules,omitempty"` + // Optional. The severity of the findings that are generated by the cloud + // control. + Severity Severity `protobuf:"varint,11,opt,name=severity,proto3,enum=google.cloud.cloudsecuritycompliance.v1.Severity" json:"severity,omitempty"` + // Optional. The finding category for the cloud control findings. The maximum + // length is 255 characters. + FindingCategory string `protobuf:"bytes,12,opt,name=finding_category,json=findingCategory,proto3" json:"finding_category,omitempty"` + // Optional. The supported cloud providers. + SupportedCloudProviders []CloudProvider `protobuf:"varint,13,rep,packed,name=supported_cloud_providers,json=supportedCloudProviders,proto3,enum=google.cloud.cloudsecuritycompliance.v1.CloudProvider" json:"supported_cloud_providers,omitempty"` + // Output only. The frameworks that include this cloud control. + RelatedFrameworks []string `protobuf:"bytes,14,rep,name=related_frameworks,json=relatedFrameworks,proto3" json:"related_frameworks,omitempty"` + // Optional. The remediation steps for the cloud control findings. The + // maximum length is 400 characters. + RemediationSteps string `protobuf:"bytes,15,opt,name=remediation_steps,json=remediationSteps,proto3" json:"remediation_steps,omitempty"` + // Optional. The categories for the cloud control. + Categories []CloudControlCategory `protobuf:"varint,16,rep,packed,name=categories,proto3,enum=google.cloud.cloudsecuritycompliance.v1.CloudControlCategory" json:"categories,omitempty"` + // Output only. The time that the cloud control was last updated. + // `create_time` is used because a new cloud control is created + // whenever an existing cloud control is updated. + CreateTime *timestamppb.Timestamp `protobuf:"bytes,17,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` + // Optional. The target resource types that are supported by the cloud + // control. + SupportedTargetResourceTypes []TargetResourceType `protobuf:"varint,18,rep,packed,name=supported_target_resource_types,json=supportedTargetResourceTypes,proto3,enum=google.cloud.cloudsecuritycompliance.v1.TargetResourceType" json:"supported_target_resource_types,omitempty"` +} + +func (x *CloudControl) Reset() { + *x = CloudControl{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CloudControl) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CloudControl) ProtoMessage() {} + +func (x *CloudControl) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CloudControl.ProtoReflect.Descriptor instead. +func (*CloudControl) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_common_proto_rawDescGZIP(), []int{4} +} + +func (x *CloudControl) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *CloudControl) GetMajorRevisionId() int64 { + if x != nil { + return x.MajorRevisionId + } + return 0 +} + +func (x *CloudControl) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *CloudControl) GetDisplayName() string { + if x != nil { + return x.DisplayName + } + return "" +} + +func (x *CloudControl) GetSupportedEnforcementModes() []EnforcementMode { + if x != nil { + return x.SupportedEnforcementModes + } + return nil +} + +func (x *CloudControl) GetParameterSpec() []*ParameterSpec { + if x != nil { + return x.ParameterSpec + } + return nil +} + +func (x *CloudControl) GetRules() []*Rule { + if x != nil { + return x.Rules + } + return nil +} + +func (x *CloudControl) GetSeverity() Severity { + if x != nil { + return x.Severity + } + return Severity_SEVERITY_UNSPECIFIED +} + +func (x *CloudControl) GetFindingCategory() string { + if x != nil { + return x.FindingCategory + } + return "" +} + +func (x *CloudControl) GetSupportedCloudProviders() []CloudProvider { + if x != nil { + return x.SupportedCloudProviders + } + return nil +} + +func (x *CloudControl) GetRelatedFrameworks() []string { + if x != nil { + return x.RelatedFrameworks + } + return nil +} + +func (x *CloudControl) GetRemediationSteps() string { + if x != nil { + return x.RemediationSteps + } + return "" +} + +func (x *CloudControl) GetCategories() []CloudControlCategory { + if x != nil { + return x.Categories + } + return nil +} + +func (x *CloudControl) GetCreateTime() *timestamppb.Timestamp { + if x != nil { + return x.CreateTime + } + return nil +} + +func (x *CloudControl) GetSupportedTargetResourceTypes() []TargetResourceType { + if x != nil { + return x.SupportedTargetResourceTypes + } + return nil +} + +// The parameter specification for the cloud control. +type ParameterSpec struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The name of the parameter. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Optional. The friendly name of the parameter. The maximum length is 200 + // characters. + DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + // Optional. The description of the parameter. The maximum length is 2000 + // characters. + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + // Required. Whether the parameter is required. + IsRequired bool `protobuf:"varint,4,opt,name=is_required,json=isRequired,proto3" json:"is_required,omitempty"` + // Required. The parameter value type. + ValueType ParameterSpec_ValueType `protobuf:"varint,5,opt,name=value_type,json=valueType,proto3,enum=google.cloud.cloudsecuritycompliance.v1.ParameterSpec_ValueType" json:"value_type,omitempty"` + // Optional. The default value of the parameter. + DefaultValue *ParamValue `protobuf:"bytes,6,opt,name=default_value,json=defaultValue,proto3" json:"default_value,omitempty"` + // Optional. The list of parameter substitutions. + SubstitutionRules []*ParameterSubstitutionRule `protobuf:"bytes,7,rep,name=substitution_rules,json=substitutionRules,proto3" json:"substitution_rules,omitempty"` + // Optional. The parameter specification for `oneOf` attributes. + SubParameters []*ParameterSpec `protobuf:"bytes,8,rep,name=sub_parameters,json=subParameters,proto3" json:"sub_parameters,omitempty"` + // Optional. The permitted set of values for the parameter. + Validation *Validation `protobuf:"bytes,9,opt,name=validation,proto3" json:"validation,omitempty"` +} + +func (x *ParameterSpec) Reset() { + *x = ParameterSpec{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ParameterSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ParameterSpec) ProtoMessage() {} + +func (x *ParameterSpec) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ParameterSpec.ProtoReflect.Descriptor instead. +func (*ParameterSpec) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_common_proto_rawDescGZIP(), []int{5} +} + +func (x *ParameterSpec) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ParameterSpec) GetDisplayName() string { + if x != nil { + return x.DisplayName + } + return "" +} + +func (x *ParameterSpec) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *ParameterSpec) GetIsRequired() bool { + if x != nil { + return x.IsRequired + } + return false +} + +func (x *ParameterSpec) GetValueType() ParameterSpec_ValueType { + if x != nil { + return x.ValueType + } + return ParameterSpec_VALUE_TYPE_UNSPECIFIED +} + +func (x *ParameterSpec) GetDefaultValue() *ParamValue { + if x != nil { + return x.DefaultValue + } + return nil +} + +func (x *ParameterSpec) GetSubstitutionRules() []*ParameterSubstitutionRule { + if x != nil { + return x.SubstitutionRules + } + return nil +} + +func (x *ParameterSpec) GetSubParameters() []*ParameterSpec { + if x != nil { + return x.SubParameters + } + return nil +} + +func (x *ParameterSpec) GetValidation() *Validation { + if x != nil { + return x.Validation + } + return nil +} + +// The validation of the parameter. +type Validation struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Defines validators for parameter values. + // + // Types that are assignable to Constraint: + // + // *Validation_AllowedValues + // *Validation_IntRange + // *Validation_RegexpPattern + Constraint isValidation_Constraint `protobuf_oneof:"constraint"` +} + +func (x *Validation) Reset() { + *x = Validation{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Validation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Validation) ProtoMessage() {} + +func (x *Validation) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Validation.ProtoReflect.Descriptor instead. +func (*Validation) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_common_proto_rawDescGZIP(), []int{6} +} + +func (m *Validation) GetConstraint() isValidation_Constraint { + if m != nil { + return m.Constraint + } + return nil +} + +func (x *Validation) GetAllowedValues() *AllowedValues { + if x, ok := x.GetConstraint().(*Validation_AllowedValues); ok { + return x.AllowedValues + } + return nil +} + +func (x *Validation) GetIntRange() *IntRange { + if x, ok := x.GetConstraint().(*Validation_IntRange); ok { + return x.IntRange + } + return nil +} + +func (x *Validation) GetRegexpPattern() *RegexpPattern { + if x, ok := x.GetConstraint().(*Validation_RegexpPattern); ok { + return x.RegexpPattern + } + return nil +} + +type isValidation_Constraint interface { + isValidation_Constraint() +} + +type Validation_AllowedValues struct { + // The permitted set of values for the parameter. + AllowedValues *AllowedValues `protobuf:"bytes,1,opt,name=allowed_values,json=allowedValues,proto3,oneof"` +} + +type Validation_IntRange struct { + // The permitted range for numeric parameters. + IntRange *IntRange `protobuf:"bytes,2,opt,name=int_range,json=intRange,proto3,oneof"` +} + +type Validation_RegexpPattern struct { + // The regular expression for string parameters. + RegexpPattern *RegexpPattern `protobuf:"bytes,3,opt,name=regexp_pattern,json=regexpPattern,proto3,oneof"` +} + +func (*Validation_AllowedValues) isValidation_Constraint() {} + +func (*Validation_IntRange) isValidation_Constraint() {} + +func (*Validation_RegexpPattern) isValidation_Constraint() {} + +// The allowed set of values for the parameter. +type AllowedValues struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The list of allowed values for the parameter. + Values []*ParamValue `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"` +} + +func (x *AllowedValues) Reset() { + *x = AllowedValues{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AllowedValues) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AllowedValues) ProtoMessage() {} + +func (x *AllowedValues) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AllowedValues.ProtoReflect.Descriptor instead. +func (*AllowedValues) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_common_proto_rawDescGZIP(), []int{7} +} + +func (x *AllowedValues) GetValues() []*ParamValue { + if x != nil { + return x.Values + } + return nil +} + +// The regular expression (regex) validator for parameter values. +type RegexpPattern struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The regex pattern to match the values of the parameter with. + Pattern string `protobuf:"bytes,1,opt,name=pattern,proto3" json:"pattern,omitempty"` +} + +func (x *RegexpPattern) Reset() { + *x = RegexpPattern{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RegexpPattern) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RegexpPattern) ProtoMessage() {} + +func (x *RegexpPattern) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RegexpPattern.ProtoReflect.Descriptor instead. +func (*RegexpPattern) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_common_proto_rawDescGZIP(), []int{8} +} + +func (x *RegexpPattern) GetPattern() string { + if x != nil { + return x.Pattern + } + return "" +} + +// The number range for number parameters. +type IntRange struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The minimum permitted value for the numeric parameter + // (inclusive). + Min int64 `protobuf:"varint,1,opt,name=min,proto3" json:"min,omitempty"` + // Required. The maximum permitted value for the numeric parameter + // (inclusive). + Max int64 `protobuf:"varint,2,opt,name=max,proto3" json:"max,omitempty"` +} + +func (x *IntRange) Reset() { + *x = IntRange{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *IntRange) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*IntRange) ProtoMessage() {} + +func (x *IntRange) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use IntRange.ProtoReflect.Descriptor instead. +func (*IntRange) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_common_proto_rawDescGZIP(), []int{9} +} + +func (x *IntRange) GetMin() int64 { + if x != nil { + return x.Min + } + return 0 +} + +func (x *IntRange) GetMax() int64 { + if x != nil { + return x.Max + } + return 0 +} + +// A list of strings for the parameter value. +type StringList struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The strings in the list. + Values []string `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"` +} + +func (x *StringList) Reset() { + *x = StringList{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *StringList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StringList) ProtoMessage() {} + +func (x *StringList) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StringList.ProtoReflect.Descriptor instead. +func (*StringList) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_common_proto_rawDescGZIP(), []int{10} +} + +func (x *StringList) GetValues() []string { + if x != nil { + return x.Values + } + return nil +} + +// The possible parameter value types. +type ParamValue struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The list of possible parameter value types. + // + // Types that are assignable to Kind: + // + // *ParamValue_StringValue + // *ParamValue_BoolValue + // *ParamValue_StringListValue + // *ParamValue_NumberValue + // *ParamValue_OneofValue + Kind isParamValue_Kind `protobuf_oneof:"kind"` +} + +func (x *ParamValue) Reset() { + *x = ParamValue{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ParamValue) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ParamValue) ProtoMessage() {} + +func (x *ParamValue) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ParamValue.ProtoReflect.Descriptor instead. +func (*ParamValue) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_common_proto_rawDescGZIP(), []int{11} +} + +func (m *ParamValue) GetKind() isParamValue_Kind { + if m != nil { + return m.Kind + } + return nil +} + +func (x *ParamValue) GetStringValue() string { + if x, ok := x.GetKind().(*ParamValue_StringValue); ok { + return x.StringValue + } + return "" +} + +func (x *ParamValue) GetBoolValue() bool { + if x, ok := x.GetKind().(*ParamValue_BoolValue); ok { + return x.BoolValue + } + return false +} + +func (x *ParamValue) GetStringListValue() *StringList { + if x, ok := x.GetKind().(*ParamValue_StringListValue); ok { + return x.StringListValue + } + return nil +} + +func (x *ParamValue) GetNumberValue() float64 { + if x, ok := x.GetKind().(*ParamValue_NumberValue); ok { + return x.NumberValue + } + return 0 +} + +func (x *ParamValue) GetOneofValue() *Parameter { + if x, ok := x.GetKind().(*ParamValue_OneofValue); ok { + return x.OneofValue + } + return nil +} + +type isParamValue_Kind interface { + isParamValue_Kind() +} + +type ParamValue_StringValue struct { + // A string value. + StringValue string `protobuf:"bytes,3,opt,name=string_value,json=stringValue,proto3,oneof"` +} + +type ParamValue_BoolValue struct { + // A boolean value. + BoolValue bool `protobuf:"varint,4,opt,name=bool_value,json=boolValue,proto3,oneof"` +} + +type ParamValue_StringListValue struct { + // A repeated string. + StringListValue *StringList `protobuf:"bytes,5,opt,name=string_list_value,json=stringListValue,proto3,oneof"` +} + +type ParamValue_NumberValue struct { + // A double value. + NumberValue float64 `protobuf:"fixed64,6,opt,name=number_value,json=numberValue,proto3,oneof"` +} + +type ParamValue_OneofValue struct { + // Sub-parameter values. + OneofValue *Parameter `protobuf:"bytes,7,opt,name=oneof_value,json=oneofValue,proto3,oneof"` +} + +func (*ParamValue_StringValue) isParamValue_Kind() {} + +func (*ParamValue_BoolValue) isParamValue_Kind() {} + +func (*ParamValue_StringListValue) isParamValue_Kind() {} + +func (*ParamValue_NumberValue) isParamValue_Kind() {} + +func (*ParamValue_OneofValue) isParamValue_Kind() {} + +// The parameter substitution rules. +type ParameterSubstitutionRule struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The type of substitution. + // + // Types that are assignable to SubstitutionType: + // + // *ParameterSubstitutionRule_PlaceholderSubstitutionRule + // *ParameterSubstitutionRule_AttributeSubstitutionRule + SubstitutionType isParameterSubstitutionRule_SubstitutionType `protobuf_oneof:"substitution_type"` +} + +func (x *ParameterSubstitutionRule) Reset() { + *x = ParameterSubstitutionRule{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ParameterSubstitutionRule) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ParameterSubstitutionRule) ProtoMessage() {} + +func (x *ParameterSubstitutionRule) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes[12] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ParameterSubstitutionRule.ProtoReflect.Descriptor instead. +func (*ParameterSubstitutionRule) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_common_proto_rawDescGZIP(), []int{12} +} + +func (m *ParameterSubstitutionRule) GetSubstitutionType() isParameterSubstitutionRule_SubstitutionType { + if m != nil { + return m.SubstitutionType + } + return nil +} + +func (x *ParameterSubstitutionRule) GetPlaceholderSubstitutionRule() *PlaceholderSubstitutionRule { + if x, ok := x.GetSubstitutionType().(*ParameterSubstitutionRule_PlaceholderSubstitutionRule); ok { + return x.PlaceholderSubstitutionRule + } + return nil +} + +func (x *ParameterSubstitutionRule) GetAttributeSubstitutionRule() *AttributeSubstitutionRule { + if x, ok := x.GetSubstitutionType().(*ParameterSubstitutionRule_AttributeSubstitutionRule); ok { + return x.AttributeSubstitutionRule + } + return nil +} + +type isParameterSubstitutionRule_SubstitutionType interface { + isParameterSubstitutionRule_SubstitutionType() +} + +type ParameterSubstitutionRule_PlaceholderSubstitutionRule struct { + // The placeholder substitution rule. + PlaceholderSubstitutionRule *PlaceholderSubstitutionRule `protobuf:"bytes,1,opt,name=placeholder_substitution_rule,json=placeholderSubstitutionRule,proto3,oneof"` +} + +type ParameterSubstitutionRule_AttributeSubstitutionRule struct { + // The attribute substitution rule. + AttributeSubstitutionRule *AttributeSubstitutionRule `protobuf:"bytes,2,opt,name=attribute_substitution_rule,json=attributeSubstitutionRule,proto3,oneof"` +} + +func (*ParameterSubstitutionRule_PlaceholderSubstitutionRule) isParameterSubstitutionRule_SubstitutionType() { +} + +func (*ParameterSubstitutionRule_AttributeSubstitutionRule) isParameterSubstitutionRule_SubstitutionType() { +} + +// The attribute at the given path that's substituted entirely. +type AttributeSubstitutionRule struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The fully qualified proto attribute path, in dot notation. + // For example: `rules[0].cel_expression.resource_types_values` + Attribute string `protobuf:"bytes,1,opt,name=attribute,proto3" json:"attribute,omitempty"` +} + +func (x *AttributeSubstitutionRule) Reset() { + *x = AttributeSubstitutionRule{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AttributeSubstitutionRule) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AttributeSubstitutionRule) ProtoMessage() {} + +func (x *AttributeSubstitutionRule) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes[13] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AttributeSubstitutionRule.ProtoReflect.Descriptor instead. +func (*AttributeSubstitutionRule) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_common_proto_rawDescGZIP(), []int{13} +} + +func (x *AttributeSubstitutionRule) GetAttribute() string { + if x != nil { + return x.Attribute + } + return "" +} + +// The placeholder that's substituted in the rendered string. +type PlaceholderSubstitutionRule struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The fully qualified proto attribute path, in dot notation. + Attribute string `protobuf:"bytes,1,opt,name=attribute,proto3" json:"attribute,omitempty"` +} + +func (x *PlaceholderSubstitutionRule) Reset() { + *x = PlaceholderSubstitutionRule{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PlaceholderSubstitutionRule) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PlaceholderSubstitutionRule) ProtoMessage() {} + +func (x *PlaceholderSubstitutionRule) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes[14] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PlaceholderSubstitutionRule.ProtoReflect.Descriptor instead. +func (*PlaceholderSubstitutionRule) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_common_proto_rawDescGZIP(), []int{14} +} + +func (x *PlaceholderSubstitutionRule) GetAttribute() string { + if x != nil { + return x.Attribute + } + return "" +} + +// A rule in the cloud control. +type Rule struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The rule implementation. + // + // Types that are assignable to Implementation: + // + // *Rule_CelExpression + Implementation isRule_Implementation `protobuf_oneof:"implementation"` + // Optional. The rule description. The maximum length is 2000 characters. + Description string `protobuf:"bytes,10,opt,name=description,proto3" json:"description,omitempty"` + // Required. The functionality that's enabled by the rule. + RuleActionTypes []RuleActionType `protobuf:"varint,16,rep,packed,name=rule_action_types,json=ruleActionTypes,proto3,enum=google.cloud.cloudsecuritycompliance.v1.RuleActionType" json:"rule_action_types,omitempty"` +} + +func (x *Rule) Reset() { + *x = Rule{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Rule) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Rule) ProtoMessage() {} + +func (x *Rule) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes[15] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Rule.ProtoReflect.Descriptor instead. +func (*Rule) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_common_proto_rawDescGZIP(), []int{15} +} + +func (m *Rule) GetImplementation() isRule_Implementation { + if m != nil { + return m.Implementation + } + return nil +} + +func (x *Rule) GetCelExpression() *CELExpression { + if x, ok := x.GetImplementation().(*Rule_CelExpression); ok { + return x.CelExpression + } + return nil +} + +func (x *Rule) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *Rule) GetRuleActionTypes() []RuleActionType { + if x != nil { + return x.RuleActionTypes + } + return nil +} + +type isRule_Implementation interface { + isRule_Implementation() +} + +type Rule_CelExpression struct { + // The rule's logic expression in Common Expression Language (CEL). + CelExpression *CELExpression `protobuf:"bytes,1,opt,name=cel_expression,json=celExpression,proto3,oneof"` +} + +func (*Rule_CelExpression) isRule_Implementation() {} + +// A Common Expression Language (CEL) expression that's used to create a rule. +type CELExpression struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The criteria of the CEL expression. + // + // Types that are assignable to Criteria: + // + // *CELExpression_ResourceTypesValues + Criteria isCELExpression_Criteria `protobuf_oneof:"criteria"` + // Required. The logical expression in CEL. The maximum length of the + // condition is 1000 characters. For more information, see [CEL + // expression](https://cloud.google.com/security-command-center/docs/compliance-manager-write-cel-expressions). + Expression string `protobuf:"bytes,1,opt,name=expression,proto3" json:"expression,omitempty"` +} + +func (x *CELExpression) Reset() { + *x = CELExpression{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CELExpression) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CELExpression) ProtoMessage() {} + +func (x *CELExpression) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes[16] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CELExpression.ProtoReflect.Descriptor instead. +func (*CELExpression) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_common_proto_rawDescGZIP(), []int{16} +} + +func (m *CELExpression) GetCriteria() isCELExpression_Criteria { + if m != nil { + return m.Criteria + } + return nil +} + +func (x *CELExpression) GetResourceTypesValues() *StringList { + if x, ok := x.GetCriteria().(*CELExpression_ResourceTypesValues); ok { + return x.ResourceTypesValues + } + return nil +} + +func (x *CELExpression) GetExpression() string { + if x != nil { + return x.Expression + } + return "" +} + +type isCELExpression_Criteria interface { + isCELExpression_Criteria() +} + +type CELExpression_ResourceTypesValues struct { + // The resource instance types on which this expression is defined. + // The format is `/`. + // For example: `compute.googleapis.com/Instance` + ResourceTypesValues *StringList `protobuf:"bytes,3,opt,name=resource_types_values,json=resourceTypesValues,proto3,oneof"` +} + +func (*CELExpression_ResourceTypesValues) isCELExpression_Criteria() {} + +// The metadata for the long-running operation. +type OperationMetadata struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. The time the operation was created. + CreateTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` + // Output only. The time the operation finished running. + EndTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` + // Output only. The server-defined resource path for the target of the + // operation. + Target string `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` + // Output only. The name of the verb that was executed by the operation. + Verb string `protobuf:"bytes,4,opt,name=verb,proto3" json:"verb,omitempty"` + // Output only. The human-readable status of the operation, if any. + StatusMessage string `protobuf:"bytes,5,opt,name=status_message,json=statusMessage,proto3" json:"status_message,omitempty"` + // Output only. Identifies whether the user has requested that the operation + // be cancelled. If an operation was cancelled successfully, then the field + // [google.longrunning.Operation.error][google.longrunning.Operation.error] + // contains the value [google.rpc.Code.CANCELLED][google.rpc.Code.CANCELLED]. + RequestedCancellation bool `protobuf:"varint,6,opt,name=requested_cancellation,json=requestedCancellation,proto3" json:"requested_cancellation,omitempty"` + // Output only. The API version that was used to start the operation. + ApiVersion string `protobuf:"bytes,7,opt,name=api_version,json=apiVersion,proto3" json:"api_version,omitempty"` +} + +func (x *OperationMetadata) Reset() { + *x = OperationMetadata{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *OperationMetadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OperationMetadata) ProtoMessage() {} + +func (x *OperationMetadata) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes[17] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OperationMetadata.ProtoReflect.Descriptor instead. +func (*OperationMetadata) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_common_proto_rawDescGZIP(), []int{17} +} + +func (x *OperationMetadata) GetCreateTime() *timestamppb.Timestamp { + if x != nil { + return x.CreateTime + } + return nil +} + +func (x *OperationMetadata) GetEndTime() *timestamppb.Timestamp { + if x != nil { + return x.EndTime + } + return nil +} + +func (x *OperationMetadata) GetTarget() string { + if x != nil { + return x.Target + } + return "" +} + +func (x *OperationMetadata) GetVerb() string { + if x != nil { + return x.Verb + } + return "" +} + +func (x *OperationMetadata) GetStatusMessage() string { + if x != nil { + return x.StatusMessage + } + return "" +} + +func (x *OperationMetadata) GetRequestedCancellation() bool { + if x != nil { + return x.RequestedCancellation + } + return false +} + +func (x *OperationMetadata) GetApiVersion() string { + if x != nil { + return x.ApiVersion + } + return "" +} + +// The regulatory family of the control. +type ControlFamily struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The identifier for the regulatory control family. + FamilyId string `protobuf:"bytes,1,opt,name=family_id,json=familyId,proto3" json:"family_id,omitempty"` + // The friendly name for the regulatory control family. + DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` +} + +func (x *ControlFamily) Reset() { + *x = ControlFamily{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ControlFamily) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ControlFamily) ProtoMessage() {} + +func (x *ControlFamily) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes[18] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ControlFamily.ProtoReflect.Descriptor instead. +func (*ControlFamily) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_common_proto_rawDescGZIP(), []int{18} +} + +func (x *ControlFamily) GetFamilyId() string { + if x != nil { + return x.FamilyId + } + return "" +} + +func (x *ControlFamily) GetDisplayName() string { + if x != nil { + return x.DisplayName + } + return "" +} + +var File_google_cloud_cloudsecuritycompliance_v1_common_proto protoreflect.FileDescriptor + +var file_google_cloud_cloudsecuritycompliance_v1_common_proto_rawDesc = []byte{ + 0x0a, 0x34, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, + 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x27, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, + 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x1a, + 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xbd, 0x08, 0x0a, + 0x09, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x1a, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe0, 0x41, 0x02, 0xe0, 0x41, 0x08, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x11, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x5f, + 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0f, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x52, 0x65, 0x76, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, + 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x59, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, + 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, + 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, + 0x72, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x12, 0x75, 0x0a, 0x15, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x13, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x5b, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, + 0x67, 0x6f, 0x72, 0x79, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, + 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x61, + 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x63, 0x61, 0x74, + 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x77, 0x0a, 0x19, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, + 0x65, 0x64, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, + 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x17, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, + 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x12, 0x87, + 0x01, 0x0a, 0x1f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x61, 0x72, + 0x67, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, + 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x1c, 0x73, 0x75, 0x70, 0x70, + 0x6f, 0x72, 0x74, 0x65, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x7d, 0x0a, 0x1b, 0x73, 0x75, 0x70, 0x70, + 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x38, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, + 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x19, 0x73, 0x75, + 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x49, 0x0a, 0x0d, 0x46, 0x72, 0x61, 0x6d, 0x65, + 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x1a, 0x46, 0x52, 0x41, 0x4d, + 0x45, 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x42, 0x55, 0x49, 0x4c, + 0x54, 0x5f, 0x49, 0x4e, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, + 0x10, 0x02, 0x3a, 0x97, 0x01, 0xea, 0x41, 0x93, 0x01, 0x0a, 0x30, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, + 0x63, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x48, 0x6f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x66, + 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x7b, 0x66, 0x72, 0x61, 0x6d, 0x65, + 0x77, 0x6f, 0x72, 0x6b, 0x7d, 0x2a, 0x0a, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, + 0x73, 0x32, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x22, 0xb8, 0x01, 0x0a, + 0x13, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x44, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x73, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, + 0x11, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0f, 0x6d, + 0x61, 0x6a, 0x6f, 0x72, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x57, + 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, + 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x70, 0x61, 0x72, + 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x22, 0x83, 0x01, 0x0a, 0x12, 0x46, 0x72, 0x61, 0x6d, + 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x21, + 0x0a, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, + 0x6b, 0x12, 0x34, 0x0a, 0x11, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x48, 0x00, 0x52, 0x0f, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6d, 0x61, 0x6a, 0x6f, + 0x72, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x22, 0x87, 0x01, + 0x0a, 0x09, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x61, 0x0a, 0x0f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, + 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, + 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0e, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, + 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xcc, 0x0a, 0x0a, 0x0c, 0x43, 0x6c, 0x6f, 0x75, + 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x1a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe0, 0x41, 0x02, 0xe0, 0x41, 0x08, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x11, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x5f, 0x72, 0x65, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x42, + 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0f, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x52, 0x65, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0c, + 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x7d, 0x0a, 0x1b, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, + 0x64, 0x5f, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, + 0x64, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, + 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4d, + 0x6f, 0x64, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x19, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, + 0x74, 0x65, 0x64, 0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x6f, + 0x64, 0x65, 0x73, 0x12, 0x62, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x53, + 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, + 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x12, 0x48, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, + 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, + 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, + 0x73, 0x12, 0x52, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, + 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, + 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x73, 0x65, 0x76, + 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x2e, 0x0a, 0x10, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, + 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x74, + 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x77, 0x0a, 0x19, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, + 0x65, 0x64, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, + 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x17, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, + 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x12, 0x32, + 0x0a, 0x12, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, + 0x6f, 0x72, 0x6b, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, + 0x11, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, + 0x6b, 0x73, 0x12, 0x30, 0x0a, 0x11, 0x72, 0x65, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x10, 0x72, 0x65, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x74, 0x65, 0x70, 0x73, 0x12, 0x62, 0x0a, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, + 0x65, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, + 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x43, + 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x63, 0x61, + 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x87, 0x01, 0x0a, 0x1f, 0x73, + 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x12, + 0x20, 0x03, 0x28, 0x0e, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, + 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, + 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x1c, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, + 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x73, 0x22, 0x36, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x10, 0x01, 0x12, 0x0c, + 0x0a, 0x08, 0x42, 0x55, 0x49, 0x4c, 0x54, 0x5f, 0x49, 0x4e, 0x10, 0x02, 0x3a, 0xa7, 0x01, 0xea, + 0x41, 0xa3, 0x01, 0x0a, 0x33, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, + 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6c, 0x6f, 0x75, + 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x4f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x2f, 0x7b, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x7d, 0x2a, 0x0d, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x32, 0x0c, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x22, 0x81, 0x06, 0x0a, 0x0d, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x65, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x26, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x64, 0x69, + 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x24, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x69, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x64, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x40, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, + 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x53, 0x70, + 0x65, 0x63, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, + 0x02, 0x52, 0x09, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x5d, 0x0a, 0x0d, + 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, + 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x64, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x76, 0x0a, 0x12, 0x73, + 0x75, 0x62, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x75, 0x6c, 0x65, + 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, + 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, 0x74, + 0x69, 0x74, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, + 0x52, 0x11, 0x73, 0x75, 0x62, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75, + 0x6c, 0x65, 0x73, 0x12, 0x62, 0x0a, 0x0e, 0x73, 0x75, 0x62, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, + 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x53, + 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x73, 0x75, 0x62, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x58, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0x67, 0x0a, 0x09, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, + 0x0a, 0x16, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, + 0x52, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x4f, 0x4f, 0x4c, 0x45, 0x41, + 0x4e, 0x10, 0x04, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x4c, 0x49, 0x53, + 0x54, 0x10, 0x05, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x10, 0x06, 0x12, + 0x09, 0x0a, 0x05, 0x4f, 0x4e, 0x45, 0x4f, 0x46, 0x10, 0x07, 0x22, 0xae, 0x02, 0x0a, 0x0a, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5f, 0x0a, 0x0e, 0x61, 0x6c, 0x6c, + 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, + 0x77, 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x61, 0x6c, 0x6c, + 0x6f, 0x77, 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x50, 0x0a, 0x09, 0x69, 0x6e, + 0x74, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, + 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, + 0x48, 0x00, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x5f, 0x0a, 0x0e, + 0x72, 0x65, 0x67, 0x65, 0x78, 0x70, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, + 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, + 0x65, 0x67, 0x65, 0x78, 0x70, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x48, 0x00, 0x52, 0x0d, + 0x72, 0x65, 0x67, 0x65, 0x78, 0x70, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x42, 0x0c, 0x0a, + 0x0a, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x22, 0x61, 0x0a, 0x0d, 0x41, + 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x50, 0x0a, 0x06, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, + 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x2e, + 0x0a, 0x0d, 0x52, 0x65, 0x67, 0x65, 0x78, 0x70, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, + 0x1d, 0x0a, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x22, 0x38, + 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x15, 0x0a, 0x03, 0x6d, 0x69, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x03, 0x6d, 0x69, + 0x6e, 0x12, 0x15, 0x0a, 0x03, 0x6d, 0x61, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, + 0xe0, 0x41, 0x02, 0x52, 0x03, 0x6d, 0x61, 0x78, 0x22, 0x29, 0x0a, 0x0a, 0x53, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x22, 0xb9, 0x02, 0x0a, 0x0a, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0a, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x09, 0x62, + 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x61, 0x0a, 0x11, 0x73, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, + 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0f, 0x73, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x6e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x01, 0x48, 0x00, 0x52, 0x0b, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x12, 0x55, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, + 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0a, 0x6f, 0x6e, 0x65, + 0x6f, 0x66, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, + 0xc4, 0x02, 0x0a, 0x19, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x53, 0x75, 0x62, + 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x8a, 0x01, + 0x0a, 0x1d, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x68, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x5f, 0x73, 0x75, + 0x62, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, + 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x50, 0x6c, 0x61, 0x63, 0x65, 0x68, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, 0x74, + 0x69, 0x74, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x1b, 0x70, + 0x6c, 0x61, 0x63, 0x65, 0x68, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, 0x74, 0x69, + 0x74, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x84, 0x01, 0x0a, 0x1b, 0x61, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x74, 0x69, 0x74, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x53, 0x75, 0x62, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x75, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x19, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x53, 0x75, 0x62, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6c, + 0x65, 0x42, 0x13, 0x0a, 0x11, 0x73, 0x75, 0x62, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x39, 0x0a, 0x19, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x53, 0x75, 0x62, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x75, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x22, 0x3b, 0x0a, 0x1b, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x68, 0x6f, 0x6c, 0x64, 0x65, 0x72, + 0x53, 0x75, 0x62, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x75, 0x6c, 0x65, + 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x22, 0x8a, + 0x02, 0x0a, 0x04, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x5f, 0x0a, 0x0e, 0x63, 0x65, 0x6c, 0x5f, 0x65, + 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, + 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x45, 0x4c, 0x45, 0x78, 0x70, + 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x65, 0x6c, 0x45, 0x78, + 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x68, 0x0a, 0x11, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, + 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0f, 0x72, 0x75, 0x6c, 0x65, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x69, 0x6d, 0x70, + 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xab, 0x01, 0x0a, 0x0d, + 0x43, 0x45, 0x4c, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x69, 0x0a, + 0x15, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x5f, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, + 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, + 0x74, 0x48, 0x00, 0x52, 0x13, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x72, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x02, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x0a, 0x0a, + 0x08, 0x63, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x22, 0xd5, 0x02, 0x0a, 0x11, 0x4f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, + 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, + 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1b, 0x0a, + 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x03, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x76, 0x65, + 0x72, 0x62, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x76, + 0x65, 0x72, 0x62, 0x12, 0x2a, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, + 0x52, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, + 0x3a, 0x0a, 0x16, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x6e, + 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x42, + 0x03, 0xe0, 0x41, 0x03, 0x52, 0x15, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x43, + 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0b, 0x61, + 0x70, 0x69, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x22, 0x4f, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x46, 0x61, 0x6d, 0x69, + 0x6c, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x49, 0x64, 0x12, + 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, + 0x6d, 0x65, 0x2a, 0x83, 0x01, 0x0a, 0x23, 0x52, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x74, 0x6f, 0x72, + 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x69, + 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x36, 0x0a, 0x32, 0x52, 0x45, + 0x47, 0x55, 0x4c, 0x41, 0x54, 0x4f, 0x52, 0x59, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, + 0x5f, 0x52, 0x45, 0x53, 0x50, 0x4f, 0x4e, 0x53, 0x49, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x47, 0x4f, 0x4f, 0x47, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0c, + 0x0a, 0x08, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x45, 0x52, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, + 0x53, 0x48, 0x41, 0x52, 0x45, 0x44, 0x10, 0x03, 0x2a, 0x5d, 0x0a, 0x0f, 0x45, 0x6e, 0x66, 0x6f, + 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x1c, 0x45, + 0x4e, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0e, 0x0a, + 0x0a, 0x50, 0x52, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x49, 0x56, 0x45, 0x10, 0x01, 0x12, 0x0d, 0x0a, + 0x09, 0x44, 0x45, 0x54, 0x45, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, + 0x41, 0x55, 0x44, 0x49, 0x54, 0x10, 0x03, 0x2a, 0xb1, 0x01, 0x0a, 0x11, 0x46, 0x72, 0x61, 0x6d, + 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x22, 0x0a, + 0x1e, 0x46, 0x52, 0x41, 0x4d, 0x45, 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, + 0x4f, 0x52, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x1d, 0x0a, 0x19, 0x49, 0x4e, 0x44, 0x55, 0x53, 0x54, 0x52, 0x59, 0x5f, 0x44, 0x45, + 0x46, 0x49, 0x4e, 0x45, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x41, 0x52, 0x44, 0x10, 0x01, + 0x12, 0x15, 0x0a, 0x11, 0x41, 0x53, 0x53, 0x55, 0x52, 0x45, 0x44, 0x5f, 0x57, 0x4f, 0x52, 0x4b, + 0x4c, 0x4f, 0x41, 0x44, 0x53, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x44, 0x41, 0x54, 0x41, 0x5f, + 0x53, 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, 0x59, 0x10, 0x03, 0x12, 0x19, 0x0a, 0x15, 0x47, 0x4f, + 0x4f, 0x47, 0x4c, 0x45, 0x5f, 0x42, 0x45, 0x53, 0x54, 0x5f, 0x50, 0x52, 0x41, 0x43, 0x54, 0x49, + 0x43, 0x45, 0x53, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, + 0x46, 0x52, 0x41, 0x4d, 0x45, 0x57, 0x4f, 0x52, 0x4b, 0x10, 0x05, 0x2a, 0xf2, 0x04, 0x0a, 0x14, + 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x43, 0x61, 0x74, 0x65, + 0x67, 0x6f, 0x72, 0x79, 0x12, 0x26, 0x0a, 0x22, 0x43, 0x4c, 0x4f, 0x55, 0x44, 0x5f, 0x43, 0x4f, + 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, + 0x43, 0x43, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x49, 0x4e, 0x46, 0x52, + 0x41, 0x53, 0x54, 0x52, 0x55, 0x43, 0x54, 0x55, 0x52, 0x45, 0x10, 0x01, 0x12, 0x27, 0x0a, 0x23, + 0x43, 0x43, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x41, 0x52, 0x54, 0x49, + 0x46, 0x49, 0x43, 0x49, 0x41, 0x4c, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x4c, 0x4c, 0x49, 0x47, 0x45, + 0x4e, 0x43, 0x45, 0x10, 0x02, 0x12, 0x21, 0x0a, 0x1d, 0x43, 0x43, 0x5f, 0x43, 0x41, 0x54, 0x45, + 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x53, 0x45, + 0x43, 0x55, 0x52, 0x49, 0x54, 0x59, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, 0x43, 0x43, 0x5f, 0x43, + 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x53, 0x45, 0x43, + 0x55, 0x52, 0x49, 0x54, 0x59, 0x10, 0x04, 0x12, 0x20, 0x0a, 0x1c, 0x43, 0x43, 0x5f, 0x43, 0x41, + 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x53, + 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, 0x59, 0x10, 0x05, 0x12, 0x23, 0x0a, 0x1f, 0x43, 0x43, 0x5f, + 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x49, 0x4e, 0x43, 0x49, 0x44, 0x45, 0x4e, + 0x54, 0x5f, 0x4d, 0x41, 0x4e, 0x41, 0x47, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x06, 0x12, 0x2e, + 0x0a, 0x2a, 0x43, 0x43, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x49, 0x44, + 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x53, + 0x53, 0x5f, 0x4d, 0x41, 0x4e, 0x41, 0x47, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x07, 0x12, 0x1a, + 0x0a, 0x16, 0x43, 0x43, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x45, 0x4e, + 0x43, 0x52, 0x59, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x08, 0x12, 0x32, 0x0a, 0x2e, 0x43, 0x43, + 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x4c, 0x4f, 0x47, 0x53, 0x5f, 0x4d, + 0x41, 0x4e, 0x41, 0x47, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x49, 0x4e, + 0x46, 0x52, 0x41, 0x53, 0x54, 0x52, 0x55, 0x43, 0x54, 0x55, 0x52, 0x45, 0x10, 0x09, 0x12, 0x26, + 0x0a, 0x22, 0x43, 0x43, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x48, 0x52, + 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x43, 0x45, + 0x53, 0x53, 0x45, 0x53, 0x10, 0x0a, 0x12, 0x38, 0x0a, 0x34, 0x43, 0x43, 0x5f, 0x43, 0x41, 0x54, + 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x54, 0x48, 0x49, 0x52, 0x44, 0x5f, 0x50, 0x41, 0x52, 0x54, + 0x59, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x53, 0x55, 0x42, 0x5f, 0x50, 0x52, 0x4f, 0x43, 0x45, 0x53, + 0x53, 0x4f, 0x52, 0x5f, 0x4d, 0x41, 0x4e, 0x41, 0x47, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x0b, + 0x12, 0x25, 0x0a, 0x21, 0x43, 0x43, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, + 0x4c, 0x45, 0x47, 0x41, 0x4c, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x4c, 0x4f, + 0x53, 0x55, 0x52, 0x45, 0x53, 0x10, 0x0c, 0x12, 0x28, 0x0a, 0x24, 0x43, 0x43, 0x5f, 0x43, 0x41, + 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x56, 0x55, 0x4c, 0x4e, 0x45, 0x52, 0x41, 0x42, 0x49, + 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x4d, 0x41, 0x4e, 0x41, 0x47, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x10, + 0x0d, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x43, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, + 0x5f, 0x50, 0x52, 0x49, 0x56, 0x41, 0x43, 0x59, 0x10, 0x0e, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x43, + 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x42, 0x43, 0x44, 0x52, 0x10, 0x0f, + 0x2a, 0x4c, 0x0a, 0x0d, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x12, 0x1e, 0x0a, 0x1a, 0x43, 0x4c, 0x4f, 0x55, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x56, 0x49, + 0x44, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x57, 0x53, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x5a, + 0x55, 0x52, 0x45, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x47, 0x43, 0x50, 0x10, 0x03, 0x2a, 0x51, + 0x0a, 0x08, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x45, + 0x56, 0x45, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x52, 0x49, 0x54, 0x49, 0x43, 0x41, 0x4c, + 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x49, 0x47, 0x48, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, + 0x4d, 0x45, 0x44, 0x49, 0x55, 0x4d, 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x4c, 0x4f, 0x57, 0x10, + 0x04, 0x2a, 0x8f, 0x01, 0x0a, 0x0e, 0x52, 0x75, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x1c, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x41, 0x43, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1f, 0x0a, 0x1b, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x41, + 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x52, 0x45, 0x56, 0x45, + 0x4e, 0x54, 0x49, 0x56, 0x45, 0x10, 0x01, 0x12, 0x1e, 0x0a, 0x1a, 0x52, 0x55, 0x4c, 0x45, 0x5f, + 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x45, 0x54, 0x45, + 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x52, 0x55, 0x4c, 0x45, 0x5f, + 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x55, 0x44, 0x49, + 0x54, 0x10, 0x03, 0x2a, 0xcd, 0x01, 0x0a, 0x12, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x20, 0x54, 0x41, + 0x52, 0x47, 0x45, 0x54, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x20, 0x0a, 0x1c, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, + 0x52, 0x43, 0x45, 0x5f, 0x43, 0x52, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x52, 0x47, + 0x10, 0x01, 0x12, 0x23, 0x0a, 0x1f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x52, 0x45, 0x53, + 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x43, 0x52, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, + 0x4f, 0x4c, 0x44, 0x45, 0x52, 0x10, 0x02, 0x12, 0x24, 0x0a, 0x20, 0x54, 0x41, 0x52, 0x47, 0x45, + 0x54, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x43, 0x52, 0x4d, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x50, 0x52, 0x4f, 0x4a, 0x45, 0x43, 0x54, 0x10, 0x03, 0x12, 0x24, 0x0a, + 0x20, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, + 0x4e, 0x10, 0x04, 0x42, 0x97, 0x03, 0xea, 0x41, 0x70, 0x0a, 0x3b, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, + 0x63, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x0a, 0x2b, 0x63, 0x6f, 0x6d, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, + 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x65, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, + 0x63, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, + 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, + 0x70, 0x62, 0x3b, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, + 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x70, 0x62, 0xaa, 0x02, 0x27, 0x47, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x43, 0x6c, 0x6f, 0x75, + 0x64, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, + 0x6e, 0x63, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x27, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, + 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x65, 0x63, 0x75, 0x72, + 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x5c, 0x56, 0x31, + 0xea, 0x02, 0x2a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, + 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, + 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_google_cloud_cloudsecuritycompliance_v1_common_proto_rawDescOnce sync.Once + file_google_cloud_cloudsecuritycompliance_v1_common_proto_rawDescData = file_google_cloud_cloudsecuritycompliance_v1_common_proto_rawDesc +) + +func file_google_cloud_cloudsecuritycompliance_v1_common_proto_rawDescGZIP() []byte { + file_google_cloud_cloudsecuritycompliance_v1_common_proto_rawDescOnce.Do(func() { + file_google_cloud_cloudsecuritycompliance_v1_common_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_cloudsecuritycompliance_v1_common_proto_rawDescData) + }) + return file_google_cloud_cloudsecuritycompliance_v1_common_proto_rawDescData +} + +var file_google_cloud_cloudsecuritycompliance_v1_common_proto_enumTypes = make([]protoimpl.EnumInfo, 11) +var file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes = make([]protoimpl.MessageInfo, 19) +var file_google_cloud_cloudsecuritycompliance_v1_common_proto_goTypes = []any{ + (RegulatoryControlResponsibilityType)(0), // 0: google.cloud.cloudsecuritycompliance.v1.RegulatoryControlResponsibilityType + (EnforcementMode)(0), // 1: google.cloud.cloudsecuritycompliance.v1.EnforcementMode + (FrameworkCategory)(0), // 2: google.cloud.cloudsecuritycompliance.v1.FrameworkCategory + (CloudControlCategory)(0), // 3: google.cloud.cloudsecuritycompliance.v1.CloudControlCategory + (CloudProvider)(0), // 4: google.cloud.cloudsecuritycompliance.v1.CloudProvider + (Severity)(0), // 5: google.cloud.cloudsecuritycompliance.v1.Severity + (RuleActionType)(0), // 6: google.cloud.cloudsecuritycompliance.v1.RuleActionType + (TargetResourceType)(0), // 7: google.cloud.cloudsecuritycompliance.v1.TargetResourceType + (Framework_FrameworkType)(0), // 8: google.cloud.cloudsecuritycompliance.v1.Framework.FrameworkType + (CloudControl_Type)(0), // 9: google.cloud.cloudsecuritycompliance.v1.CloudControl.Type + (ParameterSpec_ValueType)(0), // 10: google.cloud.cloudsecuritycompliance.v1.ParameterSpec.ValueType + (*Framework)(nil), // 11: google.cloud.cloudsecuritycompliance.v1.Framework + (*CloudControlDetails)(nil), // 12: google.cloud.cloudsecuritycompliance.v1.CloudControlDetails + (*FrameworkReference)(nil), // 13: google.cloud.cloudsecuritycompliance.v1.FrameworkReference + (*Parameter)(nil), // 14: google.cloud.cloudsecuritycompliance.v1.Parameter + (*CloudControl)(nil), // 15: google.cloud.cloudsecuritycompliance.v1.CloudControl + (*ParameterSpec)(nil), // 16: google.cloud.cloudsecuritycompliance.v1.ParameterSpec + (*Validation)(nil), // 17: google.cloud.cloudsecuritycompliance.v1.Validation + (*AllowedValues)(nil), // 18: google.cloud.cloudsecuritycompliance.v1.AllowedValues + (*RegexpPattern)(nil), // 19: google.cloud.cloudsecuritycompliance.v1.RegexpPattern + (*IntRange)(nil), // 20: google.cloud.cloudsecuritycompliance.v1.IntRange + (*StringList)(nil), // 21: google.cloud.cloudsecuritycompliance.v1.StringList + (*ParamValue)(nil), // 22: google.cloud.cloudsecuritycompliance.v1.ParamValue + (*ParameterSubstitutionRule)(nil), // 23: google.cloud.cloudsecuritycompliance.v1.ParameterSubstitutionRule + (*AttributeSubstitutionRule)(nil), // 24: google.cloud.cloudsecuritycompliance.v1.AttributeSubstitutionRule + (*PlaceholderSubstitutionRule)(nil), // 25: google.cloud.cloudsecuritycompliance.v1.PlaceholderSubstitutionRule + (*Rule)(nil), // 26: google.cloud.cloudsecuritycompliance.v1.Rule + (*CELExpression)(nil), // 27: google.cloud.cloudsecuritycompliance.v1.CELExpression + (*OperationMetadata)(nil), // 28: google.cloud.cloudsecuritycompliance.v1.OperationMetadata + (*ControlFamily)(nil), // 29: google.cloud.cloudsecuritycompliance.v1.ControlFamily + (*timestamppb.Timestamp)(nil), // 30: google.protobuf.Timestamp +} +var file_google_cloud_cloudsecuritycompliance_v1_common_proto_depIdxs = []int32{ + 8, // 0: google.cloud.cloudsecuritycompliance.v1.Framework.type:type_name -> google.cloud.cloudsecuritycompliance.v1.Framework.FrameworkType + 12, // 1: google.cloud.cloudsecuritycompliance.v1.Framework.cloud_control_details:type_name -> google.cloud.cloudsecuritycompliance.v1.CloudControlDetails + 2, // 2: google.cloud.cloudsecuritycompliance.v1.Framework.category:type_name -> google.cloud.cloudsecuritycompliance.v1.FrameworkCategory + 4, // 3: google.cloud.cloudsecuritycompliance.v1.Framework.supported_cloud_providers:type_name -> google.cloud.cloudsecuritycompliance.v1.CloudProvider + 7, // 4: google.cloud.cloudsecuritycompliance.v1.Framework.supported_target_resource_types:type_name -> google.cloud.cloudsecuritycompliance.v1.TargetResourceType + 1, // 5: google.cloud.cloudsecuritycompliance.v1.Framework.supported_enforcement_modes:type_name -> google.cloud.cloudsecuritycompliance.v1.EnforcementMode + 14, // 6: google.cloud.cloudsecuritycompliance.v1.CloudControlDetails.parameters:type_name -> google.cloud.cloudsecuritycompliance.v1.Parameter + 22, // 7: google.cloud.cloudsecuritycompliance.v1.Parameter.parameter_value:type_name -> google.cloud.cloudsecuritycompliance.v1.ParamValue + 1, // 8: google.cloud.cloudsecuritycompliance.v1.CloudControl.supported_enforcement_modes:type_name -> google.cloud.cloudsecuritycompliance.v1.EnforcementMode + 16, // 9: google.cloud.cloudsecuritycompliance.v1.CloudControl.parameter_spec:type_name -> google.cloud.cloudsecuritycompliance.v1.ParameterSpec + 26, // 10: google.cloud.cloudsecuritycompliance.v1.CloudControl.rules:type_name -> google.cloud.cloudsecuritycompliance.v1.Rule + 5, // 11: google.cloud.cloudsecuritycompliance.v1.CloudControl.severity:type_name -> google.cloud.cloudsecuritycompliance.v1.Severity + 4, // 12: google.cloud.cloudsecuritycompliance.v1.CloudControl.supported_cloud_providers:type_name -> google.cloud.cloudsecuritycompliance.v1.CloudProvider + 3, // 13: google.cloud.cloudsecuritycompliance.v1.CloudControl.categories:type_name -> google.cloud.cloudsecuritycompliance.v1.CloudControlCategory + 30, // 14: google.cloud.cloudsecuritycompliance.v1.CloudControl.create_time:type_name -> google.protobuf.Timestamp + 7, // 15: google.cloud.cloudsecuritycompliance.v1.CloudControl.supported_target_resource_types:type_name -> google.cloud.cloudsecuritycompliance.v1.TargetResourceType + 10, // 16: google.cloud.cloudsecuritycompliance.v1.ParameterSpec.value_type:type_name -> google.cloud.cloudsecuritycompliance.v1.ParameterSpec.ValueType + 22, // 17: google.cloud.cloudsecuritycompliance.v1.ParameterSpec.default_value:type_name -> google.cloud.cloudsecuritycompliance.v1.ParamValue + 23, // 18: google.cloud.cloudsecuritycompliance.v1.ParameterSpec.substitution_rules:type_name -> google.cloud.cloudsecuritycompliance.v1.ParameterSubstitutionRule + 16, // 19: google.cloud.cloudsecuritycompliance.v1.ParameterSpec.sub_parameters:type_name -> google.cloud.cloudsecuritycompliance.v1.ParameterSpec + 17, // 20: google.cloud.cloudsecuritycompliance.v1.ParameterSpec.validation:type_name -> google.cloud.cloudsecuritycompliance.v1.Validation + 18, // 21: google.cloud.cloudsecuritycompliance.v1.Validation.allowed_values:type_name -> google.cloud.cloudsecuritycompliance.v1.AllowedValues + 20, // 22: google.cloud.cloudsecuritycompliance.v1.Validation.int_range:type_name -> google.cloud.cloudsecuritycompliance.v1.IntRange + 19, // 23: google.cloud.cloudsecuritycompliance.v1.Validation.regexp_pattern:type_name -> google.cloud.cloudsecuritycompliance.v1.RegexpPattern + 22, // 24: google.cloud.cloudsecuritycompliance.v1.AllowedValues.values:type_name -> google.cloud.cloudsecuritycompliance.v1.ParamValue + 21, // 25: google.cloud.cloudsecuritycompliance.v1.ParamValue.string_list_value:type_name -> google.cloud.cloudsecuritycompliance.v1.StringList + 14, // 26: google.cloud.cloudsecuritycompliance.v1.ParamValue.oneof_value:type_name -> google.cloud.cloudsecuritycompliance.v1.Parameter + 25, // 27: google.cloud.cloudsecuritycompliance.v1.ParameterSubstitutionRule.placeholder_substitution_rule:type_name -> google.cloud.cloudsecuritycompliance.v1.PlaceholderSubstitutionRule + 24, // 28: google.cloud.cloudsecuritycompliance.v1.ParameterSubstitutionRule.attribute_substitution_rule:type_name -> google.cloud.cloudsecuritycompliance.v1.AttributeSubstitutionRule + 27, // 29: google.cloud.cloudsecuritycompliance.v1.Rule.cel_expression:type_name -> google.cloud.cloudsecuritycompliance.v1.CELExpression + 6, // 30: google.cloud.cloudsecuritycompliance.v1.Rule.rule_action_types:type_name -> google.cloud.cloudsecuritycompliance.v1.RuleActionType + 21, // 31: google.cloud.cloudsecuritycompliance.v1.CELExpression.resource_types_values:type_name -> google.cloud.cloudsecuritycompliance.v1.StringList + 30, // 32: google.cloud.cloudsecuritycompliance.v1.OperationMetadata.create_time:type_name -> google.protobuf.Timestamp + 30, // 33: google.cloud.cloudsecuritycompliance.v1.OperationMetadata.end_time:type_name -> google.protobuf.Timestamp + 34, // [34:34] is the sub-list for method output_type + 34, // [34:34] is the sub-list for method input_type + 34, // [34:34] is the sub-list for extension type_name + 34, // [34:34] is the sub-list for extension extendee + 0, // [0:34] is the sub-list for field type_name +} + +func init() { file_google_cloud_cloudsecuritycompliance_v1_common_proto_init() } +func file_google_cloud_cloudsecuritycompliance_v1_common_proto_init() { + if File_google_cloud_cloudsecuritycompliance_v1_common_proto != nil { + return + } + file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes[2].OneofWrappers = []any{} + file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes[6].OneofWrappers = []any{ + (*Validation_AllowedValues)(nil), + (*Validation_IntRange)(nil), + (*Validation_RegexpPattern)(nil), + } + file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes[11].OneofWrappers = []any{ + (*ParamValue_StringValue)(nil), + (*ParamValue_BoolValue)(nil), + (*ParamValue_StringListValue)(nil), + (*ParamValue_NumberValue)(nil), + (*ParamValue_OneofValue)(nil), + } + file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes[12].OneofWrappers = []any{ + (*ParameterSubstitutionRule_PlaceholderSubstitutionRule)(nil), + (*ParameterSubstitutionRule_AttributeSubstitutionRule)(nil), + } + file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes[15].OneofWrappers = []any{ + (*Rule_CelExpression)(nil), + } + file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes[16].OneofWrappers = []any{ + (*CELExpression_ResourceTypesValues)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_google_cloud_cloudsecuritycompliance_v1_common_proto_rawDesc, + NumEnums: 11, + NumMessages: 19, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_google_cloud_cloudsecuritycompliance_v1_common_proto_goTypes, + DependencyIndexes: file_google_cloud_cloudsecuritycompliance_v1_common_proto_depIdxs, + EnumInfos: file_google_cloud_cloudsecuritycompliance_v1_common_proto_enumTypes, + MessageInfos: file_google_cloud_cloudsecuritycompliance_v1_common_proto_msgTypes, + }.Build() + File_google_cloud_cloudsecuritycompliance_v1_common_proto = out.File + file_google_cloud_cloudsecuritycompliance_v1_common_proto_rawDesc = nil + file_google_cloud_cloudsecuritycompliance_v1_common_proto_goTypes = nil + file_google_cloud_cloudsecuritycompliance_v1_common_proto_depIdxs = nil +} diff --git a/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb/config.pb.go b/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb/config.pb.go new file mode 100644 index 000000000000..af1ed7b16703 --- /dev/null +++ b/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb/config.pb.go @@ -0,0 +1,1210 @@ +// Copyright 2025 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 +// +// http://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. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.35.2 +// protoc v4.25.7 +// source: google/cloud/cloudsecuritycompliance/v1/config.proto + +package cloudsecuritycompliancepb + +import ( + reflect "reflect" + sync "sync" + + _ "google.golang.org/genproto/googleapis/api/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + emptypb "google.golang.org/protobuf/types/known/emptypb" + fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Request message for [ListFrameworks][]. +type ListFrameworksRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The parent resource name, in the format + // `organizations/{organization}/locations/{location}`. + // The only supported location is `global`. + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Optional. The maximum number of frameworks to return. The default value is + // `500`. + // + // If you exceed the maximum value of `1000`, then the service uses the + // maximum value. + PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + // Optional. A pagination token returned from a previous request to list + // frameworks. Provide this token to retrieve the next page of results. + PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` +} + +func (x *ListFrameworksRequest) Reset() { + *x = ListFrameworksRequest{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_config_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListFrameworksRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListFrameworksRequest) ProtoMessage() {} + +func (x *ListFrameworksRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_config_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListFrameworksRequest.ProtoReflect.Descriptor instead. +func (*ListFrameworksRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_config_proto_rawDescGZIP(), []int{0} +} + +func (x *ListFrameworksRequest) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +func (x *ListFrameworksRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *ListFrameworksRequest) GetPageToken() string { + if x != nil { + return x.PageToken + } + return "" +} + +// The response message for [ListFrameworks][]. +// Returns a paginated list of Framework resources. +type ListFrameworksResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The list of framework resources. + Frameworks []*Framework `protobuf:"bytes,1,rep,name=frameworks,proto3" json:"frameworks,omitempty"` + // A pagination token. To retrieve the next page of results, call the method + // again with this token. + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` +} + +func (x *ListFrameworksResponse) Reset() { + *x = ListFrameworksResponse{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_config_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListFrameworksResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListFrameworksResponse) ProtoMessage() {} + +func (x *ListFrameworksResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_config_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListFrameworksResponse.ProtoReflect.Descriptor instead. +func (*ListFrameworksResponse) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_config_proto_rawDescGZIP(), []int{1} +} + +func (x *ListFrameworksResponse) GetFrameworks() []*Framework { + if x != nil { + return x.Frameworks + } + return nil +} + +func (x *ListFrameworksResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken + } + return "" +} + +// The request message for [GetFramework][]. +type GetFrameworkRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The name of the framework to retrieve, in the format + // `organizations/{organization}/locations/{location}/frameworks/{framework_id}` + // The only supported location is `global`. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Optional. The framework major version to retrieve. If not specified, the + // most recently updated `revision_id` is retrieved. + MajorRevisionId int64 `protobuf:"varint,2,opt,name=major_revision_id,json=majorRevisionId,proto3" json:"major_revision_id,omitempty"` +} + +func (x *GetFrameworkRequest) Reset() { + *x = GetFrameworkRequest{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_config_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetFrameworkRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetFrameworkRequest) ProtoMessage() {} + +func (x *GetFrameworkRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_config_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetFrameworkRequest.ProtoReflect.Descriptor instead. +func (*GetFrameworkRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_config_proto_rawDescGZIP(), []int{2} +} + +func (x *GetFrameworkRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *GetFrameworkRequest) GetMajorRevisionId() int64 { + if x != nil { + return x.MajorRevisionId + } + return 0 +} + +// The request message for [CreateFramework][]. +type CreateFrameworkRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The parent resource name, in the format + // `organizations/{organization}/locations/{location}`. + // The only supported location is `global`. + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Required. The identifier (ID) of the framework. The ID is not the full name + // of the framework; it's the last part of the full name of the framework. + FrameworkId string `protobuf:"bytes,2,opt,name=framework_id,json=frameworkId,proto3" json:"framework_id,omitempty"` + // Required. The resource being created. + Framework *Framework `protobuf:"bytes,3,opt,name=framework,proto3" json:"framework,omitempty"` +} + +func (x *CreateFrameworkRequest) Reset() { + *x = CreateFrameworkRequest{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_config_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateFrameworkRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateFrameworkRequest) ProtoMessage() {} + +func (x *CreateFrameworkRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_config_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateFrameworkRequest.ProtoReflect.Descriptor instead. +func (*CreateFrameworkRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_config_proto_rawDescGZIP(), []int{3} +} + +func (x *CreateFrameworkRequest) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +func (x *CreateFrameworkRequest) GetFrameworkId() string { + if x != nil { + return x.FrameworkId + } + return "" +} + +func (x *CreateFrameworkRequest) GetFramework() *Framework { + if x != nil { + return x.Framework + } + return nil +} + +// The request message for [UpdateFramework][]. +type UpdateFrameworkRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Optional. A field mask is used to specify the fields to be overwritten in + // the framework resource by the update. The fields specified in the + // `update_mask` are relative to the resource, not the full request. A field + // is overwritten if it is in the mask. If you don't provide a mask then all + // fields present in the request will be overwritten. + UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,1,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` + // Required. The resource that is being updated. + Framework *Framework `protobuf:"bytes,2,opt,name=framework,proto3" json:"framework,omitempty"` + // Optional. The major version ID of the framework to update. + MajorRevisionId int64 `protobuf:"varint,3,opt,name=major_revision_id,json=majorRevisionId,proto3" json:"major_revision_id,omitempty"` +} + +func (x *UpdateFrameworkRequest) Reset() { + *x = UpdateFrameworkRequest{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_config_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateFrameworkRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateFrameworkRequest) ProtoMessage() {} + +func (x *UpdateFrameworkRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_config_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateFrameworkRequest.ProtoReflect.Descriptor instead. +func (*UpdateFrameworkRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_config_proto_rawDescGZIP(), []int{4} +} + +func (x *UpdateFrameworkRequest) GetUpdateMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.UpdateMask + } + return nil +} + +func (x *UpdateFrameworkRequest) GetFramework() *Framework { + if x != nil { + return x.Framework + } + return nil +} + +func (x *UpdateFrameworkRequest) GetMajorRevisionId() int64 { + if x != nil { + return x.MajorRevisionId + } + return 0 +} + +// Request message for [DeleteFramework][]. +type DeleteFrameworkRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The name of the resource, in the format + // `organizations/{organization}/locations/{location}/frameworks/{framework}`. + // The only supported location is `global`. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *DeleteFrameworkRequest) Reset() { + *x = DeleteFrameworkRequest{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_config_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeleteFrameworkRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteFrameworkRequest) ProtoMessage() {} + +func (x *DeleteFrameworkRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_config_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteFrameworkRequest.ProtoReflect.Descriptor instead. +func (*DeleteFrameworkRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_config_proto_rawDescGZIP(), []int{5} +} + +func (x *DeleteFrameworkRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// Request message for [ListCloudControls][]. +type ListCloudControlsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The parent resource name, in the format + // `organizations/{organization}/locations/{location}`. + // The only supported location is `global`. + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Optional. The maximum number of cloud controls to return. The default value + // is `500`. + // + // If you exceed the maximum value of `1000`, then the service uses the + // maximum value. + PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + // Optional. A pagination token that's returned from a previous request to + // list cloud controls. Provide this token to retrieve the next page of + // results. + // + // When paginating, the parent that you provide to the + // [ListCloudControls][google.cloud.cloudsecuritycompliance.v1.Config.ListCloudControls] + // request must match the call that provided the page token. + PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` +} + +func (x *ListCloudControlsRequest) Reset() { + *x = ListCloudControlsRequest{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_config_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListCloudControlsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListCloudControlsRequest) ProtoMessage() {} + +func (x *ListCloudControlsRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_config_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListCloudControlsRequest.ProtoReflect.Descriptor instead. +func (*ListCloudControlsRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_config_proto_rawDescGZIP(), []int{6} +} + +func (x *ListCloudControlsRequest) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +func (x *ListCloudControlsRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *ListCloudControlsRequest) GetPageToken() string { + if x != nil { + return x.PageToken + } + return "" +} + +// The response message for [ListCloudControls][]. +type ListCloudControlsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The list of CloudControl resources. + CloudControls []*CloudControl `protobuf:"bytes,1,rep,name=cloud_controls,json=cloudControls,proto3" json:"cloud_controls,omitempty"` + // A pagination token. To retrieve the next page of results, call the method + // again with this token. + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` +} + +func (x *ListCloudControlsResponse) Reset() { + *x = ListCloudControlsResponse{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_config_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListCloudControlsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListCloudControlsResponse) ProtoMessage() {} + +func (x *ListCloudControlsResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_config_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListCloudControlsResponse.ProtoReflect.Descriptor instead. +func (*ListCloudControlsResponse) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_config_proto_rawDescGZIP(), []int{7} +} + +func (x *ListCloudControlsResponse) GetCloudControls() []*CloudControl { + if x != nil { + return x.CloudControls + } + return nil +} + +func (x *ListCloudControlsResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken + } + return "" +} + +// The request message for [GetCloudControl][]. +type GetCloudControlRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The name of the cloud control to retrieve, in the format + // `organizations/{organization}/locations/{location}/cloudControls/{cloud_control}`. + // The only supported location is `global`. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Optional. The major version of the cloud control to retrieve. If not + // specified, the most recently updated `revision_id` is retrieved. + MajorRevisionId int64 `protobuf:"varint,2,opt,name=major_revision_id,json=majorRevisionId,proto3" json:"major_revision_id,omitempty"` +} + +func (x *GetCloudControlRequest) Reset() { + *x = GetCloudControlRequest{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_config_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetCloudControlRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetCloudControlRequest) ProtoMessage() {} + +func (x *GetCloudControlRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_config_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetCloudControlRequest.ProtoReflect.Descriptor instead. +func (*GetCloudControlRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_config_proto_rawDescGZIP(), []int{8} +} + +func (x *GetCloudControlRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *GetCloudControlRequest) GetMajorRevisionId() int64 { + if x != nil { + return x.MajorRevisionId + } + return 0 +} + +// The request message for [CreateCloudControl][]. +type CreateCloudControlRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The parent resource name, in the format + // `organizations/{organization}/locations/{location}`. + // The only supported location is `global`. + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Required. The identifier for the cloud control, which is the last segment + // of the cloud control name. The format is + // `^[a-zA-Z][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]$`. + CloudControlId string `protobuf:"bytes,2,opt,name=cloud_control_id,json=cloudControlId,proto3" json:"cloud_control_id,omitempty"` + // Required. The cloud control that's being created. + CloudControl *CloudControl `protobuf:"bytes,3,opt,name=cloud_control,json=cloudControl,proto3" json:"cloud_control,omitempty"` +} + +func (x *CreateCloudControlRequest) Reset() { + *x = CreateCloudControlRequest{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_config_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateCloudControlRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateCloudControlRequest) ProtoMessage() {} + +func (x *CreateCloudControlRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_config_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateCloudControlRequest.ProtoReflect.Descriptor instead. +func (*CreateCloudControlRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_config_proto_rawDescGZIP(), []int{9} +} + +func (x *CreateCloudControlRequest) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +func (x *CreateCloudControlRequest) GetCloudControlId() string { + if x != nil { + return x.CloudControlId + } + return "" +} + +func (x *CreateCloudControlRequest) GetCloudControl() *CloudControl { + if x != nil { + return x.CloudControl + } + return nil +} + +// The request message for [UpdateCloudControl][]. +type UpdateCloudControlRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Optional. Use a field mask to specify the fields to be overwritten in the + // cloud control during the update. + // The fields that you specify in the `update_mask` are relative to the + // cloud control, not the full request. A field is overwritten if it is in + // the mask. If you don't provide a mask, all fields in the request + // are updated. + // + // You can update the following fields: + // + // - Display name + // - Description + // - Parameters + // - Rules + // - Parameter specification + UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,1,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` + // Required. The cloud control that you're updating. + CloudControl *CloudControl `protobuf:"bytes,2,opt,name=cloud_control,json=cloudControl,proto3" json:"cloud_control,omitempty"` +} + +func (x *UpdateCloudControlRequest) Reset() { + *x = UpdateCloudControlRequest{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_config_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateCloudControlRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateCloudControlRequest) ProtoMessage() {} + +func (x *UpdateCloudControlRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_config_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateCloudControlRequest.ProtoReflect.Descriptor instead. +func (*UpdateCloudControlRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_config_proto_rawDescGZIP(), []int{10} +} + +func (x *UpdateCloudControlRequest) GetUpdateMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.UpdateMask + } + return nil +} + +func (x *UpdateCloudControlRequest) GetCloudControl() *CloudControl { + if x != nil { + return x.CloudControl + } + return nil +} + +// The request message for [DeleteCloudControl][]. +type DeleteCloudControlRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The name of the cloud control to delete, in the format + // `organizations/{organization}/locations/{location}/CloudControls/{CloudControl}`. + // The only supported location is `global`. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *DeleteCloudControlRequest) Reset() { + *x = DeleteCloudControlRequest{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_config_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeleteCloudControlRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteCloudControlRequest) ProtoMessage() {} + +func (x *DeleteCloudControlRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_config_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteCloudControlRequest.ProtoReflect.Descriptor instead. +func (*DeleteCloudControlRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_config_proto_rawDescGZIP(), []int{11} +} + +func (x *DeleteCloudControlRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +var File_google_cloud_cloudsecuritycompliance_v1_config_proto protoreflect.FileDescriptor + +var file_google_cloud_cloudsecuritycompliance_v1_config_proto_rawDesc = []byte{ + 0x0a, 0x34, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, + 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x27, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, + 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x1a, + 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, + 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x34, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, + 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xaf, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, + 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x50, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x38, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x32, 0x12, 0x30, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, + 0x63, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x06, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, + 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, + 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x94, 0x01, 0x0a, 0x16, 0x4c, 0x69, + 0x73, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, 0x0a, 0x0a, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, + 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, + 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x0a, 0x66, 0x72, + 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, + 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x22, 0x94, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, + 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4c, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x38, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x32, 0x0a, 0x30, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x11, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x5f, + 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x52, 0x65, 0x76, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xe9, 0x01, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x50, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x38, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x32, 0x12, 0x30, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, + 0x6e, 0x63, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x06, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x0c, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, + 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, + 0x0b, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, 0x55, 0x0a, 0x09, + 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, + 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, + 0x6f, 0x72, 0x6b, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, + 0x6f, 0x72, 0x6b, 0x22, 0xe2, 0x01, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x72, + 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, + 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, + 0x12, 0x55, 0x0a, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, + 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x72, + 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x66, 0x72, + 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x2f, 0x0a, 0x11, 0x6d, 0x61, 0x6a, 0x6f, 0x72, + 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x52, 0x65, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x66, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x4c, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x38, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x32, 0x0a, 0x30, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, + 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, + 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x22, 0xb5, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x53, 0x0a, + 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3b, 0xe0, + 0x41, 0x02, 0xfa, 0x41, 0x35, 0x12, 0x33, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, + 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6c, + 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, + 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, + 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xa1, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, + 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, + 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x0d, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, + 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, + 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x9a, 0x01, 0x0a, + 0x16, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4f, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3b, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x35, 0x0a, 0x33, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, + 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, + 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x11, 0x6d, 0x61, 0x6a, 0x6f, + 0x72, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x52, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x80, 0x02, 0x0a, 0x19, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x53, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3b, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x35, 0x12, + 0x33, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, + 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x2d, 0x0a, 0x10, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x49, 0x64, 0x12, 0x5f, 0x0a, 0x0d, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, + 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x6f, + 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x22, 0xbe, 0x01, 0x0a, + 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x42, 0x03, 0xe0, 0x41, 0x01, + 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x5f, 0x0a, 0x0d, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, + 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, + 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, + 0x0c, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x22, 0x6c, 0x0a, + 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4f, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3b, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x35, + 0x0a, 0x33, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, + 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x32, 0xa1, 0x12, 0x0a, 0x06, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0xd7, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x46, + 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x12, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, + 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, + 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, + 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, + 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x44, 0xda, 0x41, 0x06, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x12, 0x33, 0x2f, 0x76, 0x31, + 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x73, + 0x12, 0xc4, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, + 0x6b, 0x12, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, + 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, + 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, + 0x6f, 0x72, 0x6b, 0x22, 0x42, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x35, 0x12, 0x33, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, + 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xee, 0x01, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x3f, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x72, 0x61, 0x6d, + 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, + 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, + 0x22, 0x66, 0xda, 0x41, 0x1d, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x66, 0x72, 0x61, 0x6d, + 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x2c, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x5f, + 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x3a, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, + 0x6f, 0x72, 0x6b, 0x22, 0x33, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, + 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x66, 0x72, + 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x12, 0xf0, 0x01, 0x0a, 0x0f, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x3f, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, + 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x72, 0x61, + 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, + 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, + 0x6b, 0x22, 0x68, 0xda, 0x41, 0x15, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x2c, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x4a, 0x3a, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x32, 0x3d, 0x2f, 0x76, + 0x31, 0x2f, 0x7b, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x6e, 0x61, 0x6d, + 0x65, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x66, 0x72, + 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xae, 0x01, 0x0a, 0x0f, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x12, + 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, + 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x42, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x2a, 0x33, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, + 0x6d, 0x65, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x66, + 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xe3, 0x01, 0x0a, + 0x11, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x73, 0x12, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, + 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, + 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x47, 0xda, 0x41, 0x06, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x38, 0x12, 0x36, 0x2f, 0x76, 0x31, 0x2f, + 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x73, 0x12, 0xd0, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, + 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, + 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x22, 0x45, + 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x38, 0x12, 0x36, 0x2f, + 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x86, 0x02, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x42, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, + 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x6f, + 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x22, 0x75, 0xda, 0x41, 0x25, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x2c, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x2c, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x69, + 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x47, 0x3a, 0x0d, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x22, 0x36, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, + 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x12, 0x88, + 0x02, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, + 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, + 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x22, 0x77, 0xda, 0x41, 0x19, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x55, 0x3a, 0x0d, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x32, 0x44, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xb7, 0x01, 0x0a, 0x12, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x12, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x45, 0xda, 0x41, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x38, 0x2a, 0x36, 0x2f, 0x76, 0x31, + 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x2a, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, + 0x2f, 0x2a, 0x7d, 0x1a, 0x5a, 0xca, 0x41, 0x26, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, + 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, + 0x2e, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, + 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x42, + 0xa4, 0x02, 0x0a, 0x2b, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, + 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x42, + 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x65, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x67, 0x6f, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, + 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x76, + 0x31, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, + 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x70, 0x62, 0x3b, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, + 0x6e, 0x63, 0x65, 0x70, 0x62, 0xaa, 0x02, 0x27, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, + 0x74, 0x79, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x56, 0x31, 0xca, + 0x02, 0x27, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x43, + 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6d, 0x70, + 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x5c, 0x56, 0x31, 0xea, 0x02, 0x2a, 0x47, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, + 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, + 0x63, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_google_cloud_cloudsecuritycompliance_v1_config_proto_rawDescOnce sync.Once + file_google_cloud_cloudsecuritycompliance_v1_config_proto_rawDescData = file_google_cloud_cloudsecuritycompliance_v1_config_proto_rawDesc +) + +func file_google_cloud_cloudsecuritycompliance_v1_config_proto_rawDescGZIP() []byte { + file_google_cloud_cloudsecuritycompliance_v1_config_proto_rawDescOnce.Do(func() { + file_google_cloud_cloudsecuritycompliance_v1_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_cloudsecuritycompliance_v1_config_proto_rawDescData) + }) + return file_google_cloud_cloudsecuritycompliance_v1_config_proto_rawDescData +} + +var file_google_cloud_cloudsecuritycompliance_v1_config_proto_msgTypes = make([]protoimpl.MessageInfo, 12) +var file_google_cloud_cloudsecuritycompliance_v1_config_proto_goTypes = []any{ + (*ListFrameworksRequest)(nil), // 0: google.cloud.cloudsecuritycompliance.v1.ListFrameworksRequest + (*ListFrameworksResponse)(nil), // 1: google.cloud.cloudsecuritycompliance.v1.ListFrameworksResponse + (*GetFrameworkRequest)(nil), // 2: google.cloud.cloudsecuritycompliance.v1.GetFrameworkRequest + (*CreateFrameworkRequest)(nil), // 3: google.cloud.cloudsecuritycompliance.v1.CreateFrameworkRequest + (*UpdateFrameworkRequest)(nil), // 4: google.cloud.cloudsecuritycompliance.v1.UpdateFrameworkRequest + (*DeleteFrameworkRequest)(nil), // 5: google.cloud.cloudsecuritycompliance.v1.DeleteFrameworkRequest + (*ListCloudControlsRequest)(nil), // 6: google.cloud.cloudsecuritycompliance.v1.ListCloudControlsRequest + (*ListCloudControlsResponse)(nil), // 7: google.cloud.cloudsecuritycompliance.v1.ListCloudControlsResponse + (*GetCloudControlRequest)(nil), // 8: google.cloud.cloudsecuritycompliance.v1.GetCloudControlRequest + (*CreateCloudControlRequest)(nil), // 9: google.cloud.cloudsecuritycompliance.v1.CreateCloudControlRequest + (*UpdateCloudControlRequest)(nil), // 10: google.cloud.cloudsecuritycompliance.v1.UpdateCloudControlRequest + (*DeleteCloudControlRequest)(nil), // 11: google.cloud.cloudsecuritycompliance.v1.DeleteCloudControlRequest + (*Framework)(nil), // 12: google.cloud.cloudsecuritycompliance.v1.Framework + (*fieldmaskpb.FieldMask)(nil), // 13: google.protobuf.FieldMask + (*CloudControl)(nil), // 14: google.cloud.cloudsecuritycompliance.v1.CloudControl + (*emptypb.Empty)(nil), // 15: google.protobuf.Empty +} +var file_google_cloud_cloudsecuritycompliance_v1_config_proto_depIdxs = []int32{ + 12, // 0: google.cloud.cloudsecuritycompliance.v1.ListFrameworksResponse.frameworks:type_name -> google.cloud.cloudsecuritycompliance.v1.Framework + 12, // 1: google.cloud.cloudsecuritycompliance.v1.CreateFrameworkRequest.framework:type_name -> google.cloud.cloudsecuritycompliance.v1.Framework + 13, // 2: google.cloud.cloudsecuritycompliance.v1.UpdateFrameworkRequest.update_mask:type_name -> google.protobuf.FieldMask + 12, // 3: google.cloud.cloudsecuritycompliance.v1.UpdateFrameworkRequest.framework:type_name -> google.cloud.cloudsecuritycompliance.v1.Framework + 14, // 4: google.cloud.cloudsecuritycompliance.v1.ListCloudControlsResponse.cloud_controls:type_name -> google.cloud.cloudsecuritycompliance.v1.CloudControl + 14, // 5: google.cloud.cloudsecuritycompliance.v1.CreateCloudControlRequest.cloud_control:type_name -> google.cloud.cloudsecuritycompliance.v1.CloudControl + 13, // 6: google.cloud.cloudsecuritycompliance.v1.UpdateCloudControlRequest.update_mask:type_name -> google.protobuf.FieldMask + 14, // 7: google.cloud.cloudsecuritycompliance.v1.UpdateCloudControlRequest.cloud_control:type_name -> google.cloud.cloudsecuritycompliance.v1.CloudControl + 0, // 8: google.cloud.cloudsecuritycompliance.v1.Config.ListFrameworks:input_type -> google.cloud.cloudsecuritycompliance.v1.ListFrameworksRequest + 2, // 9: google.cloud.cloudsecuritycompliance.v1.Config.GetFramework:input_type -> google.cloud.cloudsecuritycompliance.v1.GetFrameworkRequest + 3, // 10: google.cloud.cloudsecuritycompliance.v1.Config.CreateFramework:input_type -> google.cloud.cloudsecuritycompliance.v1.CreateFrameworkRequest + 4, // 11: google.cloud.cloudsecuritycompliance.v1.Config.UpdateFramework:input_type -> google.cloud.cloudsecuritycompliance.v1.UpdateFrameworkRequest + 5, // 12: google.cloud.cloudsecuritycompliance.v1.Config.DeleteFramework:input_type -> google.cloud.cloudsecuritycompliance.v1.DeleteFrameworkRequest + 6, // 13: google.cloud.cloudsecuritycompliance.v1.Config.ListCloudControls:input_type -> google.cloud.cloudsecuritycompliance.v1.ListCloudControlsRequest + 8, // 14: google.cloud.cloudsecuritycompliance.v1.Config.GetCloudControl:input_type -> google.cloud.cloudsecuritycompliance.v1.GetCloudControlRequest + 9, // 15: google.cloud.cloudsecuritycompliance.v1.Config.CreateCloudControl:input_type -> google.cloud.cloudsecuritycompliance.v1.CreateCloudControlRequest + 10, // 16: google.cloud.cloudsecuritycompliance.v1.Config.UpdateCloudControl:input_type -> google.cloud.cloudsecuritycompliance.v1.UpdateCloudControlRequest + 11, // 17: google.cloud.cloudsecuritycompliance.v1.Config.DeleteCloudControl:input_type -> google.cloud.cloudsecuritycompliance.v1.DeleteCloudControlRequest + 1, // 18: google.cloud.cloudsecuritycompliance.v1.Config.ListFrameworks:output_type -> google.cloud.cloudsecuritycompliance.v1.ListFrameworksResponse + 12, // 19: google.cloud.cloudsecuritycompliance.v1.Config.GetFramework:output_type -> google.cloud.cloudsecuritycompliance.v1.Framework + 12, // 20: google.cloud.cloudsecuritycompliance.v1.Config.CreateFramework:output_type -> google.cloud.cloudsecuritycompliance.v1.Framework + 12, // 21: google.cloud.cloudsecuritycompliance.v1.Config.UpdateFramework:output_type -> google.cloud.cloudsecuritycompliance.v1.Framework + 15, // 22: google.cloud.cloudsecuritycompliance.v1.Config.DeleteFramework:output_type -> google.protobuf.Empty + 7, // 23: google.cloud.cloudsecuritycompliance.v1.Config.ListCloudControls:output_type -> google.cloud.cloudsecuritycompliance.v1.ListCloudControlsResponse + 14, // 24: google.cloud.cloudsecuritycompliance.v1.Config.GetCloudControl:output_type -> google.cloud.cloudsecuritycompliance.v1.CloudControl + 14, // 25: google.cloud.cloudsecuritycompliance.v1.Config.CreateCloudControl:output_type -> google.cloud.cloudsecuritycompliance.v1.CloudControl + 14, // 26: google.cloud.cloudsecuritycompliance.v1.Config.UpdateCloudControl:output_type -> google.cloud.cloudsecuritycompliance.v1.CloudControl + 15, // 27: google.cloud.cloudsecuritycompliance.v1.Config.DeleteCloudControl:output_type -> google.protobuf.Empty + 18, // [18:28] is the sub-list for method output_type + 8, // [8:18] is the sub-list for method input_type + 8, // [8:8] is the sub-list for extension type_name + 8, // [8:8] is the sub-list for extension extendee + 0, // [0:8] is the sub-list for field type_name +} + +func init() { file_google_cloud_cloudsecuritycompliance_v1_config_proto_init() } +func file_google_cloud_cloudsecuritycompliance_v1_config_proto_init() { + if File_google_cloud_cloudsecuritycompliance_v1_config_proto != nil { + return + } + file_google_cloud_cloudsecuritycompliance_v1_common_proto_init() + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_google_cloud_cloudsecuritycompliance_v1_config_proto_rawDesc, + NumEnums: 0, + NumMessages: 12, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_google_cloud_cloudsecuritycompliance_v1_config_proto_goTypes, + DependencyIndexes: file_google_cloud_cloudsecuritycompliance_v1_config_proto_depIdxs, + MessageInfos: file_google_cloud_cloudsecuritycompliance_v1_config_proto_msgTypes, + }.Build() + File_google_cloud_cloudsecuritycompliance_v1_config_proto = out.File + file_google_cloud_cloudsecuritycompliance_v1_config_proto_rawDesc = nil + file_google_cloud_cloudsecuritycompliance_v1_config_proto_goTypes = nil + file_google_cloud_cloudsecuritycompliance_v1_config_proto_depIdxs = nil +} diff --git a/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb/config_grpc.pb.go b/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb/config_grpc.pb.go new file mode 100644 index 000000000000..619411729f6f --- /dev/null +++ b/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb/config_grpc.pb.go @@ -0,0 +1,588 @@ +// Copyright 2025 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 +// +// http://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. + +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc v4.25.7 +// source: google/cloud/cloudsecuritycompliance/v1/config.proto + +package cloudsecuritycompliancepb + +import ( + context "context" + + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + emptypb "google.golang.org/protobuf/types/known/emptypb" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +const ( + Config_ListFrameworks_FullMethodName = "/google.cloud.cloudsecuritycompliance.v1.Config/ListFrameworks" + Config_GetFramework_FullMethodName = "/google.cloud.cloudsecuritycompliance.v1.Config/GetFramework" + Config_CreateFramework_FullMethodName = "/google.cloud.cloudsecuritycompliance.v1.Config/CreateFramework" + Config_UpdateFramework_FullMethodName = "/google.cloud.cloudsecuritycompliance.v1.Config/UpdateFramework" + Config_DeleteFramework_FullMethodName = "/google.cloud.cloudsecuritycompliance.v1.Config/DeleteFramework" + Config_ListCloudControls_FullMethodName = "/google.cloud.cloudsecuritycompliance.v1.Config/ListCloudControls" + Config_GetCloudControl_FullMethodName = "/google.cloud.cloudsecuritycompliance.v1.Config/GetCloudControl" + Config_CreateCloudControl_FullMethodName = "/google.cloud.cloudsecuritycompliance.v1.Config/CreateCloudControl" + Config_UpdateCloudControl_FullMethodName = "/google.cloud.cloudsecuritycompliance.v1.Config/UpdateCloudControl" + Config_DeleteCloudControl_FullMethodName = "/google.cloud.cloudsecuritycompliance.v1.Config/DeleteCloudControl" +) + +// ConfigClient is the client API for Config service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type ConfigClient interface { + // Lists the frameworks (both built-in and custom) that are available within + // the parent resource. The latest major version of each framework is + // returned. + // This method supports pagination. + ListFrameworks(ctx context.Context, in *ListFrameworksRequest, opts ...grpc.CallOption) (*ListFrameworksResponse, error) + // Gets details about a framework. + // This method retrieves the latest major version of the framework. + // + // To retrieve a specific major version, include `major_revision_id` in + // the request. + GetFramework(ctx context.Context, in *GetFrameworkRequest, opts ...grpc.CallOption) (*Framework, error) + // Creates a custom framework in a given parent resource. + // You can't create built-in frameworks because those are managed by + // Google. + CreateFramework(ctx context.Context, in *CreateFrameworkRequest, opts ...grpc.CallOption) (*Framework, error) + // Updates a custom framework. + // This method allows for partial updates of a framework. Use the + // `update_mask` to specify which fields to update. Consider the following: + // + // - If you provide an `update_mask`, only the fields that are specified + // in the mask are updated. + // - If you don't provide an `update_mask`, all the fields that are present + // in the request's `framework` body are used to overwrite the existing + // resource. + // + // You can only update frameworks with the `CUSTOM` type. + // A successful update creates a new version of the framework. + UpdateFramework(ctx context.Context, in *UpdateFrameworkRequest, opts ...grpc.CallOption) (*Framework, error) + // Deletes a custom framework, including all its major and + // minor revisions. Consider the following: + // + // - You can't delete built-in frameworks. You can only delete frameworks + // with type `CUSTOM`. + // - You can't delete frameworks that are deployed to a resource. + // - You can't restore a deleted framework. This action is permanent. + DeleteFramework(ctx context.Context, in *DeleteFrameworkRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) + // Lists the cloud controls (both built-in and custom) that are available + // in a given parent resource. The latest major version of each cloud control + // is returned. + // This method supports pagination. + ListCloudControls(ctx context.Context, in *ListCloudControlsRequest, opts ...grpc.CallOption) (*ListCloudControlsResponse, error) + // Gets details about a cloud control. + // This method retrieves the latest major version of a cloud control that + // you identify by name. + // + // By default, the latest major version of the cloud control is returned. + // To retrieve a specific major version, include `major_revision_id` in + // the request. + GetCloudControl(ctx context.Context, in *GetCloudControlRequest, opts ...grpc.CallOption) (*CloudControl, error) + // Creates a custom cloud control in a given parent + // resource. + // You can't create built-in cloud controls because those are managed by + // Google. + CreateCloudControl(ctx context.Context, in *CreateCloudControlRequest, opts ...grpc.CallOption) (*CloudControl, error) + // Updates a custom cloud control. + // This method allows for partial updates of a cloud control. Use the + // `update_mask` to specify which fields to update. Consider the following: + // + // - If you provide an `update_mask`, only the fields that are specified + // in the mask are updated. + // - If you don't provide an `update_mask`, all the fields that are present + // in the request's `cloud_control` body are used to overwrite the existing + // resource. + // + // You can only update cloud controls with the `CUSTOM` type. + // A successful update creates a new version of the cloud control. + UpdateCloudControl(ctx context.Context, in *UpdateCloudControlRequest, opts ...grpc.CallOption) (*CloudControl, error) + // Deletes a custom cloud control, including all its + // major and minor revisions. Consider the following: + // + // - You can't delete built-in cloud controls. You can only delete cloud + // controls with type `CUSTOM`. + // - You can't delete cloud controls if any of the versions are referenced + // by a framework. + // - You can't restore a deleted cloud control. This action is permanent. + DeleteCloudControl(ctx context.Context, in *DeleteCloudControlRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) +} + +type configClient struct { + cc grpc.ClientConnInterface +} + +func NewConfigClient(cc grpc.ClientConnInterface) ConfigClient { + return &configClient{cc} +} + +func (c *configClient) ListFrameworks(ctx context.Context, in *ListFrameworksRequest, opts ...grpc.CallOption) (*ListFrameworksResponse, error) { + out := new(ListFrameworksResponse) + err := c.cc.Invoke(ctx, Config_ListFrameworks_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *configClient) GetFramework(ctx context.Context, in *GetFrameworkRequest, opts ...grpc.CallOption) (*Framework, error) { + out := new(Framework) + err := c.cc.Invoke(ctx, Config_GetFramework_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *configClient) CreateFramework(ctx context.Context, in *CreateFrameworkRequest, opts ...grpc.CallOption) (*Framework, error) { + out := new(Framework) + err := c.cc.Invoke(ctx, Config_CreateFramework_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *configClient) UpdateFramework(ctx context.Context, in *UpdateFrameworkRequest, opts ...grpc.CallOption) (*Framework, error) { + out := new(Framework) + err := c.cc.Invoke(ctx, Config_UpdateFramework_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *configClient) DeleteFramework(ctx context.Context, in *DeleteFrameworkRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, Config_DeleteFramework_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *configClient) ListCloudControls(ctx context.Context, in *ListCloudControlsRequest, opts ...grpc.CallOption) (*ListCloudControlsResponse, error) { + out := new(ListCloudControlsResponse) + err := c.cc.Invoke(ctx, Config_ListCloudControls_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *configClient) GetCloudControl(ctx context.Context, in *GetCloudControlRequest, opts ...grpc.CallOption) (*CloudControl, error) { + out := new(CloudControl) + err := c.cc.Invoke(ctx, Config_GetCloudControl_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *configClient) CreateCloudControl(ctx context.Context, in *CreateCloudControlRequest, opts ...grpc.CallOption) (*CloudControl, error) { + out := new(CloudControl) + err := c.cc.Invoke(ctx, Config_CreateCloudControl_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *configClient) UpdateCloudControl(ctx context.Context, in *UpdateCloudControlRequest, opts ...grpc.CallOption) (*CloudControl, error) { + out := new(CloudControl) + err := c.cc.Invoke(ctx, Config_UpdateCloudControl_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *configClient) DeleteCloudControl(ctx context.Context, in *DeleteCloudControlRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, Config_DeleteCloudControl_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// ConfigServer is the server API for Config service. +// All implementations should embed UnimplementedConfigServer +// for forward compatibility +type ConfigServer interface { + // Lists the frameworks (both built-in and custom) that are available within + // the parent resource. The latest major version of each framework is + // returned. + // This method supports pagination. + ListFrameworks(context.Context, *ListFrameworksRequest) (*ListFrameworksResponse, error) + // Gets details about a framework. + // This method retrieves the latest major version of the framework. + // + // To retrieve a specific major version, include `major_revision_id` in + // the request. + GetFramework(context.Context, *GetFrameworkRequest) (*Framework, error) + // Creates a custom framework in a given parent resource. + // You can't create built-in frameworks because those are managed by + // Google. + CreateFramework(context.Context, *CreateFrameworkRequest) (*Framework, error) + // Updates a custom framework. + // This method allows for partial updates of a framework. Use the + // `update_mask` to specify which fields to update. Consider the following: + // + // - If you provide an `update_mask`, only the fields that are specified + // in the mask are updated. + // - If you don't provide an `update_mask`, all the fields that are present + // in the request's `framework` body are used to overwrite the existing + // resource. + // + // You can only update frameworks with the `CUSTOM` type. + // A successful update creates a new version of the framework. + UpdateFramework(context.Context, *UpdateFrameworkRequest) (*Framework, error) + // Deletes a custom framework, including all its major and + // minor revisions. Consider the following: + // + // - You can't delete built-in frameworks. You can only delete frameworks + // with type `CUSTOM`. + // - You can't delete frameworks that are deployed to a resource. + // - You can't restore a deleted framework. This action is permanent. + DeleteFramework(context.Context, *DeleteFrameworkRequest) (*emptypb.Empty, error) + // Lists the cloud controls (both built-in and custom) that are available + // in a given parent resource. The latest major version of each cloud control + // is returned. + // This method supports pagination. + ListCloudControls(context.Context, *ListCloudControlsRequest) (*ListCloudControlsResponse, error) + // Gets details about a cloud control. + // This method retrieves the latest major version of a cloud control that + // you identify by name. + // + // By default, the latest major version of the cloud control is returned. + // To retrieve a specific major version, include `major_revision_id` in + // the request. + GetCloudControl(context.Context, *GetCloudControlRequest) (*CloudControl, error) + // Creates a custom cloud control in a given parent + // resource. + // You can't create built-in cloud controls because those are managed by + // Google. + CreateCloudControl(context.Context, *CreateCloudControlRequest) (*CloudControl, error) + // Updates a custom cloud control. + // This method allows for partial updates of a cloud control. Use the + // `update_mask` to specify which fields to update. Consider the following: + // + // - If you provide an `update_mask`, only the fields that are specified + // in the mask are updated. + // - If you don't provide an `update_mask`, all the fields that are present + // in the request's `cloud_control` body are used to overwrite the existing + // resource. + // + // You can only update cloud controls with the `CUSTOM` type. + // A successful update creates a new version of the cloud control. + UpdateCloudControl(context.Context, *UpdateCloudControlRequest) (*CloudControl, error) + // Deletes a custom cloud control, including all its + // major and minor revisions. Consider the following: + // + // - You can't delete built-in cloud controls. You can only delete cloud + // controls with type `CUSTOM`. + // - You can't delete cloud controls if any of the versions are referenced + // by a framework. + // - You can't restore a deleted cloud control. This action is permanent. + DeleteCloudControl(context.Context, *DeleteCloudControlRequest) (*emptypb.Empty, error) +} + +// UnimplementedConfigServer should be embedded to have forward compatible implementations. +type UnimplementedConfigServer struct { +} + +func (UnimplementedConfigServer) ListFrameworks(context.Context, *ListFrameworksRequest) (*ListFrameworksResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListFrameworks not implemented") +} +func (UnimplementedConfigServer) GetFramework(context.Context, *GetFrameworkRequest) (*Framework, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetFramework not implemented") +} +func (UnimplementedConfigServer) CreateFramework(context.Context, *CreateFrameworkRequest) (*Framework, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateFramework not implemented") +} +func (UnimplementedConfigServer) UpdateFramework(context.Context, *UpdateFrameworkRequest) (*Framework, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateFramework not implemented") +} +func (UnimplementedConfigServer) DeleteFramework(context.Context, *DeleteFrameworkRequest) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteFramework not implemented") +} +func (UnimplementedConfigServer) ListCloudControls(context.Context, *ListCloudControlsRequest) (*ListCloudControlsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListCloudControls not implemented") +} +func (UnimplementedConfigServer) GetCloudControl(context.Context, *GetCloudControlRequest) (*CloudControl, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetCloudControl not implemented") +} +func (UnimplementedConfigServer) CreateCloudControl(context.Context, *CreateCloudControlRequest) (*CloudControl, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateCloudControl not implemented") +} +func (UnimplementedConfigServer) UpdateCloudControl(context.Context, *UpdateCloudControlRequest) (*CloudControl, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateCloudControl not implemented") +} +func (UnimplementedConfigServer) DeleteCloudControl(context.Context, *DeleteCloudControlRequest) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteCloudControl not implemented") +} + +// UnsafeConfigServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to ConfigServer will +// result in compilation errors. +type UnsafeConfigServer interface { + mustEmbedUnimplementedConfigServer() +} + +func RegisterConfigServer(s grpc.ServiceRegistrar, srv ConfigServer) { + s.RegisterService(&Config_ServiceDesc, srv) +} + +func _Config_ListFrameworks_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListFrameworksRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ConfigServer).ListFrameworks(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Config_ListFrameworks_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ConfigServer).ListFrameworks(ctx, req.(*ListFrameworksRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Config_GetFramework_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetFrameworkRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ConfigServer).GetFramework(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Config_GetFramework_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ConfigServer).GetFramework(ctx, req.(*GetFrameworkRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Config_CreateFramework_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateFrameworkRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ConfigServer).CreateFramework(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Config_CreateFramework_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ConfigServer).CreateFramework(ctx, req.(*CreateFrameworkRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Config_UpdateFramework_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateFrameworkRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ConfigServer).UpdateFramework(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Config_UpdateFramework_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ConfigServer).UpdateFramework(ctx, req.(*UpdateFrameworkRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Config_DeleteFramework_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteFrameworkRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ConfigServer).DeleteFramework(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Config_DeleteFramework_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ConfigServer).DeleteFramework(ctx, req.(*DeleteFrameworkRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Config_ListCloudControls_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListCloudControlsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ConfigServer).ListCloudControls(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Config_ListCloudControls_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ConfigServer).ListCloudControls(ctx, req.(*ListCloudControlsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Config_GetCloudControl_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetCloudControlRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ConfigServer).GetCloudControl(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Config_GetCloudControl_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ConfigServer).GetCloudControl(ctx, req.(*GetCloudControlRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Config_CreateCloudControl_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateCloudControlRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ConfigServer).CreateCloudControl(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Config_CreateCloudControl_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ConfigServer).CreateCloudControl(ctx, req.(*CreateCloudControlRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Config_UpdateCloudControl_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateCloudControlRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ConfigServer).UpdateCloudControl(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Config_UpdateCloudControl_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ConfigServer).UpdateCloudControl(ctx, req.(*UpdateCloudControlRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Config_DeleteCloudControl_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteCloudControlRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ConfigServer).DeleteCloudControl(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Config_DeleteCloudControl_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ConfigServer).DeleteCloudControl(ctx, req.(*DeleteCloudControlRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// Config_ServiceDesc is the grpc.ServiceDesc for Config service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Config_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "google.cloud.cloudsecuritycompliance.v1.Config", + HandlerType: (*ConfigServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "ListFrameworks", + Handler: _Config_ListFrameworks_Handler, + }, + { + MethodName: "GetFramework", + Handler: _Config_GetFramework_Handler, + }, + { + MethodName: "CreateFramework", + Handler: _Config_CreateFramework_Handler, + }, + { + MethodName: "UpdateFramework", + Handler: _Config_UpdateFramework_Handler, + }, + { + MethodName: "DeleteFramework", + Handler: _Config_DeleteFramework_Handler, + }, + { + MethodName: "ListCloudControls", + Handler: _Config_ListCloudControls_Handler, + }, + { + MethodName: "GetCloudControl", + Handler: _Config_GetCloudControl_Handler, + }, + { + MethodName: "CreateCloudControl", + Handler: _Config_CreateCloudControl_Handler, + }, + { + MethodName: "UpdateCloudControl", + Handler: _Config_UpdateCloudControl_Handler, + }, + { + MethodName: "DeleteCloudControl", + Handler: _Config_DeleteCloudControl_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "google/cloud/cloudsecuritycompliance/v1/config.proto", +} diff --git a/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb/deployment.pb.go b/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb/deployment.pb.go new file mode 100644 index 000000000000..b8c879b375f5 --- /dev/null +++ b/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb/deployment.pb.go @@ -0,0 +1,2135 @@ +// Copyright 2025 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 +// +// http://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. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.35.2 +// protoc v4.25.7 +// source: google/cloud/cloudsecuritycompliance/v1/deployment.proto + +package cloudsecuritycompliancepb + +import ( + reflect "reflect" + sync "sync" + + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" + _ "google.golang.org/genproto/googleapis/api/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + _ "google.golang.org/protobuf/types/known/emptypb" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// The state of the deployment resource. +type DeploymentState int32 + +const ( + // Default value. This value is unused. + DeploymentState_DEPLOYMENT_STATE_UNSPECIFIED DeploymentState = 0 + // Validating the deployment. + DeploymentState_DEPLOYMENT_STATE_VALIDATING DeploymentState = 1 + // Deployment is being created. + DeploymentState_DEPLOYMENT_STATE_CREATING DeploymentState = 2 + // Deployment is being deleted. + DeploymentState_DEPLOYMENT_STATE_DELETING DeploymentState = 3 + // Deployment has failed. All the changes made by the deployment were + // successfully rolled back. You can retry or delete a deployment that's + // in this state. + DeploymentState_DEPLOYMENT_STATE_FAILED DeploymentState = 4 + // Deployment is successful and ready to use. + DeploymentState_DEPLOYMENT_STATE_READY DeploymentState = 5 + // Deployment is partially deployed. All the cloud controls weren't deployed + // successfully. Retrying the operation resumes from the first failed + // step. + DeploymentState_DEPLOYMENT_STATE_PARTIALLY_DEPLOYED DeploymentState = 6 + // Deployment is partially deleted. All the cloud control deployments weren't + // deleted successfully. Retrying the operation resumes from the first + // failed step. + DeploymentState_DEPLOYMENT_STATE_PARTIALLY_DELETED DeploymentState = 7 +) + +// Enum value maps for DeploymentState. +var ( + DeploymentState_name = map[int32]string{ + 0: "DEPLOYMENT_STATE_UNSPECIFIED", + 1: "DEPLOYMENT_STATE_VALIDATING", + 2: "DEPLOYMENT_STATE_CREATING", + 3: "DEPLOYMENT_STATE_DELETING", + 4: "DEPLOYMENT_STATE_FAILED", + 5: "DEPLOYMENT_STATE_READY", + 6: "DEPLOYMENT_STATE_PARTIALLY_DEPLOYED", + 7: "DEPLOYMENT_STATE_PARTIALLY_DELETED", + } + DeploymentState_value = map[string]int32{ + "DEPLOYMENT_STATE_UNSPECIFIED": 0, + "DEPLOYMENT_STATE_VALIDATING": 1, + "DEPLOYMENT_STATE_CREATING": 2, + "DEPLOYMENT_STATE_DELETING": 3, + "DEPLOYMENT_STATE_FAILED": 4, + "DEPLOYMENT_STATE_READY": 5, + "DEPLOYMENT_STATE_PARTIALLY_DEPLOYED": 6, + "DEPLOYMENT_STATE_PARTIALLY_DELETED": 7, + } +) + +func (x DeploymentState) Enum() *DeploymentState { + p := new(DeploymentState) + *p = x + return p +} + +func (x DeploymentState) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DeploymentState) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_enumTypes[0].Descriptor() +} + +func (DeploymentState) Type() protoreflect.EnumType { + return &file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_enumTypes[0] +} + +func (x DeploymentState) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use DeploymentState.Descriptor instead. +func (DeploymentState) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_rawDescGZIP(), []int{0} +} + +// Framework deployments represent the assignment of a framework to a target +// resource. Supported target resources are organizations, folders, and +// projects. +type FrameworkDeployment struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Identifier. The name of the framework deployment, in the format + // `organizations/{organization}/locations/{location}/frameworkDeployments/{framework_deployment_id}`. + // The only supported location is `global`. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Required. The details of the target resource that you want to deploy the + // framework to. You can specify an existing resource, or create a new one. + TargetResourceConfig *TargetResourceConfig `protobuf:"bytes,2,opt,name=target_resource_config,json=targetResourceConfig,proto3" json:"target_resource_config,omitempty"` + // Output only. The target resource to deploy the framework to, in one the + // following formats: + // + // - `organizations/{organizationID}` + // - `folders/{folderID}` + // - `projects/{projectID}` + ComputedTargetResource string `protobuf:"bytes,3,opt,name=computed_target_resource,json=computedTargetResource,proto3" json:"computed_target_resource,omitempty"` + // Required. A reference to the framework that you're deploying. + Framework *FrameworkReference `protobuf:"bytes,4,opt,name=framework,proto3" json:"framework,omitempty"` + // Optional. A user-provided description of the framework deployment. + Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"` + // Required. The deployment mode and parameters for each of the cloud controls + // in the framework. Every cloud control in the framework includes metadata. + CloudControlMetadata []*CloudControlMetadata `protobuf:"bytes,6,rep,name=cloud_control_metadata,json=cloudControlMetadata,proto3" json:"cloud_control_metadata,omitempty"` + // Output only. The state for the framework deployment. + DeploymentState DeploymentState `protobuf:"varint,7,opt,name=deployment_state,json=deploymentState,proto3,enum=google.cloud.cloudsecuritycompliance.v1.DeploymentState" json:"deployment_state,omitempty"` + // Output only. The time at which the resource was created. + CreateTime *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` + // Output only. The time at which the resource last updated. + UpdateTime *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` + // Optional. To prevent concurrent updates from overwriting each other, always + // provide the `etag` when you update a framework deployment. You can also + // provide the `etag` when you delete a framework deployment, to help + // ensure that you're deleting the intended version of the + // framework deployment. + Etag string `protobuf:"bytes,11,opt,name=etag,proto3" json:"etag,omitempty"` + // Output only. The display name of the target resource. + TargetResourceDisplayName string `protobuf:"bytes,13,opt,name=target_resource_display_name,json=targetResourceDisplayName,proto3" json:"target_resource_display_name,omitempty"` + // Output only. The references to the cloud control deployments. The reference + // includes all the cloud control deployments that are in the framework or in + // a cloud control group. + // + // For example, if a framework deployment deploys two + // cloud controls, `cc-deployment-1` and `cc-deployment-2`, then the + // references are: + // + // ``` + // + // { + // cloud_control_deployment_reference: { + // cloud_control_deployment: + // "organizations/{organization}/locations/{location}/cloudControlDeployments/cc-deployment-1" + // }, + // cloud_control_deployment_reference: { + // cloud_control_deployment: + // "organizations/{organization}/locations/{location}/cloudControlDeployments/cc-deployment-2" + // } + // + // ``` + CloudControlDeploymentReferences []*CloudControlDeploymentReference `protobuf:"bytes,14,rep,name=cloud_control_deployment_references,json=cloudControlDeploymentReferences,proto3" json:"cloud_control_deployment_references,omitempty"` +} + +func (x *FrameworkDeployment) Reset() { + *x = FrameworkDeployment{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FrameworkDeployment) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FrameworkDeployment) ProtoMessage() {} + +func (x *FrameworkDeployment) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FrameworkDeployment.ProtoReflect.Descriptor instead. +func (*FrameworkDeployment) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_rawDescGZIP(), []int{0} +} + +func (x *FrameworkDeployment) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *FrameworkDeployment) GetTargetResourceConfig() *TargetResourceConfig { + if x != nil { + return x.TargetResourceConfig + } + return nil +} + +func (x *FrameworkDeployment) GetComputedTargetResource() string { + if x != nil { + return x.ComputedTargetResource + } + return "" +} + +func (x *FrameworkDeployment) GetFramework() *FrameworkReference { + if x != nil { + return x.Framework + } + return nil +} + +func (x *FrameworkDeployment) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *FrameworkDeployment) GetCloudControlMetadata() []*CloudControlMetadata { + if x != nil { + return x.CloudControlMetadata + } + return nil +} + +func (x *FrameworkDeployment) GetDeploymentState() DeploymentState { + if x != nil { + return x.DeploymentState + } + return DeploymentState_DEPLOYMENT_STATE_UNSPECIFIED +} + +func (x *FrameworkDeployment) GetCreateTime() *timestamppb.Timestamp { + if x != nil { + return x.CreateTime + } + return nil +} + +func (x *FrameworkDeployment) GetUpdateTime() *timestamppb.Timestamp { + if x != nil { + return x.UpdateTime + } + return nil +} + +func (x *FrameworkDeployment) GetEtag() string { + if x != nil { + return x.Etag + } + return "" +} + +func (x *FrameworkDeployment) GetTargetResourceDisplayName() string { + if x != nil { + return x.TargetResourceDisplayName + } + return "" +} + +func (x *FrameworkDeployment) GetCloudControlDeploymentReferences() []*CloudControlDeploymentReference { + if x != nil { + return x.CloudControlDeploymentReferences + } + return nil +} + +// A cloud control deployment represents the deployment of a particular cloud +// control on a target resource. Supported target resources are +// `organizations/{organizationID}`, `folders/{folderID}`, and +// `projects/{projectID}`. +type CloudControlDeployment struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Identifier. The name for the cloud control deployment, in the format + // `organizations/{organization}/locations/{location}/cloudControlDeployments/{cloud_control_deployment_id}`. + // The only supported location is `global`. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Required. The details of the target resource that the cloud control is + // deployed You can use an existing target resource or create a new target. + TargetResourceConfig *TargetResourceConfig `protobuf:"bytes,2,opt,name=target_resource_config,json=targetResourceConfig,proto3" json:"target_resource_config,omitempty"` + // Output only. The resource that the cloud control is deployed on, in one of + // the following formats: + // + // - `organizations/{organizationID}` + // - `folders/{folderID}` + // - `projects/{projectID}` + TargetResource string `protobuf:"bytes,3,opt,name=target_resource,json=targetResource,proto3" json:"target_resource,omitempty"` + // Required. The deployment mode and parameters for the cloud control. + CloudControlMetadata *CloudControlMetadata `protobuf:"bytes,4,opt,name=cloud_control_metadata,json=cloudControlMetadata,proto3" json:"cloud_control_metadata,omitempty"` + // Optional. A friendly description for the cloud control deployment. + Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"` + // Output only. The state of the cloud control deployment. + DeploymentState DeploymentState `protobuf:"varint,6,opt,name=deployment_state,json=deploymentState,proto3,enum=google.cloud.cloudsecuritycompliance.v1.DeploymentState" json:"deployment_state,omitempty"` + // Output only. The time when the resource was created. + CreateTime *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` + // Output only. The time when the resource was last updated. + UpdateTime *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` + // Optional. To prevent concurrent updates from overwriting each other, + // provide the `etag` when you update a cloud control deployment. You can also + // provide the `etag` when you delete a cloud control deployment to help + // ensure that you're deleting the intended version of the + // deployment. + Etag string `protobuf:"bytes,9,opt,name=etag,proto3" json:"etag,omitempty"` + // Output only. The cloud control after the given parameters are substituted. + ParameterSubstitutedCloudControl *CloudControl `protobuf:"bytes,10,opt,name=parameter_substituted_cloud_control,json=parameterSubstitutedCloudControl,proto3" json:"parameter_substituted_cloud_control,omitempty"` + // Output only. The references to the framework deployments that this cloud + // control deployment is part of. A cloud control deployment can be part of + // multiple framework deployments. + FrameworkDeploymentReferences []*FrameworkDeploymentReference `protobuf:"bytes,11,rep,name=framework_deployment_references,json=frameworkDeploymentReferences,proto3" json:"framework_deployment_references,omitempty"` + // Output only. The display name of the target resource. + TargetResourceDisplayName string `protobuf:"bytes,12,opt,name=target_resource_display_name,json=targetResourceDisplayName,proto3" json:"target_resource_display_name,omitempty"` +} + +func (x *CloudControlDeployment) Reset() { + *x = CloudControlDeployment{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CloudControlDeployment) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CloudControlDeployment) ProtoMessage() {} + +func (x *CloudControlDeployment) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CloudControlDeployment.ProtoReflect.Descriptor instead. +func (*CloudControlDeployment) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_rawDescGZIP(), []int{1} +} + +func (x *CloudControlDeployment) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *CloudControlDeployment) GetTargetResourceConfig() *TargetResourceConfig { + if x != nil { + return x.TargetResourceConfig + } + return nil +} + +func (x *CloudControlDeployment) GetTargetResource() string { + if x != nil { + return x.TargetResource + } + return "" +} + +func (x *CloudControlDeployment) GetCloudControlMetadata() *CloudControlMetadata { + if x != nil { + return x.CloudControlMetadata + } + return nil +} + +func (x *CloudControlDeployment) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *CloudControlDeployment) GetDeploymentState() DeploymentState { + if x != nil { + return x.DeploymentState + } + return DeploymentState_DEPLOYMENT_STATE_UNSPECIFIED +} + +func (x *CloudControlDeployment) GetCreateTime() *timestamppb.Timestamp { + if x != nil { + return x.CreateTime + } + return nil +} + +func (x *CloudControlDeployment) GetUpdateTime() *timestamppb.Timestamp { + if x != nil { + return x.UpdateTime + } + return nil +} + +func (x *CloudControlDeployment) GetEtag() string { + if x != nil { + return x.Etag + } + return "" +} + +func (x *CloudControlDeployment) GetParameterSubstitutedCloudControl() *CloudControl { + if x != nil { + return x.ParameterSubstitutedCloudControl + } + return nil +} + +func (x *CloudControlDeployment) GetFrameworkDeploymentReferences() []*FrameworkDeploymentReference { + if x != nil { + return x.FrameworkDeploymentReferences + } + return nil +} + +func (x *CloudControlDeployment) GetTargetResourceDisplayName() string { + if x != nil { + return x.TargetResourceDisplayName + } + return "" +} + +// The name of the target resource or the configuration that's required to +// create a new target resource. +type TargetResourceConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The resource configuration for the target resource. + // + // Types that are assignable to ResourceConfig: + // + // *TargetResourceConfig_ExistingTargetResource + // *TargetResourceConfig_TargetResourceCreationConfig + ResourceConfig isTargetResourceConfig_ResourceConfig `protobuf_oneof:"resource_config"` +} + +func (x *TargetResourceConfig) Reset() { + *x = TargetResourceConfig{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TargetResourceConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TargetResourceConfig) ProtoMessage() {} + +func (x *TargetResourceConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TargetResourceConfig.ProtoReflect.Descriptor instead. +func (*TargetResourceConfig) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_rawDescGZIP(), []int{2} +} + +func (m *TargetResourceConfig) GetResourceConfig() isTargetResourceConfig_ResourceConfig { + if m != nil { + return m.ResourceConfig + } + return nil +} + +func (x *TargetResourceConfig) GetExistingTargetResource() string { + if x, ok := x.GetResourceConfig().(*TargetResourceConfig_ExistingTargetResource); ok { + return x.ExistingTargetResource + } + return "" +} + +func (x *TargetResourceConfig) GetTargetResourceCreationConfig() *TargetResourceCreationConfig { + if x, ok := x.GetResourceConfig().(*TargetResourceConfig_TargetResourceCreationConfig); ok { + return x.TargetResourceCreationConfig + } + return nil +} + +type isTargetResourceConfig_ResourceConfig interface { + isTargetResourceConfig_ResourceConfig() +} + +type TargetResourceConfig_ExistingTargetResource struct { + // Optional. The resource hierarchy node, in one of the following formats: + // + // - `organizations/{organizationID}` + // - `folders/{folderID}` + // - `projects/{projectID}` + ExistingTargetResource string `protobuf:"bytes,1,opt,name=existing_target_resource,json=existingTargetResource,proto3,oneof"` +} + +type TargetResourceConfig_TargetResourceCreationConfig struct { + // Optional. The details that are required to create a resource and use + // that resource as the target resource for deployment. + TargetResourceCreationConfig *TargetResourceCreationConfig `protobuf:"bytes,2,opt,name=target_resource_creation_config,json=targetResourceCreationConfig,proto3,oneof"` +} + +func (*TargetResourceConfig_ExistingTargetResource) isTargetResourceConfig_ResourceConfig() {} + +func (*TargetResourceConfig_TargetResourceCreationConfig) isTargetResourceConfig_ResourceConfig() {} + +// The configuration that's required to create a target resource. +type TargetResourceCreationConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The configuration that's required to create the target resource. + // + // Types that are assignable to ResourceCreationConfig: + // + // *TargetResourceCreationConfig_FolderCreationConfig + // *TargetResourceCreationConfig_ProjectCreationConfig + ResourceCreationConfig isTargetResourceCreationConfig_ResourceCreationConfig `protobuf_oneof:"resource_creation_config"` +} + +func (x *TargetResourceCreationConfig) Reset() { + *x = TargetResourceCreationConfig{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TargetResourceCreationConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TargetResourceCreationConfig) ProtoMessage() {} + +func (x *TargetResourceCreationConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TargetResourceCreationConfig.ProtoReflect.Descriptor instead. +func (*TargetResourceCreationConfig) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_rawDescGZIP(), []int{3} +} + +func (m *TargetResourceCreationConfig) GetResourceCreationConfig() isTargetResourceCreationConfig_ResourceCreationConfig { + if m != nil { + return m.ResourceCreationConfig + } + return nil +} + +func (x *TargetResourceCreationConfig) GetFolderCreationConfig() *FolderCreationConfig { + if x, ok := x.GetResourceCreationConfig().(*TargetResourceCreationConfig_FolderCreationConfig); ok { + return x.FolderCreationConfig + } + return nil +} + +func (x *TargetResourceCreationConfig) GetProjectCreationConfig() *ProjectCreationConfig { + if x, ok := x.GetResourceCreationConfig().(*TargetResourceCreationConfig_ProjectCreationConfig); ok { + return x.ProjectCreationConfig + } + return nil +} + +type isTargetResourceCreationConfig_ResourceCreationConfig interface { + isTargetResourceCreationConfig_ResourceCreationConfig() +} + +type TargetResourceCreationConfig_FolderCreationConfig struct { + // Optional. The configuration that's required to create a folder. + FolderCreationConfig *FolderCreationConfig `protobuf:"bytes,1,opt,name=folder_creation_config,json=folderCreationConfig,proto3,oneof"` +} + +type TargetResourceCreationConfig_ProjectCreationConfig struct { + // Optional. The configuration that's required to create a project. + ProjectCreationConfig *ProjectCreationConfig `protobuf:"bytes,2,opt,name=project_creation_config,json=projectCreationConfig,proto3,oneof"` +} + +func (*TargetResourceCreationConfig_FolderCreationConfig) isTargetResourceCreationConfig_ResourceCreationConfig() { +} + +func (*TargetResourceCreationConfig_ProjectCreationConfig) isTargetResourceCreationConfig_ResourceCreationConfig() { +} + +// The configuration that's required to create a folder to be used +// as the target resource for a deployment. +type FolderCreationConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The parent of the folder, in the format + // `organizations/{organizationID}` or `folders/{folderID}`. + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Required. The display name of the folder. + FolderDisplayName string `protobuf:"bytes,2,opt,name=folder_display_name,json=folderDisplayName,proto3" json:"folder_display_name,omitempty"` +} + +func (x *FolderCreationConfig) Reset() { + *x = FolderCreationConfig{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FolderCreationConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FolderCreationConfig) ProtoMessage() {} + +func (x *FolderCreationConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FolderCreationConfig.ProtoReflect.Descriptor instead. +func (*FolderCreationConfig) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_rawDescGZIP(), []int{4} +} + +func (x *FolderCreationConfig) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +func (x *FolderCreationConfig) GetFolderDisplayName() string { + if x != nil { + return x.FolderDisplayName + } + return "" +} + +// The configuration that's required to create a project to be used +// as the target resource of a deployment. +type ProjectCreationConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The parent of the project, in the format + // `organizations/{organizationID}` or `folders/{folderID}`. + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Required. The display name of the project. + ProjectDisplayName string `protobuf:"bytes,2,opt,name=project_display_name,json=projectDisplayName,proto3" json:"project_display_name,omitempty"` + // Required. The billing account ID for the project. + BillingAccountId string `protobuf:"bytes,3,opt,name=billing_account_id,json=billingAccountId,proto3" json:"billing_account_id,omitempty"` +} + +func (x *ProjectCreationConfig) Reset() { + *x = ProjectCreationConfig{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ProjectCreationConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProjectCreationConfig) ProtoMessage() {} + +func (x *ProjectCreationConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProjectCreationConfig.ProtoReflect.Descriptor instead. +func (*ProjectCreationConfig) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_rawDescGZIP(), []int{5} +} + +func (x *ProjectCreationConfig) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +func (x *ProjectCreationConfig) GetProjectDisplayName() string { + if x != nil { + return x.ProjectDisplayName + } + return "" +} + +func (x *ProjectCreationConfig) GetBillingAccountId() string { + if x != nil { + return x.BillingAccountId + } + return "" +} + +// The enforcement mode and parameters of a cloud +// control deployment. +type CloudControlMetadata struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The cloud control name and parameters. + CloudControlDetails *CloudControlDetails `protobuf:"bytes,1,opt,name=cloud_control_details,json=cloudControlDetails,proto3" json:"cloud_control_details,omitempty"` + // Required. The enforcement mode of the cloud control. + EnforcementMode EnforcementMode `protobuf:"varint,2,opt,name=enforcement_mode,json=enforcementMode,proto3,enum=google.cloud.cloudsecuritycompliance.v1.EnforcementMode" json:"enforcement_mode,omitempty"` +} + +func (x *CloudControlMetadata) Reset() { + *x = CloudControlMetadata{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CloudControlMetadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CloudControlMetadata) ProtoMessage() {} + +func (x *CloudControlMetadata) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CloudControlMetadata.ProtoReflect.Descriptor instead. +func (*CloudControlMetadata) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_rawDescGZIP(), []int{6} +} + +func (x *CloudControlMetadata) GetCloudControlDetails() *CloudControlDetails { + if x != nil { + return x.CloudControlDetails + } + return nil +} + +func (x *CloudControlMetadata) GetEnforcementMode() EnforcementMode { + if x != nil { + return x.EnforcementMode + } + return EnforcementMode_ENFORCEMENT_MODE_UNSPECIFIED +} + +// The request message for [CreateFrameworkDeployment][]. +type CreateFrameworkDeploymentRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The parent resource of the framework deployment in the format + // `organizations/{organization}/locations/{location}`. + // Only the global location is supported. + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Optional. An identifier for the framework deployment that's unique in scope + // of the parent. If you don't specify a value, then a random UUID is + // generated. + FrameworkDeploymentId string `protobuf:"bytes,2,opt,name=framework_deployment_id,json=frameworkDeploymentId,proto3" json:"framework_deployment_id,omitempty"` + // Required. The framework deployment that you're creating. + FrameworkDeployment *FrameworkDeployment `protobuf:"bytes,3,opt,name=framework_deployment,json=frameworkDeployment,proto3" json:"framework_deployment,omitempty"` +} + +func (x *CreateFrameworkDeploymentRequest) Reset() { + *x = CreateFrameworkDeploymentRequest{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateFrameworkDeploymentRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateFrameworkDeploymentRequest) ProtoMessage() {} + +func (x *CreateFrameworkDeploymentRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateFrameworkDeploymentRequest.ProtoReflect.Descriptor instead. +func (*CreateFrameworkDeploymentRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_rawDescGZIP(), []int{7} +} + +func (x *CreateFrameworkDeploymentRequest) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +func (x *CreateFrameworkDeploymentRequest) GetFrameworkDeploymentId() string { + if x != nil { + return x.FrameworkDeploymentId + } + return "" +} + +func (x *CreateFrameworkDeploymentRequest) GetFrameworkDeployment() *FrameworkDeployment { + if x != nil { + return x.FrameworkDeployment + } + return nil +} + +// The request message for [DeleteFrameworkDeployment][]. +type DeleteFrameworkDeploymentRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The name of the framework deployment that you want to delete, + // in the format + // `organizations/{organization}/locations/{location}/frameworkDeployments/{framework_deployment_id}`. + // The only supported location is `global`. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Optional. An opaque identifier for the current version of the resource. + // + // If you provide this value, then it must match the existing value. If the + // values don't match, then the request fails with an + // [`ABORTED`][google.rpc.Code.ABORTED] error. + // + // If you omit this value, then the resource is deleted regardless of its + // current `etag` value. + Etag string `protobuf:"bytes,2,opt,name=etag,proto3" json:"etag,omitempty"` +} + +func (x *DeleteFrameworkDeploymentRequest) Reset() { + *x = DeleteFrameworkDeploymentRequest{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeleteFrameworkDeploymentRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteFrameworkDeploymentRequest) ProtoMessage() {} + +func (x *DeleteFrameworkDeploymentRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteFrameworkDeploymentRequest.ProtoReflect.Descriptor instead. +func (*DeleteFrameworkDeploymentRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_rawDescGZIP(), []int{8} +} + +func (x *DeleteFrameworkDeploymentRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *DeleteFrameworkDeploymentRequest) GetEtag() string { + if x != nil { + return x.Etag + } + return "" +} + +// The request message for [GetFrameworkDeployment][]. +type GetFrameworkDeploymentRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The name of the framework deployment, in the format + // `organizations/{organization}/locations/{location}/frameworkDeployments/{framework_deployment_id}`. + // The only supported location is `global`. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *GetFrameworkDeploymentRequest) Reset() { + *x = GetFrameworkDeploymentRequest{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetFrameworkDeploymentRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetFrameworkDeploymentRequest) ProtoMessage() {} + +func (x *GetFrameworkDeploymentRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetFrameworkDeploymentRequest.ProtoReflect.Descriptor instead. +func (*GetFrameworkDeploymentRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_rawDescGZIP(), []int{9} +} + +func (x *GetFrameworkDeploymentRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// The request message for [ListFrameworkDeployments][]. +type ListFrameworkDeploymentsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The parent resource of the framework deployment, in the format + // `organizations/{organization}/locations/{location}`. + // The only supported location is `global`. + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Optional. The requested page size. The server might return fewer items than + // requested. + // If unspecified, the server picks an appropriate default. + PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + // Optional. A token that identifies a page of results the server should + // return. + PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` + // Optional. The filter to be applied on the resource, as defined by + // [AIP-160: Filtering](https://google.aip.dev/160). + Filter string `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"` + // Optional. The sort order for the results. The following values are + // supported: + // + // * `name` + // * `name desc` + // + // If you do not specify a value, then the results are not sorted. + OrderBy string `protobuf:"bytes,5,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` +} + +func (x *ListFrameworkDeploymentsRequest) Reset() { + *x = ListFrameworkDeploymentsRequest{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListFrameworkDeploymentsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListFrameworkDeploymentsRequest) ProtoMessage() {} + +func (x *ListFrameworkDeploymentsRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListFrameworkDeploymentsRequest.ProtoReflect.Descriptor instead. +func (*ListFrameworkDeploymentsRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_rawDescGZIP(), []int{10} +} + +func (x *ListFrameworkDeploymentsRequest) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +func (x *ListFrameworkDeploymentsRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *ListFrameworkDeploymentsRequest) GetPageToken() string { + if x != nil { + return x.PageToken + } + return "" +} + +func (x *ListFrameworkDeploymentsRequest) GetFilter() string { + if x != nil { + return x.Filter + } + return "" +} + +func (x *ListFrameworkDeploymentsRequest) GetOrderBy() string { + if x != nil { + return x.OrderBy + } + return "" +} + +// The response message for [ListFrameworkDeployments][]. +type ListFrameworkDeploymentsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The list of framework deployments. + FrameworkDeployments []*FrameworkDeployment `protobuf:"bytes,1,rep,name=framework_deployments,json=frameworkDeployments,proto3" json:"framework_deployments,omitempty"` + // A token that identifies the next page of results that the server + // should return. + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` +} + +func (x *ListFrameworkDeploymentsResponse) Reset() { + *x = ListFrameworkDeploymentsResponse{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListFrameworkDeploymentsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListFrameworkDeploymentsResponse) ProtoMessage() {} + +func (x *ListFrameworkDeploymentsResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListFrameworkDeploymentsResponse.ProtoReflect.Descriptor instead. +func (*ListFrameworkDeploymentsResponse) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_rawDescGZIP(), []int{11} +} + +func (x *ListFrameworkDeploymentsResponse) GetFrameworkDeployments() []*FrameworkDeployment { + if x != nil { + return x.FrameworkDeployments + } + return nil +} + +func (x *ListFrameworkDeploymentsResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken + } + return "" +} + +// The request message for [GetCloudControlDeployment][]. +type GetCloudControlDeploymentRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The name for the cloud control deployment, in the format + // `organizations/{organization}/locations/{location}/cloudControlDeployments/{cloud_control_deployment_id}`. + // The only supported location is `global`. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *GetCloudControlDeploymentRequest) Reset() { + *x = GetCloudControlDeploymentRequest{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetCloudControlDeploymentRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetCloudControlDeploymentRequest) ProtoMessage() {} + +func (x *GetCloudControlDeploymentRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_msgTypes[12] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetCloudControlDeploymentRequest.ProtoReflect.Descriptor instead. +func (*GetCloudControlDeploymentRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_rawDescGZIP(), []int{12} +} + +func (x *GetCloudControlDeploymentRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// The request message for [ListCloudControlDeployments][]. +type ListCloudControlDeploymentsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The parent resource for the cloud control deployment, in the + // format `organizations/{organization}/locations/{location}`. The only + // supported location is `global`. + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Optional. The requested page size. The server might return fewer items than + // you requested. + // If unspecified, the server picks an appropriate default. + PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + // Optional. A token that identifies the page of results that the server + // should return. + PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` + // Optional. The filter to apply on the resource, as defined by + // [AIP-160: Filtering](https://google.aip.dev/160). + Filter string `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"` + // Optional. The sort order for the results. The following values are + // supported: + // + // * `name` + // * `name desc` + // + // If you do not specify a value, then the results are not sorted. + OrderBy string `protobuf:"bytes,5,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` +} + +func (x *ListCloudControlDeploymentsRequest) Reset() { + *x = ListCloudControlDeploymentsRequest{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListCloudControlDeploymentsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListCloudControlDeploymentsRequest) ProtoMessage() {} + +func (x *ListCloudControlDeploymentsRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_msgTypes[13] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListCloudControlDeploymentsRequest.ProtoReflect.Descriptor instead. +func (*ListCloudControlDeploymentsRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_rawDescGZIP(), []int{13} +} + +func (x *ListCloudControlDeploymentsRequest) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +func (x *ListCloudControlDeploymentsRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *ListCloudControlDeploymentsRequest) GetPageToken() string { + if x != nil { + return x.PageToken + } + return "" +} + +func (x *ListCloudControlDeploymentsRequest) GetFilter() string { + if x != nil { + return x.Filter + } + return "" +} + +func (x *ListCloudControlDeploymentsRequest) GetOrderBy() string { + if x != nil { + return x.OrderBy + } + return "" +} + +// The response message for [ListCloudControlDeployments][]. +type ListCloudControlDeploymentsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The list of cloud control deployments. + CloudControlDeployments []*CloudControlDeployment `protobuf:"bytes,1,rep,name=cloud_control_deployments,json=cloudControlDeployments,proto3" json:"cloud_control_deployments,omitempty"` + // A token that identifies the next page of results that the server + // should return. + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` +} + +func (x *ListCloudControlDeploymentsResponse) Reset() { + *x = ListCloudControlDeploymentsResponse{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListCloudControlDeploymentsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListCloudControlDeploymentsResponse) ProtoMessage() {} + +func (x *ListCloudControlDeploymentsResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_msgTypes[14] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListCloudControlDeploymentsResponse.ProtoReflect.Descriptor instead. +func (*ListCloudControlDeploymentsResponse) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_rawDescGZIP(), []int{14} +} + +func (x *ListCloudControlDeploymentsResponse) GetCloudControlDeployments() []*CloudControlDeployment { + if x != nil { + return x.CloudControlDeployments + } + return nil +} + +func (x *ListCloudControlDeploymentsResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken + } + return "" +} + +// The reference to a cloud control deployment. +type CloudControlDeploymentReference struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. The name of the CloudControlDeployment. The format is + // `organizations/{org}/locations/{location}/cloudControlDeployments/{cloud_control_deployment_id}`. + // The only supported location is `global`. + CloudControlDeployment string `protobuf:"bytes,1,opt,name=cloud_control_deployment,json=cloudControlDeployment,proto3" json:"cloud_control_deployment,omitempty"` +} + +func (x *CloudControlDeploymentReference) Reset() { + *x = CloudControlDeploymentReference{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CloudControlDeploymentReference) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CloudControlDeploymentReference) ProtoMessage() {} + +func (x *CloudControlDeploymentReference) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_msgTypes[15] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CloudControlDeploymentReference.ProtoReflect.Descriptor instead. +func (*CloudControlDeploymentReference) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_rawDescGZIP(), []int{15} +} + +func (x *CloudControlDeploymentReference) GetCloudControlDeployment() string { + if x != nil { + return x.CloudControlDeployment + } + return "" +} + +// The reference to a framework deployment. +type FrameworkDeploymentReference struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. The name of the framework deployment, in the format + // `organizations/{org}/locations/{location}/frameworkDeployments/{framework_deployment_id}`. + // The only supported location is `global`. + FrameworkDeployment string `protobuf:"bytes,1,opt,name=framework_deployment,json=frameworkDeployment,proto3" json:"framework_deployment,omitempty"` + // Optional. The reference to the framework that this deployment is for. + // For example: + // + // ``` + // + // { + // framework: + // "organizations/{org}/locations/{location}/frameworks/{framework}", + // major_revision_id: 1 + // } + // + // ``` + // + // The only supported location is `global`. + FrameworkReference *FrameworkReference `protobuf:"bytes,2,opt,name=framework_reference,json=frameworkReference,proto3" json:"framework_reference,omitempty"` + // Optional. The display name of the framework that this framework deployment + // is for. + FrameworkDisplayName string `protobuf:"bytes,3,opt,name=framework_display_name,json=frameworkDisplayName,proto3" json:"framework_display_name,omitempty"` +} + +func (x *FrameworkDeploymentReference) Reset() { + *x = FrameworkDeploymentReference{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FrameworkDeploymentReference) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FrameworkDeploymentReference) ProtoMessage() {} + +func (x *FrameworkDeploymentReference) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_msgTypes[16] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FrameworkDeploymentReference.ProtoReflect.Descriptor instead. +func (*FrameworkDeploymentReference) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_rawDescGZIP(), []int{16} +} + +func (x *FrameworkDeploymentReference) GetFrameworkDeployment() string { + if x != nil { + return x.FrameworkDeployment + } + return "" +} + +func (x *FrameworkDeploymentReference) GetFrameworkReference() *FrameworkReference { + if x != nil { + return x.FrameworkReference + } + return nil +} + +func (x *FrameworkDeploymentReference) GetFrameworkDisplayName() string { + if x != nil { + return x.FrameworkDisplayName + } + return "" +} + +var File_google_cloud_cloudsecuritycompliance_v1_deployment_proto protoreflect.FileDescriptor + +var file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_rawDesc = []byte{ + 0x0a, 0x38, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, + 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, + 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x27, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, + 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, + 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x34, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, + 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2f, 0x76, 0x31, 0x2f, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, + 0x2f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, + 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, + 0xa1, 0x09, 0x0a, 0x13, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, + 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x08, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x78, 0x0a, 0x16, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, + 0x03, 0xe0, 0x41, 0x02, 0x52, 0x14, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3d, 0x0a, 0x18, 0x63, 0x6f, + 0x6d, 0x70, 0x75, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x03, 0x52, 0x16, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x5e, 0x0a, 0x09, 0x66, 0x72, 0x61, + 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, + 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, + 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, + 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x78, 0x0a, 0x16, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, + 0x03, 0xe0, 0x41, 0x02, 0x52, 0x14, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x68, 0x0a, 0x10, 0x64, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, + 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, + 0xe0, 0x41, 0x03, 0x52, 0x0f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x04, 0x65, 0x74, 0x61, + 0x67, 0x12, 0x44, 0x0a, 0x1c, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x19, 0x74, 0x61, + 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x69, 0x73, 0x70, + 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x9c, 0x01, 0x0a, 0x23, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, + 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, + 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, + 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x44, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, + 0x03, 0xe0, 0x41, 0x03, 0x52, 0x20, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x3a, 0xca, 0x01, 0xea, 0x41, 0xc6, 0x01, 0x0a, 0x3a, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, + 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, + 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x44, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x5d, 0x6f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x66, 0x72, 0x61, + 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, + 0x73, 0x2f, 0x7b, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x64, 0x65, 0x70, + 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x7d, 0x2a, 0x14, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, + 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x32, 0x13, + 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, + 0x65, 0x6e, 0x74, 0x22, 0xc5, 0x09, 0x0a, 0x16, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x17, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x08, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x78, 0x0a, 0x16, 0x74, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, + 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x14, 0x74, 0x61, 0x72, + 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x2c, 0x0a, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, + 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, + 0x78, 0x0a, 0x16, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, + 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x03, + 0xe0, 0x41, 0x02, 0x52, 0x14, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x68, 0x0a, 0x10, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, + 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0f, 0x64, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, + 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, + 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x17, + 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x12, 0x89, 0x01, 0x0a, 0x23, 0x70, 0x61, 0x72, 0x61, + 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x65, + 0x64, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, + 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x42, 0x03, 0xe0, 0x41, + 0x03, 0x52, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, + 0x74, 0x69, 0x74, 0x75, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x12, 0x92, 0x01, 0x0a, 0x1f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, + 0x6b, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, + 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, + 0x6b, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x1d, 0x66, 0x72, 0x61, 0x6d, 0x65, + 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x44, 0x0a, 0x1c, 0x74, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x70, + 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, + 0xe0, 0x41, 0x03, 0x52, 0x19, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x3a, 0xda, + 0x01, 0xea, 0x41, 0xd6, 0x01, 0x0a, 0x3d, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, + 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6c, + 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x64, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, + 0x7b, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x64, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x7d, 0x2a, 0x17, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x73, 0x32, 0x16, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x80, 0x02, 0x0a, 0x14, + 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3f, 0x0a, 0x18, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, + 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x00, 0x52, 0x16, 0x65, + 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x93, 0x01, 0x0a, 0x1f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, + 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, + 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, + 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x00, 0x52, 0x1c, 0x74, + 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x11, 0x0a, 0x0f, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0xb5, + 0x02, 0x0a, 0x1c, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x7a, 0x0a, 0x16, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, + 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x6c, 0x64, 0x65, 0x72, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x48, 0x00, 0x52, 0x14, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x7d, 0x0a, 0x17, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, + 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x48, 0x00, 0x52, 0x15, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x1a, 0x0a, 0x18, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x68, 0x0a, 0x14, 0x46, 0x6f, 0x6c, 0x64, 0x65, 0x72, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1b, + 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, + 0xe0, 0x41, 0x02, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x33, 0x0a, 0x13, 0x66, + 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x11, 0x66, + 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, + 0x22, 0x9e, 0x01, 0x0a, 0x15, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1b, 0x0a, 0x06, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, + 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x35, 0x0a, 0x14, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x12, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x31, + 0x0a, 0x12, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, + 0x10, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, + 0x64, 0x22, 0xf7, 0x01, 0x0a, 0x14, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x75, 0x0a, 0x15, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x64, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, + 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x13, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x12, 0x68, 0x0a, 0x10, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0f, 0x65, 0x6e, 0x66, 0x6f, + 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0xb1, 0x02, 0x0a, 0x20, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x44, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x5a, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x42, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x3c, 0x12, 0x3a, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, + 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, + 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, + 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x17, + 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, + 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x15, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, + 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x74, 0x0a, 0x14, 0x66, 0x72, 0x61, + 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, + 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x13, 0x66, 0x72, 0x61, 0x6d, + 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x22, + 0x93, 0x01, 0x0a, 0x20, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, + 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x56, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x42, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x3c, 0x0a, 0x3a, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, + 0x6e, 0x63, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x04, + 0x65, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, + 0x04, 0x65, 0x74, 0x61, 0x67, 0x22, 0x77, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x46, 0x72, 0x61, 0x6d, + 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x56, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x42, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x3c, 0x0a, 0x3a, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, + 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x80, + 0x02, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, + 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x5a, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x42, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x3c, 0x12, 0x3a, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, + 0x6e, 0x63, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x20, + 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, + 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x12, 0x1e, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, + 0x79, 0x22, 0xbd, 0x01, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, + 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x71, 0x0a, 0x15, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, + 0x6f, 0x72, 0x6b, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, + 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, + 0x65, 0x6e, 0x74, 0x52, 0x14, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, + 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x22, 0x7d, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x45, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x3f, 0x0a, 0x3d, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, + 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x22, 0x86, 0x02, 0x0a, 0x22, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5d, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x45, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x3f, 0x12, + 0x3d, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, + 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x06, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, + 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, + 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, + 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x06, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x08, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, + 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x22, 0xca, 0x01, 0x0a, 0x23, 0x4c, 0x69, + 0x73, 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x44, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x7b, 0x0a, 0x19, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, + 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x44, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x17, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x26, + 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, + 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xa2, 0x01, 0x0a, 0x1f, 0x43, 0x6c, 0x6f, 0x75, 0x64, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, + 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x7f, 0x0a, 0x18, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x64, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x45, 0xe0, 0x41, + 0x03, 0xfa, 0x41, 0x3f, 0x0a, 0x3d, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, + 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6c, 0x6f, + 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, + 0x65, 0x6e, 0x74, 0x52, 0x16, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0xc3, 0x02, 0x0a, 0x1c, + 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, + 0x65, 0x6e, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x75, 0x0a, 0x14, + 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, + 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x42, 0xe0, 0x41, 0x03, 0xfa, + 0x41, 0x3c, 0x0a, 0x3a, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, + 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x46, 0x72, 0x61, 0x6d, 0x65, + 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x13, + 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x71, 0x0a, 0x13, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, + 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, + 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x12, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x39, 0x0a, 0x16, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, + 0x6f, 0x72, 0x6b, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x14, 0x66, 0x72, 0x61, + 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, + 0x65, 0x2a, 0x9c, 0x02, 0x0a, 0x0f, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x1c, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x4d, + 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1f, 0x0a, 0x1b, 0x44, 0x45, 0x50, 0x4c, 0x4f, + 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x56, 0x41, 0x4c, 0x49, + 0x44, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x44, 0x45, 0x50, 0x4c, + 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x52, 0x45, + 0x41, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x19, 0x44, 0x45, 0x50, 0x4c, 0x4f, + 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x45, + 0x54, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x1b, 0x0a, 0x17, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, + 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, + 0x44, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, + 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x59, 0x10, 0x05, 0x12, + 0x27, 0x0a, 0x23, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x45, 0x5f, 0x50, 0x41, 0x52, 0x54, 0x49, 0x41, 0x4c, 0x4c, 0x59, 0x5f, 0x44, 0x45, + 0x50, 0x4c, 0x4f, 0x59, 0x45, 0x44, 0x10, 0x06, 0x12, 0x26, 0x0a, 0x22, 0x44, 0x45, 0x50, 0x4c, + 0x4f, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x50, 0x41, 0x52, + 0x54, 0x49, 0x41, 0x4c, 0x4c, 0x59, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x07, + 0x32, 0xfd, 0x0d, 0x0a, 0x0a, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, + 0xec, 0x02, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, + 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x49, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, + 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x72, + 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xe4, 0x01, 0xca, 0x41, 0x50, 0x0a, 0x13, 0x46, + 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x39, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x33, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, + 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x2c, 0x66, 0x72, 0x61, 0x6d, + 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, + 0x5f, 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x55, 0x3a, 0x14, 0x66, 0x72, 0x61, 0x6d, 0x65, + 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x22, + 0x3d, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x6f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, + 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0xa9, + 0x02, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, + 0x72, 0x6b, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x49, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, + 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x72, 0x61, + 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa1, 0x01, 0xca, 0x41, 0x52, 0x0a, 0x15, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x12, 0x39, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, + 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x2a, 0x3d, 0x2f, 0x76, 0x31, + 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x2a, 0x2f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xec, 0x01, 0x0a, 0x16, 0x47, + 0x65, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x46, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, + 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, + 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, + 0x6b, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x4c, 0xda, 0x41, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x12, 0x3d, 0x2f, 0x76, 0x31, 0x2f, + 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x2a, 0x2f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xff, 0x01, 0x0a, 0x18, 0x4c, 0x69, + 0x73, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x48, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, + 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x49, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, + 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e, 0xda, 0x41, 0x06, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x12, 0x3d, 0x2f, 0x76, + 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, + 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0xf8, 0x01, 0x0a, 0x19, + 0x47, 0x65, 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x44, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x49, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, + 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, + 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x44, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x4f, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x42, 0x12, 0x40, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x8b, 0x02, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x43, + 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x44, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x4b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, + 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x4c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, + 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x44, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x51, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x42, 0x12, 0x40, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, + 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x5a, 0xca, 0x41, 0x26, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, + 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, + 0x41, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, + 0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x42, 0xa8, 0x02, 0x0a, 0x2b, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, + 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x42, 0x0f, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x50, 0x01, 0x5a, 0x65, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, + 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, + 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, + 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x70, 0x62, + 0x3b, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x70, 0x62, 0xaa, 0x02, 0x27, 0x47, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x53, + 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, + 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x27, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, + 0x6f, 0x75, 0x64, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, + 0x79, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x5c, 0x56, 0x31, 0xea, 0x02, + 0x2a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, + 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6d, + 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, +} + +var ( + file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_rawDescOnce sync.Once + file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_rawDescData = file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_rawDesc +) + +func file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_rawDescGZIP() []byte { + file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_rawDescOnce.Do(func() { + file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_rawDescData) + }) + return file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_rawDescData +} + +var file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_msgTypes = make([]protoimpl.MessageInfo, 17) +var file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_goTypes = []any{ + (DeploymentState)(0), // 0: google.cloud.cloudsecuritycompliance.v1.DeploymentState + (*FrameworkDeployment)(nil), // 1: google.cloud.cloudsecuritycompliance.v1.FrameworkDeployment + (*CloudControlDeployment)(nil), // 2: google.cloud.cloudsecuritycompliance.v1.CloudControlDeployment + (*TargetResourceConfig)(nil), // 3: google.cloud.cloudsecuritycompliance.v1.TargetResourceConfig + (*TargetResourceCreationConfig)(nil), // 4: google.cloud.cloudsecuritycompliance.v1.TargetResourceCreationConfig + (*FolderCreationConfig)(nil), // 5: google.cloud.cloudsecuritycompliance.v1.FolderCreationConfig + (*ProjectCreationConfig)(nil), // 6: google.cloud.cloudsecuritycompliance.v1.ProjectCreationConfig + (*CloudControlMetadata)(nil), // 7: google.cloud.cloudsecuritycompliance.v1.CloudControlMetadata + (*CreateFrameworkDeploymentRequest)(nil), // 8: google.cloud.cloudsecuritycompliance.v1.CreateFrameworkDeploymentRequest + (*DeleteFrameworkDeploymentRequest)(nil), // 9: google.cloud.cloudsecuritycompliance.v1.DeleteFrameworkDeploymentRequest + (*GetFrameworkDeploymentRequest)(nil), // 10: google.cloud.cloudsecuritycompliance.v1.GetFrameworkDeploymentRequest + (*ListFrameworkDeploymentsRequest)(nil), // 11: google.cloud.cloudsecuritycompliance.v1.ListFrameworkDeploymentsRequest + (*ListFrameworkDeploymentsResponse)(nil), // 12: google.cloud.cloudsecuritycompliance.v1.ListFrameworkDeploymentsResponse + (*GetCloudControlDeploymentRequest)(nil), // 13: google.cloud.cloudsecuritycompliance.v1.GetCloudControlDeploymentRequest + (*ListCloudControlDeploymentsRequest)(nil), // 14: google.cloud.cloudsecuritycompliance.v1.ListCloudControlDeploymentsRequest + (*ListCloudControlDeploymentsResponse)(nil), // 15: google.cloud.cloudsecuritycompliance.v1.ListCloudControlDeploymentsResponse + (*CloudControlDeploymentReference)(nil), // 16: google.cloud.cloudsecuritycompliance.v1.CloudControlDeploymentReference + (*FrameworkDeploymentReference)(nil), // 17: google.cloud.cloudsecuritycompliance.v1.FrameworkDeploymentReference + (*FrameworkReference)(nil), // 18: google.cloud.cloudsecuritycompliance.v1.FrameworkReference + (*timestamppb.Timestamp)(nil), // 19: google.protobuf.Timestamp + (*CloudControl)(nil), // 20: google.cloud.cloudsecuritycompliance.v1.CloudControl + (*CloudControlDetails)(nil), // 21: google.cloud.cloudsecuritycompliance.v1.CloudControlDetails + (EnforcementMode)(0), // 22: google.cloud.cloudsecuritycompliance.v1.EnforcementMode + (*longrunningpb.Operation)(nil), // 23: google.longrunning.Operation +} +var file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_depIdxs = []int32{ + 3, // 0: google.cloud.cloudsecuritycompliance.v1.FrameworkDeployment.target_resource_config:type_name -> google.cloud.cloudsecuritycompliance.v1.TargetResourceConfig + 18, // 1: google.cloud.cloudsecuritycompliance.v1.FrameworkDeployment.framework:type_name -> google.cloud.cloudsecuritycompliance.v1.FrameworkReference + 7, // 2: google.cloud.cloudsecuritycompliance.v1.FrameworkDeployment.cloud_control_metadata:type_name -> google.cloud.cloudsecuritycompliance.v1.CloudControlMetadata + 0, // 3: google.cloud.cloudsecuritycompliance.v1.FrameworkDeployment.deployment_state:type_name -> google.cloud.cloudsecuritycompliance.v1.DeploymentState + 19, // 4: google.cloud.cloudsecuritycompliance.v1.FrameworkDeployment.create_time:type_name -> google.protobuf.Timestamp + 19, // 5: google.cloud.cloudsecuritycompliance.v1.FrameworkDeployment.update_time:type_name -> google.protobuf.Timestamp + 16, // 6: google.cloud.cloudsecuritycompliance.v1.FrameworkDeployment.cloud_control_deployment_references:type_name -> google.cloud.cloudsecuritycompliance.v1.CloudControlDeploymentReference + 3, // 7: google.cloud.cloudsecuritycompliance.v1.CloudControlDeployment.target_resource_config:type_name -> google.cloud.cloudsecuritycompliance.v1.TargetResourceConfig + 7, // 8: google.cloud.cloudsecuritycompliance.v1.CloudControlDeployment.cloud_control_metadata:type_name -> google.cloud.cloudsecuritycompliance.v1.CloudControlMetadata + 0, // 9: google.cloud.cloudsecuritycompliance.v1.CloudControlDeployment.deployment_state:type_name -> google.cloud.cloudsecuritycompliance.v1.DeploymentState + 19, // 10: google.cloud.cloudsecuritycompliance.v1.CloudControlDeployment.create_time:type_name -> google.protobuf.Timestamp + 19, // 11: google.cloud.cloudsecuritycompliance.v1.CloudControlDeployment.update_time:type_name -> google.protobuf.Timestamp + 20, // 12: google.cloud.cloudsecuritycompliance.v1.CloudControlDeployment.parameter_substituted_cloud_control:type_name -> google.cloud.cloudsecuritycompliance.v1.CloudControl + 17, // 13: google.cloud.cloudsecuritycompliance.v1.CloudControlDeployment.framework_deployment_references:type_name -> google.cloud.cloudsecuritycompliance.v1.FrameworkDeploymentReference + 4, // 14: google.cloud.cloudsecuritycompliance.v1.TargetResourceConfig.target_resource_creation_config:type_name -> google.cloud.cloudsecuritycompliance.v1.TargetResourceCreationConfig + 5, // 15: google.cloud.cloudsecuritycompliance.v1.TargetResourceCreationConfig.folder_creation_config:type_name -> google.cloud.cloudsecuritycompliance.v1.FolderCreationConfig + 6, // 16: google.cloud.cloudsecuritycompliance.v1.TargetResourceCreationConfig.project_creation_config:type_name -> google.cloud.cloudsecuritycompliance.v1.ProjectCreationConfig + 21, // 17: google.cloud.cloudsecuritycompliance.v1.CloudControlMetadata.cloud_control_details:type_name -> google.cloud.cloudsecuritycompliance.v1.CloudControlDetails + 22, // 18: google.cloud.cloudsecuritycompliance.v1.CloudControlMetadata.enforcement_mode:type_name -> google.cloud.cloudsecuritycompliance.v1.EnforcementMode + 1, // 19: google.cloud.cloudsecuritycompliance.v1.CreateFrameworkDeploymentRequest.framework_deployment:type_name -> google.cloud.cloudsecuritycompliance.v1.FrameworkDeployment + 1, // 20: google.cloud.cloudsecuritycompliance.v1.ListFrameworkDeploymentsResponse.framework_deployments:type_name -> google.cloud.cloudsecuritycompliance.v1.FrameworkDeployment + 2, // 21: google.cloud.cloudsecuritycompliance.v1.ListCloudControlDeploymentsResponse.cloud_control_deployments:type_name -> google.cloud.cloudsecuritycompliance.v1.CloudControlDeployment + 18, // 22: google.cloud.cloudsecuritycompliance.v1.FrameworkDeploymentReference.framework_reference:type_name -> google.cloud.cloudsecuritycompliance.v1.FrameworkReference + 8, // 23: google.cloud.cloudsecuritycompliance.v1.Deployment.CreateFrameworkDeployment:input_type -> google.cloud.cloudsecuritycompliance.v1.CreateFrameworkDeploymentRequest + 9, // 24: google.cloud.cloudsecuritycompliance.v1.Deployment.DeleteFrameworkDeployment:input_type -> google.cloud.cloudsecuritycompliance.v1.DeleteFrameworkDeploymentRequest + 10, // 25: google.cloud.cloudsecuritycompliance.v1.Deployment.GetFrameworkDeployment:input_type -> google.cloud.cloudsecuritycompliance.v1.GetFrameworkDeploymentRequest + 11, // 26: google.cloud.cloudsecuritycompliance.v1.Deployment.ListFrameworkDeployments:input_type -> google.cloud.cloudsecuritycompliance.v1.ListFrameworkDeploymentsRequest + 13, // 27: google.cloud.cloudsecuritycompliance.v1.Deployment.GetCloudControlDeployment:input_type -> google.cloud.cloudsecuritycompliance.v1.GetCloudControlDeploymentRequest + 14, // 28: google.cloud.cloudsecuritycompliance.v1.Deployment.ListCloudControlDeployments:input_type -> google.cloud.cloudsecuritycompliance.v1.ListCloudControlDeploymentsRequest + 23, // 29: google.cloud.cloudsecuritycompliance.v1.Deployment.CreateFrameworkDeployment:output_type -> google.longrunning.Operation + 23, // 30: google.cloud.cloudsecuritycompliance.v1.Deployment.DeleteFrameworkDeployment:output_type -> google.longrunning.Operation + 1, // 31: google.cloud.cloudsecuritycompliance.v1.Deployment.GetFrameworkDeployment:output_type -> google.cloud.cloudsecuritycompliance.v1.FrameworkDeployment + 12, // 32: google.cloud.cloudsecuritycompliance.v1.Deployment.ListFrameworkDeployments:output_type -> google.cloud.cloudsecuritycompliance.v1.ListFrameworkDeploymentsResponse + 2, // 33: google.cloud.cloudsecuritycompliance.v1.Deployment.GetCloudControlDeployment:output_type -> google.cloud.cloudsecuritycompliance.v1.CloudControlDeployment + 15, // 34: google.cloud.cloudsecuritycompliance.v1.Deployment.ListCloudControlDeployments:output_type -> google.cloud.cloudsecuritycompliance.v1.ListCloudControlDeploymentsResponse + 29, // [29:35] is the sub-list for method output_type + 23, // [23:29] is the sub-list for method input_type + 23, // [23:23] is the sub-list for extension type_name + 23, // [23:23] is the sub-list for extension extendee + 0, // [0:23] is the sub-list for field type_name +} + +func init() { file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_init() } +func file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_init() { + if File_google_cloud_cloudsecuritycompliance_v1_deployment_proto != nil { + return + } + file_google_cloud_cloudsecuritycompliance_v1_common_proto_init() + file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_msgTypes[2].OneofWrappers = []any{ + (*TargetResourceConfig_ExistingTargetResource)(nil), + (*TargetResourceConfig_TargetResourceCreationConfig)(nil), + } + file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_msgTypes[3].OneofWrappers = []any{ + (*TargetResourceCreationConfig_FolderCreationConfig)(nil), + (*TargetResourceCreationConfig_ProjectCreationConfig)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_rawDesc, + NumEnums: 1, + NumMessages: 17, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_goTypes, + DependencyIndexes: file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_depIdxs, + EnumInfos: file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_enumTypes, + MessageInfos: file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_msgTypes, + }.Build() + File_google_cloud_cloudsecuritycompliance_v1_deployment_proto = out.File + file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_rawDesc = nil + file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_goTypes = nil + file_google_cloud_cloudsecuritycompliance_v1_deployment_proto_depIdxs = nil +} diff --git a/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb/deployment_grpc.pb.go b/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb/deployment_grpc.pb.go new file mode 100644 index 000000000000..a7a2b26818f9 --- /dev/null +++ b/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb/deployment_grpc.pb.go @@ -0,0 +1,326 @@ +// Copyright 2025 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 +// +// http://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. + +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc v4.25.7 +// source: google/cloud/cloudsecuritycompliance/v1/deployment.proto + +package cloudsecuritycompliancepb + +import ( + context "context" + + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +const ( + Deployment_CreateFrameworkDeployment_FullMethodName = "/google.cloud.cloudsecuritycompliance.v1.Deployment/CreateFrameworkDeployment" + Deployment_DeleteFrameworkDeployment_FullMethodName = "/google.cloud.cloudsecuritycompliance.v1.Deployment/DeleteFrameworkDeployment" + Deployment_GetFrameworkDeployment_FullMethodName = "/google.cloud.cloudsecuritycompliance.v1.Deployment/GetFrameworkDeployment" + Deployment_ListFrameworkDeployments_FullMethodName = "/google.cloud.cloudsecuritycompliance.v1.Deployment/ListFrameworkDeployments" + Deployment_GetCloudControlDeployment_FullMethodName = "/google.cloud.cloudsecuritycompliance.v1.Deployment/GetCloudControlDeployment" + Deployment_ListCloudControlDeployments_FullMethodName = "/google.cloud.cloudsecuritycompliance.v1.Deployment/ListCloudControlDeployments" +) + +// DeploymentClient is the client API for Deployment service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type DeploymentClient interface { + // Creates a framework deployment in a given parent resource. A + // framework deployment lets you assign a particular framework version to an + // organization, folder, or project so that you can control and monitor + // those resources using the framework's cloud controls. + CreateFrameworkDeployment(ctx context.Context, in *CreateFrameworkDeploymentRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) + // Deletes a framework deployment. + DeleteFrameworkDeployment(ctx context.Context, in *DeleteFrameworkDeploymentRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) + // Gets details about a framework deployment. + GetFrameworkDeployment(ctx context.Context, in *GetFrameworkDeploymentRequest, opts ...grpc.CallOption) (*FrameworkDeployment, error) + // Lists the framework deployments in a given parent resource. + ListFrameworkDeployments(ctx context.Context, in *ListFrameworkDeploymentsRequest, opts ...grpc.CallOption) (*ListFrameworkDeploymentsResponse, error) + // Gets details about a cloud control deployment. + GetCloudControlDeployment(ctx context.Context, in *GetCloudControlDeploymentRequest, opts ...grpc.CallOption) (*CloudControlDeployment, error) + // Lists the cloud conrol deployments in a given parent resource. + ListCloudControlDeployments(ctx context.Context, in *ListCloudControlDeploymentsRequest, opts ...grpc.CallOption) (*ListCloudControlDeploymentsResponse, error) +} + +type deploymentClient struct { + cc grpc.ClientConnInterface +} + +func NewDeploymentClient(cc grpc.ClientConnInterface) DeploymentClient { + return &deploymentClient{cc} +} + +func (c *deploymentClient) CreateFrameworkDeployment(ctx context.Context, in *CreateFrameworkDeploymentRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) { + out := new(longrunningpb.Operation) + err := c.cc.Invoke(ctx, Deployment_CreateFrameworkDeployment_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *deploymentClient) DeleteFrameworkDeployment(ctx context.Context, in *DeleteFrameworkDeploymentRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) { + out := new(longrunningpb.Operation) + err := c.cc.Invoke(ctx, Deployment_DeleteFrameworkDeployment_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *deploymentClient) GetFrameworkDeployment(ctx context.Context, in *GetFrameworkDeploymentRequest, opts ...grpc.CallOption) (*FrameworkDeployment, error) { + out := new(FrameworkDeployment) + err := c.cc.Invoke(ctx, Deployment_GetFrameworkDeployment_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *deploymentClient) ListFrameworkDeployments(ctx context.Context, in *ListFrameworkDeploymentsRequest, opts ...grpc.CallOption) (*ListFrameworkDeploymentsResponse, error) { + out := new(ListFrameworkDeploymentsResponse) + err := c.cc.Invoke(ctx, Deployment_ListFrameworkDeployments_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *deploymentClient) GetCloudControlDeployment(ctx context.Context, in *GetCloudControlDeploymentRequest, opts ...grpc.CallOption) (*CloudControlDeployment, error) { + out := new(CloudControlDeployment) + err := c.cc.Invoke(ctx, Deployment_GetCloudControlDeployment_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *deploymentClient) ListCloudControlDeployments(ctx context.Context, in *ListCloudControlDeploymentsRequest, opts ...grpc.CallOption) (*ListCloudControlDeploymentsResponse, error) { + out := new(ListCloudControlDeploymentsResponse) + err := c.cc.Invoke(ctx, Deployment_ListCloudControlDeployments_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// DeploymentServer is the server API for Deployment service. +// All implementations should embed UnimplementedDeploymentServer +// for forward compatibility +type DeploymentServer interface { + // Creates a framework deployment in a given parent resource. A + // framework deployment lets you assign a particular framework version to an + // organization, folder, or project so that you can control and monitor + // those resources using the framework's cloud controls. + CreateFrameworkDeployment(context.Context, *CreateFrameworkDeploymentRequest) (*longrunningpb.Operation, error) + // Deletes a framework deployment. + DeleteFrameworkDeployment(context.Context, *DeleteFrameworkDeploymentRequest) (*longrunningpb.Operation, error) + // Gets details about a framework deployment. + GetFrameworkDeployment(context.Context, *GetFrameworkDeploymentRequest) (*FrameworkDeployment, error) + // Lists the framework deployments in a given parent resource. + ListFrameworkDeployments(context.Context, *ListFrameworkDeploymentsRequest) (*ListFrameworkDeploymentsResponse, error) + // Gets details about a cloud control deployment. + GetCloudControlDeployment(context.Context, *GetCloudControlDeploymentRequest) (*CloudControlDeployment, error) + // Lists the cloud conrol deployments in a given parent resource. + ListCloudControlDeployments(context.Context, *ListCloudControlDeploymentsRequest) (*ListCloudControlDeploymentsResponse, error) +} + +// UnimplementedDeploymentServer should be embedded to have forward compatible implementations. +type UnimplementedDeploymentServer struct { +} + +func (UnimplementedDeploymentServer) CreateFrameworkDeployment(context.Context, *CreateFrameworkDeploymentRequest) (*longrunningpb.Operation, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateFrameworkDeployment not implemented") +} +func (UnimplementedDeploymentServer) DeleteFrameworkDeployment(context.Context, *DeleteFrameworkDeploymentRequest) (*longrunningpb.Operation, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteFrameworkDeployment not implemented") +} +func (UnimplementedDeploymentServer) GetFrameworkDeployment(context.Context, *GetFrameworkDeploymentRequest) (*FrameworkDeployment, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetFrameworkDeployment not implemented") +} +func (UnimplementedDeploymentServer) ListFrameworkDeployments(context.Context, *ListFrameworkDeploymentsRequest) (*ListFrameworkDeploymentsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListFrameworkDeployments not implemented") +} +func (UnimplementedDeploymentServer) GetCloudControlDeployment(context.Context, *GetCloudControlDeploymentRequest) (*CloudControlDeployment, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetCloudControlDeployment not implemented") +} +func (UnimplementedDeploymentServer) ListCloudControlDeployments(context.Context, *ListCloudControlDeploymentsRequest) (*ListCloudControlDeploymentsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListCloudControlDeployments not implemented") +} + +// UnsafeDeploymentServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to DeploymentServer will +// result in compilation errors. +type UnsafeDeploymentServer interface { + mustEmbedUnimplementedDeploymentServer() +} + +func RegisterDeploymentServer(s grpc.ServiceRegistrar, srv DeploymentServer) { + s.RegisterService(&Deployment_ServiceDesc, srv) +} + +func _Deployment_CreateFrameworkDeployment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateFrameworkDeploymentRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DeploymentServer).CreateFrameworkDeployment(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Deployment_CreateFrameworkDeployment_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DeploymentServer).CreateFrameworkDeployment(ctx, req.(*CreateFrameworkDeploymentRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Deployment_DeleteFrameworkDeployment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteFrameworkDeploymentRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DeploymentServer).DeleteFrameworkDeployment(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Deployment_DeleteFrameworkDeployment_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DeploymentServer).DeleteFrameworkDeployment(ctx, req.(*DeleteFrameworkDeploymentRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Deployment_GetFrameworkDeployment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetFrameworkDeploymentRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DeploymentServer).GetFrameworkDeployment(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Deployment_GetFrameworkDeployment_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DeploymentServer).GetFrameworkDeployment(ctx, req.(*GetFrameworkDeploymentRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Deployment_ListFrameworkDeployments_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListFrameworkDeploymentsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DeploymentServer).ListFrameworkDeployments(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Deployment_ListFrameworkDeployments_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DeploymentServer).ListFrameworkDeployments(ctx, req.(*ListFrameworkDeploymentsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Deployment_GetCloudControlDeployment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetCloudControlDeploymentRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DeploymentServer).GetCloudControlDeployment(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Deployment_GetCloudControlDeployment_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DeploymentServer).GetCloudControlDeployment(ctx, req.(*GetCloudControlDeploymentRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Deployment_ListCloudControlDeployments_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListCloudControlDeploymentsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DeploymentServer).ListCloudControlDeployments(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Deployment_ListCloudControlDeployments_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DeploymentServer).ListCloudControlDeployments(ctx, req.(*ListCloudControlDeploymentsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// Deployment_ServiceDesc is the grpc.ServiceDesc for Deployment service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Deployment_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "google.cloud.cloudsecuritycompliance.v1.Deployment", + HandlerType: (*DeploymentServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "CreateFrameworkDeployment", + Handler: _Deployment_CreateFrameworkDeployment_Handler, + }, + { + MethodName: "DeleteFrameworkDeployment", + Handler: _Deployment_DeleteFrameworkDeployment_Handler, + }, + { + MethodName: "GetFrameworkDeployment", + Handler: _Deployment_GetFrameworkDeployment_Handler, + }, + { + MethodName: "ListFrameworkDeployments", + Handler: _Deployment_ListFrameworkDeployments_Handler, + }, + { + MethodName: "GetCloudControlDeployment", + Handler: _Deployment_GetCloudControlDeployment_Handler, + }, + { + MethodName: "ListCloudControlDeployments", + Handler: _Deployment_ListCloudControlDeployments_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "google/cloud/cloudsecuritycompliance/v1/deployment.proto", +} diff --git a/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb/monitoring.pb.go b/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb/monitoring.pb.go new file mode 100644 index 000000000000..02bf5acaa1ae --- /dev/null +++ b/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb/monitoring.pb.go @@ -0,0 +1,2827 @@ +// Copyright 2025 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 +// +// http://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. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.35.2 +// protoc v4.25.7 +// source: google/cloud/cloudsecuritycompliance/v1/monitoring.proto + +package cloudsecuritycompliancepb + +import ( + reflect "reflect" + sync "sync" + + _ "google.golang.org/genproto/googleapis/api/annotations" + interval "google.golang.org/genproto/googleapis/type/interval" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// The evaluation state of the control. +type EvaluationState int32 + +const ( + // Default value. This value is unused. + EvaluationState_EVALUATION_STATE_UNSPECIFIED EvaluationState = 0 + // The control is passing. + EvaluationState_EVALUATION_STATE_PASSED EvaluationState = 1 + // The control is failing. + EvaluationState_EVALUATION_STATE_FAILED EvaluationState = 2 + // The control is not assessed. + EvaluationState_EVALUATION_STATE_NOT_ASSESSED EvaluationState = 3 +) + +// Enum value maps for EvaluationState. +var ( + EvaluationState_name = map[int32]string{ + 0: "EVALUATION_STATE_UNSPECIFIED", + 1: "EVALUATION_STATE_PASSED", + 2: "EVALUATION_STATE_FAILED", + 3: "EVALUATION_STATE_NOT_ASSESSED", + } + EvaluationState_value = map[string]int32{ + "EVALUATION_STATE_UNSPECIFIED": 0, + "EVALUATION_STATE_PASSED": 1, + "EVALUATION_STATE_FAILED": 2, + "EVALUATION_STATE_NOT_ASSESSED": 3, + } +) + +func (x EvaluationState) Enum() *EvaluationState { + p := new(EvaluationState) + *p = x + return p +} + +func (x EvaluationState) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (EvaluationState) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_enumTypes[0].Descriptor() +} + +func (EvaluationState) Type() protoreflect.EnumType { + return &file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_enumTypes[0] +} + +func (x EvaluationState) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use EvaluationState.Descriptor instead. +func (EvaluationState) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_rawDescGZIP(), []int{0} +} + +// A finding is a record of assessment data like security, risk, health, or +// privacy. +type FindingClass int32 + +const ( + // Default value. This value is unused. + FindingClass_FINDING_CLASS_UNSPECIFIED FindingClass = 0 + // The activity is unwanted or malicious. + FindingClass_THREAT FindingClass = 1 + // A potential weakness in software that increases risk to + // confidentiality, integrity, and availability. + FindingClass_VULNERABILITY FindingClass = 2 + // A potential weakness in a cloud resource or asset configuration that + // increases risk. + FindingClass_MISCONFIGURATION FindingClass = 3 + // A security observation that is for informational purposes. + FindingClass_OBSERVATION FindingClass = 4 + // An error that prevents Security Command Center from functioning properly. + FindingClass_SCC_ERROR FindingClass = 5 + // A potential security risk that's due to a change in the security + // posture. + FindingClass_POSTURE_VIOLATION FindingClass = 6 + // A combination of security issues that represent a more severe + // security problem when taken together. + FindingClass_TOXIC_COMBINATION FindingClass = 7 + // A potential security risk to data assets that contain sensitive + // data. + FindingClass_SENSITIVE_DATA_RISK FindingClass = 8 + // A resource or resource group where high risk attack paths + // converge, based on attack path simulations (APS). + FindingClass_CHOKEPOINT FindingClass = 9 +) + +// Enum value maps for FindingClass. +var ( + FindingClass_name = map[int32]string{ + 0: "FINDING_CLASS_UNSPECIFIED", + 1: "THREAT", + 2: "VULNERABILITY", + 3: "MISCONFIGURATION", + 4: "OBSERVATION", + 5: "SCC_ERROR", + 6: "POSTURE_VIOLATION", + 7: "TOXIC_COMBINATION", + 8: "SENSITIVE_DATA_RISK", + 9: "CHOKEPOINT", + } + FindingClass_value = map[string]int32{ + "FINDING_CLASS_UNSPECIFIED": 0, + "THREAT": 1, + "VULNERABILITY": 2, + "MISCONFIGURATION": 3, + "OBSERVATION": 4, + "SCC_ERROR": 5, + "POSTURE_VIOLATION": 6, + "TOXIC_COMBINATION": 7, + "SENSITIVE_DATA_RISK": 8, + "CHOKEPOINT": 9, + } +) + +func (x FindingClass) Enum() *FindingClass { + p := new(FindingClass) + *p = x + return p +} + +func (x FindingClass) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (FindingClass) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_enumTypes[1].Descriptor() +} + +func (FindingClass) Type() protoreflect.EnumType { + return &file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_enumTypes[1] +} + +func (x FindingClass) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use FindingClass.Descriptor instead. +func (FindingClass) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_rawDescGZIP(), []int{1} +} + +// The request message for +// [ListFrameworkComplianceSummariesRequest][google.cloud.cloudsecuritycompliance.v1.ListFrameworkComplianceSummariesRequest]. +type ListFrameworkComplianceSummariesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The parent scope for the framework compliance summary. + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Optional. The requested page size. The server might return fewer items than + // requested. If unspecified, the server picks an appropriate default. + PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + // Optional. A token that identifies the page of results that the server + // should return. + PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` + // Optional. The filtering results. + Filter string `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"` +} + +func (x *ListFrameworkComplianceSummariesRequest) Reset() { + *x = ListFrameworkComplianceSummariesRequest{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListFrameworkComplianceSummariesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListFrameworkComplianceSummariesRequest) ProtoMessage() {} + +func (x *ListFrameworkComplianceSummariesRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListFrameworkComplianceSummariesRequest.ProtoReflect.Descriptor instead. +func (*ListFrameworkComplianceSummariesRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_rawDescGZIP(), []int{0} +} + +func (x *ListFrameworkComplianceSummariesRequest) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +func (x *ListFrameworkComplianceSummariesRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *ListFrameworkComplianceSummariesRequest) GetPageToken() string { + if x != nil { + return x.PageToken + } + return "" +} + +func (x *ListFrameworkComplianceSummariesRequest) GetFilter() string { + if x != nil { + return x.Filter + } + return "" +} + +// The response message for +// [ListFrameworkComplianceSummariesResponse][google.cloud.cloudsecuritycompliance.v1.ListFrameworkComplianceSummariesResponse]. +type ListFrameworkComplianceSummariesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The list of framework compliance summaries. + FrameworkComplianceSummaries []*FrameworkComplianceSummary `protobuf:"bytes,1,rep,name=framework_compliance_summaries,json=frameworkComplianceSummaries,proto3" json:"framework_compliance_summaries,omitempty"` + // Output only. The token to retrieve the next page of results. + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` +} + +func (x *ListFrameworkComplianceSummariesResponse) Reset() { + *x = ListFrameworkComplianceSummariesResponse{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListFrameworkComplianceSummariesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListFrameworkComplianceSummariesResponse) ProtoMessage() {} + +func (x *ListFrameworkComplianceSummariesResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListFrameworkComplianceSummariesResponse.ProtoReflect.Descriptor instead. +func (*ListFrameworkComplianceSummariesResponse) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_rawDescGZIP(), []int{1} +} + +func (x *ListFrameworkComplianceSummariesResponse) GetFrameworkComplianceSummaries() []*FrameworkComplianceSummary { + if x != nil { + return x.FrameworkComplianceSummaries + } + return nil +} + +func (x *ListFrameworkComplianceSummariesResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken + } + return "" +} + +// The response message for [GetFrameworkComplianceReport][]. +type FrameworkComplianceReport struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The name of the framework. + Framework string `protobuf:"bytes,1,opt,name=framework,proto3" json:"framework,omitempty"` + // The description of the framework. + FrameworkDescription string `protobuf:"bytes,2,opt,name=framework_description,json=frameworkDescription,proto3" json:"framework_description,omitempty"` + // Output only. The last updated time of the report. + UpdateTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` + // The control assessment details of the framework. + ControlAssessmentDetails *ControlAssessmentDetails `protobuf:"bytes,4,opt,name=control_assessment_details,json=controlAssessmentDetails,proto3" json:"control_assessment_details,omitempty"` + // The type of framework. + FrameworkType Framework_FrameworkType `protobuf:"varint,5,opt,name=framework_type,json=frameworkType,proto3,enum=google.cloud.cloudsecuritycompliance.v1.Framework_FrameworkType" json:"framework_type,omitempty"` + // The list of cloud providers supported by the framework. + SupportedCloudProviders []CloudProvider `protobuf:"varint,6,rep,packed,name=supported_cloud_providers,json=supportedCloudProviders,proto3,enum=google.cloud.cloudsecuritycompliance.v1.CloudProvider" json:"supported_cloud_providers,omitempty"` + // The list of framework categories supported. + FrameworkCategories []FrameworkCategory `protobuf:"varint,7,rep,packed,name=framework_categories,json=frameworkCategories,proto3,enum=google.cloud.cloudsecuritycompliance.v1.FrameworkCategory" json:"framework_categories,omitempty"` + // Optional. The display name for the framework. + FrameworkDisplayName string `protobuf:"bytes,8,opt,name=framework_display_name,json=frameworkDisplayName,proto3" json:"framework_display_name,omitempty"` + // Identifier. The name of the framework compliance report. + Name string `protobuf:"bytes,9,opt,name=name,proto3" json:"name,omitempty"` + // The latest major revision ID of the framework. + MajorRevisionId int64 `protobuf:"varint,10,opt,name=major_revision_id,json=majorRevisionId,proto3" json:"major_revision_id,omitempty"` + // The latest minor revision ID of the latest major revision of the framework. + MinorRevisionId int64 `protobuf:"varint,11,opt,name=minor_revision_id,json=minorRevisionId,proto3" json:"minor_revision_id,omitempty"` + // The target resource details of the framework. + TargetResourceDetails []*TargetResourceDetails `protobuf:"bytes,12,rep,name=target_resource_details,json=targetResourceDetails,proto3" json:"target_resource_details,omitempty"` +} + +func (x *FrameworkComplianceReport) Reset() { + *x = FrameworkComplianceReport{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FrameworkComplianceReport) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FrameworkComplianceReport) ProtoMessage() {} + +func (x *FrameworkComplianceReport) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FrameworkComplianceReport.ProtoReflect.Descriptor instead. +func (*FrameworkComplianceReport) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_rawDescGZIP(), []int{2} +} + +func (x *FrameworkComplianceReport) GetFramework() string { + if x != nil { + return x.Framework + } + return "" +} + +func (x *FrameworkComplianceReport) GetFrameworkDescription() string { + if x != nil { + return x.FrameworkDescription + } + return "" +} + +func (x *FrameworkComplianceReport) GetUpdateTime() *timestamppb.Timestamp { + if x != nil { + return x.UpdateTime + } + return nil +} + +func (x *FrameworkComplianceReport) GetControlAssessmentDetails() *ControlAssessmentDetails { + if x != nil { + return x.ControlAssessmentDetails + } + return nil +} + +func (x *FrameworkComplianceReport) GetFrameworkType() Framework_FrameworkType { + if x != nil { + return x.FrameworkType + } + return Framework_FRAMEWORK_TYPE_UNSPECIFIED +} + +func (x *FrameworkComplianceReport) GetSupportedCloudProviders() []CloudProvider { + if x != nil { + return x.SupportedCloudProviders + } + return nil +} + +func (x *FrameworkComplianceReport) GetFrameworkCategories() []FrameworkCategory { + if x != nil { + return x.FrameworkCategories + } + return nil +} + +func (x *FrameworkComplianceReport) GetFrameworkDisplayName() string { + if x != nil { + return x.FrameworkDisplayName + } + return "" +} + +func (x *FrameworkComplianceReport) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *FrameworkComplianceReport) GetMajorRevisionId() int64 { + if x != nil { + return x.MajorRevisionId + } + return 0 +} + +func (x *FrameworkComplianceReport) GetMinorRevisionId() int64 { + if x != nil { + return x.MinorRevisionId + } + return 0 +} + +func (x *FrameworkComplianceReport) GetTargetResourceDetails() []*TargetResourceDetails { + if x != nil { + return x.TargetResourceDetails + } + return nil +} + +// The request message for [FetchFrameworkComplianceReport][]. +type FetchFrameworkComplianceReportRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The name of the framework compliance report to retrieve. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Optional. The end time of the report. + EndTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` +} + +func (x *FetchFrameworkComplianceReportRequest) Reset() { + *x = FetchFrameworkComplianceReportRequest{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FetchFrameworkComplianceReportRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FetchFrameworkComplianceReportRequest) ProtoMessage() {} + +func (x *FetchFrameworkComplianceReportRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FetchFrameworkComplianceReportRequest.ProtoReflect.Descriptor instead. +func (*FetchFrameworkComplianceReportRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_rawDescGZIP(), []int{3} +} + +func (x *FetchFrameworkComplianceReportRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *FetchFrameworkComplianceReportRequest) GetEndTime() *timestamppb.Timestamp { + if x != nil { + return x.EndTime + } + return nil +} + +// The request message for [ListFindingSummaries][]. +type ListFindingSummariesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The parent scope for the framework overview page. + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Optional. The requested page size. The server might return fewer items than + // + // requested. If unspecified, the server picks an appropriate default. + PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + // Optional. A token that identifies the page of results that the server + // should return. + PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` + // Optional. The filtering results. + Filter string `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"` + // Optional. The end time of the finding summary. + // + // Deprecated: Marked as deprecated in google/cloud/cloudsecuritycompliance/v1/monitoring.proto. + EndTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` +} + +func (x *ListFindingSummariesRequest) Reset() { + *x = ListFindingSummariesRequest{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListFindingSummariesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListFindingSummariesRequest) ProtoMessage() {} + +func (x *ListFindingSummariesRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListFindingSummariesRequest.ProtoReflect.Descriptor instead. +func (*ListFindingSummariesRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_rawDescGZIP(), []int{4} +} + +func (x *ListFindingSummariesRequest) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +func (x *ListFindingSummariesRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *ListFindingSummariesRequest) GetPageToken() string { + if x != nil { + return x.PageToken + } + return "" +} + +func (x *ListFindingSummariesRequest) GetFilter() string { + if x != nil { + return x.Filter + } + return "" +} + +// Deprecated: Marked as deprecated in google/cloud/cloudsecuritycompliance/v1/monitoring.proto. +func (x *ListFindingSummariesRequest) GetEndTime() *timestamppb.Timestamp { + if x != nil { + return x.EndTime + } + return nil +} + +// The response message for [ListFindingSummaries][]. +type ListFindingSummariesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // List of finding summary by category. + FindingSummaries []*FindingSummary `protobuf:"bytes,1,rep,name=finding_summaries,json=findingSummaries,proto3" json:"finding_summaries,omitempty"` + // Output only. The token to retrieve the next page of results. + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` +} + +func (x *ListFindingSummariesResponse) Reset() { + *x = ListFindingSummariesResponse{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListFindingSummariesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListFindingSummariesResponse) ProtoMessage() {} + +func (x *ListFindingSummariesResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListFindingSummariesResponse.ProtoReflect.Descriptor instead. +func (*ListFindingSummariesResponse) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_rawDescGZIP(), []int{5} +} + +func (x *ListFindingSummariesResponse) GetFindingSummaries() []*FindingSummary { + if x != nil { + return x.FindingSummaries + } + return nil +} + +func (x *ListFindingSummariesResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken + } + return "" +} + +// The request message for [ListControlComplianceSummaries][]. +type ListControlComplianceSummariesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The parent scope for the framework overview page. + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Optional. The end time of the control compliance summary. + // + // Deprecated: Marked as deprecated in google/cloud/cloudsecuritycompliance/v1/monitoring.proto. + EndTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` + // Optional. The requested page size. The server might return fewer items than + // requested. If unspecified, the server picks an appropriate default. + PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + // Optional. A token that identifies the page of results that the server + // should return. + PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` + // Optional. The filtering results. + Filter string `protobuf:"bytes,5,opt,name=filter,proto3" json:"filter,omitempty"` +} + +func (x *ListControlComplianceSummariesRequest) Reset() { + *x = ListControlComplianceSummariesRequest{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListControlComplianceSummariesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListControlComplianceSummariesRequest) ProtoMessage() {} + +func (x *ListControlComplianceSummariesRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListControlComplianceSummariesRequest.ProtoReflect.Descriptor instead. +func (*ListControlComplianceSummariesRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_rawDescGZIP(), []int{6} +} + +func (x *ListControlComplianceSummariesRequest) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +// Deprecated: Marked as deprecated in google/cloud/cloudsecuritycompliance/v1/monitoring.proto. +func (x *ListControlComplianceSummariesRequest) GetEndTime() *timestamppb.Timestamp { + if x != nil { + return x.EndTime + } + return nil +} + +func (x *ListControlComplianceSummariesRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *ListControlComplianceSummariesRequest) GetPageToken() string { + if x != nil { + return x.PageToken + } + return "" +} + +func (x *ListControlComplianceSummariesRequest) GetFilter() string { + if x != nil { + return x.Filter + } + return "" +} + +// The response message for [ListControlComplianceSummaries][]. +type ListControlComplianceSummariesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The list of control compliance details. + ControlComplianceSummaries []*ControlComplianceSummary `protobuf:"bytes,1,rep,name=control_compliance_summaries,json=controlComplianceSummaries,proto3" json:"control_compliance_summaries,omitempty"` + // Output only. The token to retrieve the next page of results. + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` +} + +func (x *ListControlComplianceSummariesResponse) Reset() { + *x = ListControlComplianceSummariesResponse{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListControlComplianceSummariesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListControlComplianceSummariesResponse) ProtoMessage() {} + +func (x *ListControlComplianceSummariesResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListControlComplianceSummariesResponse.ProtoReflect.Descriptor instead. +func (*ListControlComplianceSummariesResponse) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_rawDescGZIP(), []int{7} +} + +func (x *ListControlComplianceSummariesResponse) GetControlComplianceSummaries() []*ControlComplianceSummary { + if x != nil { + return x.ControlComplianceSummaries + } + return nil +} + +func (x *ListControlComplianceSummariesResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken + } + return "" +} + +// The request message for [AggregateFrameworkComplianceReport][]. +type AggregateFrameworkComplianceReportRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The name of the aggregated compliance report over time to + // retrieve. + // + // The supported format is: + // `organizations/{organization_id}/locations/{location}/frameworkComplianceReports/{framework_compliance_report}` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Optional. The start and end time range for the aggregated compliance + // report. + Interval *interval.Interval `protobuf:"bytes,2,opt,name=interval,proto3" json:"interval,omitempty"` + // Optional. The filtering results. + Filter string `protobuf:"bytes,3,opt,name=filter,proto3" json:"filter,omitempty"` +} + +func (x *AggregateFrameworkComplianceReportRequest) Reset() { + *x = AggregateFrameworkComplianceReportRequest{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AggregateFrameworkComplianceReportRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AggregateFrameworkComplianceReportRequest) ProtoMessage() {} + +func (x *AggregateFrameworkComplianceReportRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AggregateFrameworkComplianceReportRequest.ProtoReflect.Descriptor instead. +func (*AggregateFrameworkComplianceReportRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_rawDescGZIP(), []int{8} +} + +func (x *AggregateFrameworkComplianceReportRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *AggregateFrameworkComplianceReportRequest) GetInterval() *interval.Interval { + if x != nil { + return x.Interval + } + return nil +} + +func (x *AggregateFrameworkComplianceReportRequest) GetFilter() string { + if x != nil { + return x.Filter + } + return "" +} + +// The response message for [AggregateFrameworkComplianceReport][]. +type AggregateFrameworkComplianceReportResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The list of aggregated compliance reports. + AggregatedComplianceReports []*AggregatedComplianceReport `protobuf:"bytes,1,rep,name=aggregated_compliance_reports,json=aggregatedComplianceReports,proto3" json:"aggregated_compliance_reports,omitempty"` +} + +func (x *AggregateFrameworkComplianceReportResponse) Reset() { + *x = AggregateFrameworkComplianceReportResponse{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AggregateFrameworkComplianceReportResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AggregateFrameworkComplianceReportResponse) ProtoMessage() {} + +func (x *AggregateFrameworkComplianceReportResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AggregateFrameworkComplianceReportResponse.ProtoReflect.Descriptor instead. +func (*AggregateFrameworkComplianceReportResponse) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_rawDescGZIP(), []int{9} +} + +func (x *AggregateFrameworkComplianceReportResponse) GetAggregatedComplianceReports() []*AggregatedComplianceReport { + if x != nil { + return x.AggregatedComplianceReports + } + return nil +} + +// The details for a control assessment. +type ControlAssessmentDetails struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The number of controls that are passing or not assessed. + PassingControls int32 `protobuf:"varint,1,opt,name=passing_controls,json=passingControls,proto3" json:"passing_controls,omitempty"` + // The number of controls that are failing. + FailingControls int32 `protobuf:"varint,2,opt,name=failing_controls,json=failingControls,proto3" json:"failing_controls,omitempty"` + // The number of controls that were assessed and are passing. + AssessedPassingControls int32 `protobuf:"varint,3,opt,name=assessed_passing_controls,json=assessedPassingControls,proto3" json:"assessed_passing_controls,omitempty"` + // The number of controls that aren't assessed because they require manual + // review. + NotAssessedControls int32 `protobuf:"varint,4,opt,name=not_assessed_controls,json=notAssessedControls,proto3" json:"not_assessed_controls,omitempty"` +} + +func (x *ControlAssessmentDetails) Reset() { + *x = ControlAssessmentDetails{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ControlAssessmentDetails) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ControlAssessmentDetails) ProtoMessage() {} + +func (x *ControlAssessmentDetails) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ControlAssessmentDetails.ProtoReflect.Descriptor instead. +func (*ControlAssessmentDetails) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_rawDescGZIP(), []int{10} +} + +func (x *ControlAssessmentDetails) GetPassingControls() int32 { + if x != nil { + return x.PassingControls + } + return 0 +} + +func (x *ControlAssessmentDetails) GetFailingControls() int32 { + if x != nil { + return x.FailingControls + } + return 0 +} + +func (x *ControlAssessmentDetails) GetAssessedPassingControls() int32 { + if x != nil { + return x.AssessedPassingControls + } + return 0 +} + +func (x *ControlAssessmentDetails) GetNotAssessedControls() int32 { + if x != nil { + return x.NotAssessedControls + } + return 0 +} + +// The details for a framework compliance summary. +type FrameworkComplianceSummary struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The name of the framework. + Framework string `protobuf:"bytes,1,opt,name=framework,proto3" json:"framework,omitempty"` + // The control assessment details of the framework. + ControlAssessmentDetails *ControlAssessmentDetails `protobuf:"bytes,2,opt,name=control_assessment_details,json=controlAssessmentDetails,proto3" json:"control_assessment_details,omitempty"` + // The type of framework. + FrameworkType Framework_FrameworkType `protobuf:"varint,3,opt,name=framework_type,json=frameworkType,proto3,enum=google.cloud.cloudsecuritycompliance.v1.Framework_FrameworkType" json:"framework_type,omitempty"` + // The list of cloud providers supported by the framework. + SupportedCloudProviders []CloudProvider `protobuf:"varint,4,rep,packed,name=supported_cloud_providers,json=supportedCloudProviders,proto3,enum=google.cloud.cloudsecuritycompliance.v1.CloudProvider" json:"supported_cloud_providers,omitempty"` + // The list of framework categories supported by the framework. + FrameworkCategories []FrameworkCategory `protobuf:"varint,5,rep,packed,name=framework_categories,json=frameworkCategories,proto3,enum=google.cloud.cloudsecuritycompliance.v1.FrameworkCategory" json:"framework_categories,omitempty"` + // Optional. The display name for the framework. + FrameworkDisplayName string `protobuf:"bytes,6,opt,name=framework_display_name,json=frameworkDisplayName,proto3" json:"framework_display_name,omitempty"` + // Identifier. The name of the framework compliance summary. + Name string `protobuf:"bytes,7,opt,name=name,proto3" json:"name,omitempty"` + // The major revision ID of the framework. + MajorRevisionId int64 `protobuf:"varint,8,opt,name=major_revision_id,json=majorRevisionId,proto3" json:"major_revision_id,omitempty"` + // The minor revision ID of the framework. + MinorRevisionId int64 `protobuf:"varint,9,opt,name=minor_revision_id,json=minorRevisionId,proto3" json:"minor_revision_id,omitempty"` + // The target resource details for the framework. + TargetResourceDetails []*TargetResourceDetails `protobuf:"bytes,10,rep,name=target_resource_details,json=targetResourceDetails,proto3" json:"target_resource_details,omitempty"` +} + +func (x *FrameworkComplianceSummary) Reset() { + *x = FrameworkComplianceSummary{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FrameworkComplianceSummary) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FrameworkComplianceSummary) ProtoMessage() {} + +func (x *FrameworkComplianceSummary) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FrameworkComplianceSummary.ProtoReflect.Descriptor instead. +func (*FrameworkComplianceSummary) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_rawDescGZIP(), []int{11} +} + +func (x *FrameworkComplianceSummary) GetFramework() string { + if x != nil { + return x.Framework + } + return "" +} + +func (x *FrameworkComplianceSummary) GetControlAssessmentDetails() *ControlAssessmentDetails { + if x != nil { + return x.ControlAssessmentDetails + } + return nil +} + +func (x *FrameworkComplianceSummary) GetFrameworkType() Framework_FrameworkType { + if x != nil { + return x.FrameworkType + } + return Framework_FRAMEWORK_TYPE_UNSPECIFIED +} + +func (x *FrameworkComplianceSummary) GetSupportedCloudProviders() []CloudProvider { + if x != nil { + return x.SupportedCloudProviders + } + return nil +} + +func (x *FrameworkComplianceSummary) GetFrameworkCategories() []FrameworkCategory { + if x != nil { + return x.FrameworkCategories + } + return nil +} + +func (x *FrameworkComplianceSummary) GetFrameworkDisplayName() string { + if x != nil { + return x.FrameworkDisplayName + } + return "" +} + +func (x *FrameworkComplianceSummary) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *FrameworkComplianceSummary) GetMajorRevisionId() int64 { + if x != nil { + return x.MajorRevisionId + } + return 0 +} + +func (x *FrameworkComplianceSummary) GetMinorRevisionId() int64 { + if x != nil { + return x.MinorRevisionId + } + return 0 +} + +func (x *FrameworkComplianceSummary) GetTargetResourceDetails() []*TargetResourceDetails { + if x != nil { + return x.TargetResourceDetails + } + return nil +} + +// The details for a finding. +type FindingSummary struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The category of the finding. + FindingCategory string `protobuf:"bytes,1,opt,name=finding_category,json=findingCategory,proto3" json:"finding_category,omitempty"` + // The class of the finding. + FindingClass FindingClass `protobuf:"varint,2,opt,name=finding_class,json=findingClass,proto3,enum=google.cloud.cloudsecuritycompliance.v1.FindingClass" json:"finding_class,omitempty"` + // The severity of the finding. + Severity Severity `protobuf:"varint,3,opt,name=severity,proto3,enum=google.cloud.cloudsecuritycompliance.v1.Severity" json:"severity,omitempty"` + // The count of the finding. + FindingCount int64 `protobuf:"varint,4,opt,name=finding_count,json=findingCount,proto3" json:"finding_count,omitempty"` + // Output only. The last updated time of the finding. + UpdateTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` + // Optional. The list of compliance frameworks that the finding belongs to. + RelatedFrameworks []string `protobuf:"bytes,6,rep,name=related_frameworks,json=relatedFrameworks,proto3" json:"related_frameworks,omitempty"` + // Identifier. The name of the finding summary. + Name string `protobuf:"bytes,7,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *FindingSummary) Reset() { + *x = FindingSummary{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FindingSummary) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FindingSummary) ProtoMessage() {} + +func (x *FindingSummary) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_msgTypes[12] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FindingSummary.ProtoReflect.Descriptor instead. +func (*FindingSummary) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_rawDescGZIP(), []int{12} +} + +func (x *FindingSummary) GetFindingCategory() string { + if x != nil { + return x.FindingCategory + } + return "" +} + +func (x *FindingSummary) GetFindingClass() FindingClass { + if x != nil { + return x.FindingClass + } + return FindingClass_FINDING_CLASS_UNSPECIFIED +} + +func (x *FindingSummary) GetSeverity() Severity { + if x != nil { + return x.Severity + } + return Severity_SEVERITY_UNSPECIFIED +} + +func (x *FindingSummary) GetFindingCount() int64 { + if x != nil { + return x.FindingCount + } + return 0 +} + +func (x *FindingSummary) GetUpdateTime() *timestamppb.Timestamp { + if x != nil { + return x.UpdateTime + } + return nil +} + +func (x *FindingSummary) GetRelatedFrameworks() []string { + if x != nil { + return x.RelatedFrameworks + } + return nil +} + +func (x *FindingSummary) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// The details for control compliance. +type ControlComplianceSummary struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The name of the control. + Control string `protobuf:"bytes,1,opt,name=control,proto3" json:"control,omitempty"` + // The display name of the control. + DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + // The description of the control. + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + // Output only. The overall evaluation status of the control. + OverallEvaluationState EvaluationState `protobuf:"varint,4,opt,name=overall_evaluation_state,json=overallEvaluationState,proto3,enum=google.cloud.cloudsecuritycompliance.v1.EvaluationState" json:"overall_evaluation_state,omitempty"` + // The total number of findings for the control. + TotalFindingsCount int32 `protobuf:"varint,5,opt,name=total_findings_count,json=totalFindingsCount,proto3" json:"total_findings_count,omitempty"` + // The list of compliance frameworks that the control belongs to. + ComplianceFrameworks []string `protobuf:"bytes,6,rep,name=compliance_frameworks,json=complianceFrameworks,proto3" json:"compliance_frameworks,omitempty"` + // The list of similar controls. + SimilarControls []*SimilarControls `protobuf:"bytes,7,rep,name=similar_controls,json=similarControls,proto3" json:"similar_controls,omitempty"` + // The list of cloud control reports. + CloudControlReports []*CloudControlReport `protobuf:"bytes,8,rep,name=cloud_control_reports,json=cloudControlReports,proto3" json:"cloud_control_reports,omitempty"` + // The responsibility type for the control. + ControlResponsibilityType RegulatoryControlResponsibilityType `protobuf:"varint,9,opt,name=control_responsibility_type,json=controlResponsibilityType,proto3,enum=google.cloud.cloudsecuritycompliance.v1.RegulatoryControlResponsibilityType" json:"control_responsibility_type,omitempty"` + // Whether the control is a fake control. Fake controls are created + // and mapped to cloud controls that don't belong to a control group. + IsFakeControl bool `protobuf:"varint,10,opt,name=is_fake_control,json=isFakeControl,proto3" json:"is_fake_control,omitempty"` + // Identifier. The name of the control compliance summary. + Name string `protobuf:"bytes,11,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *ControlComplianceSummary) Reset() { + *x = ControlComplianceSummary{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ControlComplianceSummary) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ControlComplianceSummary) ProtoMessage() {} + +func (x *ControlComplianceSummary) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_msgTypes[13] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ControlComplianceSummary.ProtoReflect.Descriptor instead. +func (*ControlComplianceSummary) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_rawDescGZIP(), []int{13} +} + +func (x *ControlComplianceSummary) GetControl() string { + if x != nil { + return x.Control + } + return "" +} + +func (x *ControlComplianceSummary) GetDisplayName() string { + if x != nil { + return x.DisplayName + } + return "" +} + +func (x *ControlComplianceSummary) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *ControlComplianceSummary) GetOverallEvaluationState() EvaluationState { + if x != nil { + return x.OverallEvaluationState + } + return EvaluationState_EVALUATION_STATE_UNSPECIFIED +} + +func (x *ControlComplianceSummary) GetTotalFindingsCount() int32 { + if x != nil { + return x.TotalFindingsCount + } + return 0 +} + +func (x *ControlComplianceSummary) GetComplianceFrameworks() []string { + if x != nil { + return x.ComplianceFrameworks + } + return nil +} + +func (x *ControlComplianceSummary) GetSimilarControls() []*SimilarControls { + if x != nil { + return x.SimilarControls + } + return nil +} + +func (x *ControlComplianceSummary) GetCloudControlReports() []*CloudControlReport { + if x != nil { + return x.CloudControlReports + } + return nil +} + +func (x *ControlComplianceSummary) GetControlResponsibilityType() RegulatoryControlResponsibilityType { + if x != nil { + return x.ControlResponsibilityType + } + return RegulatoryControlResponsibilityType_REGULATORY_CONTROL_RESPONSIBILITY_TYPE_UNSPECIFIED +} + +func (x *ControlComplianceSummary) GetIsFakeControl() bool { + if x != nil { + return x.IsFakeControl + } + return false +} + +func (x *ControlComplianceSummary) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// The cloud control report. +type CloudControlReport struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The assessment details of the cloud control. + // + // Types that are assignable to AssessmentDetails: + // + // *CloudControlReport_ManualCloudControlAssessmentDetails + // *CloudControlReport_CloudControlAssessmentDetails + AssessmentDetails isCloudControlReport_AssessmentDetails `protobuf_oneof:"assessment_details"` + // The name of the cloud control. + CloudControl string `protobuf:"bytes,1,opt,name=cloud_control,json=cloudControl,proto3" json:"cloud_control,omitempty"` + // The display name of the cloud control. + DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + // The description of the cloud control. + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + // The list of categories for the cloud control. + Categories []string `protobuf:"bytes,6,rep,name=categories,proto3" json:"categories,omitempty"` + // The list of similar controls. + SimilarControls []*SimilarControls `protobuf:"bytes,9,rep,name=similar_controls,json=similarControls,proto3" json:"similar_controls,omitempty"` + // The type of the cloud control. + CloudControlType CloudControl_Type `protobuf:"varint,10,opt,name=cloud_control_type,json=cloudControlType,proto3,enum=google.cloud.cloudsecuritycompliance.v1.CloudControl_Type" json:"cloud_control_type,omitempty"` + // The category of the finding. + FindingCategory string `protobuf:"bytes,11,opt,name=finding_category,json=findingCategory,proto3" json:"finding_category,omitempty"` + // The list of rules that correspond to the cloud control. + Rules []*Rule `protobuf:"bytes,12,rep,name=rules,proto3" json:"rules,omitempty"` + // The severity of the finding. + FindingSeverity Severity `protobuf:"varint,15,opt,name=finding_severity,json=findingSeverity,proto3,enum=google.cloud.cloudsecuritycompliance.v1.Severity" json:"finding_severity,omitempty"` + // The enforcement mode of the cloud control. + EnforcementMode EnforcementMode `protobuf:"varint,16,opt,name=enforcement_mode,json=enforcementMode,proto3,enum=google.cloud.cloudsecuritycompliance.v1.EnforcementMode" json:"enforcement_mode,omitempty"` + // The name of the cloud control deployment. + CloudControlDeployment string `protobuf:"bytes,17,opt,name=cloud_control_deployment,json=cloudControlDeployment,proto3" json:"cloud_control_deployment,omitempty"` + // The major revision ID of the cloud control. + MajorRevisionId int64 `protobuf:"varint,18,opt,name=major_revision_id,json=majorRevisionId,proto3" json:"major_revision_id,omitempty"` + // The minor revision ID of the cloud control. + MinorRevisionId int64 `protobuf:"varint,19,opt,name=minor_revision_id,json=minorRevisionId,proto3" json:"minor_revision_id,omitempty"` + // The major revision IDs of the frameworks that the cloud control belongs to. + FrameworkMajorRevisionIds []int64 `protobuf:"varint,20,rep,packed,name=framework_major_revision_ids,json=frameworkMajorRevisionIds,proto3" json:"framework_major_revision_ids,omitempty"` +} + +func (x *CloudControlReport) Reset() { + *x = CloudControlReport{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CloudControlReport) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CloudControlReport) ProtoMessage() {} + +func (x *CloudControlReport) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_msgTypes[14] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CloudControlReport.ProtoReflect.Descriptor instead. +func (*CloudControlReport) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_rawDescGZIP(), []int{14} +} + +func (m *CloudControlReport) GetAssessmentDetails() isCloudControlReport_AssessmentDetails { + if m != nil { + return m.AssessmentDetails + } + return nil +} + +func (x *CloudControlReport) GetManualCloudControlAssessmentDetails() *ManualCloudControlAssessmentDetails { + if x, ok := x.GetAssessmentDetails().(*CloudControlReport_ManualCloudControlAssessmentDetails); ok { + return x.ManualCloudControlAssessmentDetails + } + return nil +} + +func (x *CloudControlReport) GetCloudControlAssessmentDetails() *CloudControlAssessmentDetails { + if x, ok := x.GetAssessmentDetails().(*CloudControlReport_CloudControlAssessmentDetails); ok { + return x.CloudControlAssessmentDetails + } + return nil +} + +func (x *CloudControlReport) GetCloudControl() string { + if x != nil { + return x.CloudControl + } + return "" +} + +func (x *CloudControlReport) GetDisplayName() string { + if x != nil { + return x.DisplayName + } + return "" +} + +func (x *CloudControlReport) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *CloudControlReport) GetCategories() []string { + if x != nil { + return x.Categories + } + return nil +} + +func (x *CloudControlReport) GetSimilarControls() []*SimilarControls { + if x != nil { + return x.SimilarControls + } + return nil +} + +func (x *CloudControlReport) GetCloudControlType() CloudControl_Type { + if x != nil { + return x.CloudControlType + } + return CloudControl_TYPE_UNSPECIFIED +} + +func (x *CloudControlReport) GetFindingCategory() string { + if x != nil { + return x.FindingCategory + } + return "" +} + +func (x *CloudControlReport) GetRules() []*Rule { + if x != nil { + return x.Rules + } + return nil +} + +func (x *CloudControlReport) GetFindingSeverity() Severity { + if x != nil { + return x.FindingSeverity + } + return Severity_SEVERITY_UNSPECIFIED +} + +func (x *CloudControlReport) GetEnforcementMode() EnforcementMode { + if x != nil { + return x.EnforcementMode + } + return EnforcementMode_ENFORCEMENT_MODE_UNSPECIFIED +} + +func (x *CloudControlReport) GetCloudControlDeployment() string { + if x != nil { + return x.CloudControlDeployment + } + return "" +} + +func (x *CloudControlReport) GetMajorRevisionId() int64 { + if x != nil { + return x.MajorRevisionId + } + return 0 +} + +func (x *CloudControlReport) GetMinorRevisionId() int64 { + if x != nil { + return x.MinorRevisionId + } + return 0 +} + +func (x *CloudControlReport) GetFrameworkMajorRevisionIds() []int64 { + if x != nil { + return x.FrameworkMajorRevisionIds + } + return nil +} + +type isCloudControlReport_AssessmentDetails interface { + isCloudControlReport_AssessmentDetails() +} + +type CloudControlReport_ManualCloudControlAssessmentDetails struct { + // The details of a manual cloud control assessment. + ManualCloudControlAssessmentDetails *ManualCloudControlAssessmentDetails `protobuf:"bytes,13,opt,name=manual_cloud_control_assessment_details,json=manualCloudControlAssessmentDetails,proto3,oneof"` +} + +type CloudControlReport_CloudControlAssessmentDetails struct { + // The details of a cloud control assessment. + CloudControlAssessmentDetails *CloudControlAssessmentDetails `protobuf:"bytes,14,opt,name=cloud_control_assessment_details,json=cloudControlAssessmentDetails,proto3,oneof"` +} + +func (*CloudControlReport_ManualCloudControlAssessmentDetails) isCloudControlReport_AssessmentDetails() { +} + +func (*CloudControlReport_CloudControlAssessmentDetails) isCloudControlReport_AssessmentDetails() {} + +// The details for a manual cloud control assessment. +type ManualCloudControlAssessmentDetails struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The guide for assessing a cloud control manually. + ManualCloudControlGuide []string `protobuf:"bytes,1,rep,name=manual_cloud_control_guide,json=manualCloudControlGuide,proto3" json:"manual_cloud_control_guide,omitempty"` +} + +func (x *ManualCloudControlAssessmentDetails) Reset() { + *x = ManualCloudControlAssessmentDetails{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ManualCloudControlAssessmentDetails) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ManualCloudControlAssessmentDetails) ProtoMessage() {} + +func (x *ManualCloudControlAssessmentDetails) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_msgTypes[15] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ManualCloudControlAssessmentDetails.ProtoReflect.Descriptor instead. +func (*ManualCloudControlAssessmentDetails) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_rawDescGZIP(), []int{15} +} + +func (x *ManualCloudControlAssessmentDetails) GetManualCloudControlGuide() []string { + if x != nil { + return x.ManualCloudControlGuide + } + return nil +} + +// The cloud control assessment details for non-manual cloud controls. +type CloudControlAssessmentDetails struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The number of findings for the cloud control. + FindingsCount int32 `protobuf:"varint,1,opt,name=findings_count,json=findingsCount,proto3" json:"findings_count,omitempty"` + // Output only. The evaluation status of the cloud control. + EvaluationState EvaluationState `protobuf:"varint,2,opt,name=evaluation_state,json=evaluationState,proto3,enum=google.cloud.cloudsecuritycompliance.v1.EvaluationState" json:"evaluation_state,omitempty"` +} + +func (x *CloudControlAssessmentDetails) Reset() { + *x = CloudControlAssessmentDetails{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CloudControlAssessmentDetails) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CloudControlAssessmentDetails) ProtoMessage() {} + +func (x *CloudControlAssessmentDetails) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_msgTypes[16] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CloudControlAssessmentDetails.ProtoReflect.Descriptor instead. +func (*CloudControlAssessmentDetails) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_rawDescGZIP(), []int{16} +} + +func (x *CloudControlAssessmentDetails) GetFindingsCount() int32 { + if x != nil { + return x.FindingsCount + } + return 0 +} + +func (x *CloudControlAssessmentDetails) GetEvaluationState() EvaluationState { + if x != nil { + return x.EvaluationState + } + return EvaluationState_EVALUATION_STATE_UNSPECIFIED +} + +// The similar controls. +type SimilarControls struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The name of the framework. + Framework string `protobuf:"bytes,1,opt,name=framework,proto3" json:"framework,omitempty"` + // The ID of the control. + ControlId string `protobuf:"bytes,2,opt,name=control_id,json=controlId,proto3" json:"control_id,omitempty"` +} + +func (x *SimilarControls) Reset() { + *x = SimilarControls{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SimilarControls) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SimilarControls) ProtoMessage() {} + +func (x *SimilarControls) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_msgTypes[17] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SimilarControls.ProtoReflect.Descriptor instead. +func (*SimilarControls) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_rawDescGZIP(), []int{17} +} + +func (x *SimilarControls) GetFramework() string { + if x != nil { + return x.Framework + } + return "" +} + +func (x *SimilarControls) GetControlId() string { + if x != nil { + return x.ControlId + } + return "" +} + +// The aggregated compliance report. +type AggregatedComplianceReport struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The control assessment details of the framework. + ControlAssessmentDetails *ControlAssessmentDetails `protobuf:"bytes,1,opt,name=control_assessment_details,json=controlAssessmentDetails,proto3" json:"control_assessment_details,omitempty"` + // The report time of the aggregated compliance report. + ReportTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=report_time,json=reportTime,proto3" json:"report_time,omitempty"` +} + +func (x *AggregatedComplianceReport) Reset() { + *x = AggregatedComplianceReport{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AggregatedComplianceReport) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AggregatedComplianceReport) ProtoMessage() {} + +func (x *AggregatedComplianceReport) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_msgTypes[18] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AggregatedComplianceReport.ProtoReflect.Descriptor instead. +func (*AggregatedComplianceReport) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_rawDescGZIP(), []int{18} +} + +func (x *AggregatedComplianceReport) GetControlAssessmentDetails() *ControlAssessmentDetails { + if x != nil { + return x.ControlAssessmentDetails + } + return nil +} + +func (x *AggregatedComplianceReport) GetReportTime() *timestamppb.Timestamp { + if x != nil { + return x.ReportTime + } + return nil +} + +// The details for a target resource. +type TargetResourceDetails struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The framework deployment name for the target resource. + // + // For example, + // `organizations/{organization_id}/locations/{location}/frameworkDeployments/{framework_deployment_id}` + FrameworkDeployment string `protobuf:"bytes,1,opt,name=framework_deployment,json=frameworkDeployment,proto3" json:"framework_deployment,omitempty"` + // The display name of the target resource. For example, `google.com`, + // `staging-project`, or `development-folder`. + TargetResourceDisplayName string `protobuf:"bytes,2,opt,name=target_resource_display_name,json=targetResourceDisplayName,proto3" json:"target_resource_display_name,omitempty"` + // The target resource. For example, `organizations/1234567890`, + // `projects/1234567890`, or `folders/1234567890`. + TargetResource string `protobuf:"bytes,3,opt,name=target_resource,json=targetResource,proto3" json:"target_resource,omitempty"` + // The create time of the target resource. + CreateTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` + // The update time of the target resource. + UpdateTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` + // The major revision ID of the framework for the target resource. + MajorRevisionId int64 `protobuf:"varint,6,opt,name=major_revision_id,json=majorRevisionId,proto3" json:"major_revision_id,omitempty"` + // The minor revision ID of the framework for the target resource. + MinorRevisionId int64 `protobuf:"varint,7,opt,name=minor_revision_id,json=minorRevisionId,proto3" json:"minor_revision_id,omitempty"` +} + +func (x *TargetResourceDetails) Reset() { + *x = TargetResourceDetails{} + mi := &file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TargetResourceDetails) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TargetResourceDetails) ProtoMessage() {} + +func (x *TargetResourceDetails) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_msgTypes[19] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TargetResourceDetails.ProtoReflect.Descriptor instead. +func (*TargetResourceDetails) Descriptor() ([]byte, []int) { + return file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_rawDescGZIP(), []int{19} +} + +func (x *TargetResourceDetails) GetFrameworkDeployment() string { + if x != nil { + return x.FrameworkDeployment + } + return "" +} + +func (x *TargetResourceDetails) GetTargetResourceDisplayName() string { + if x != nil { + return x.TargetResourceDisplayName + } + return "" +} + +func (x *TargetResourceDetails) GetTargetResource() string { + if x != nil { + return x.TargetResource + } + return "" +} + +func (x *TargetResourceDetails) GetCreateTime() *timestamppb.Timestamp { + if x != nil { + return x.CreateTime + } + return nil +} + +func (x *TargetResourceDetails) GetUpdateTime() *timestamppb.Timestamp { + if x != nil { + return x.UpdateTime + } + return nil +} + +func (x *TargetResourceDetails) GetMajorRevisionId() int64 { + if x != nil { + return x.MajorRevisionId + } + return 0 +} + +func (x *TargetResourceDetails) GetMinorRevisionId() int64 { + if x != nil { + return x.MinorRevisionId + } + return 0 +} + +var File_google_cloud_cloudsecuritycompliance_v1_monitoring_proto protoreflect.FileDescriptor + +var file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_rawDesc = []byte{ + 0x0a, 0x38, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, + 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, + 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x27, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, + 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, + 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, + 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x34, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, + 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2f, 0x76, 0x31, 0x2f, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1a, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x76, 0x61, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xef, 0x01, 0x0a, 0x27, 0x4c, 0x69, + 0x73, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, + 0x69, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x61, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x49, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x43, 0x12, 0x41, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, + 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, + 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x43, + 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, + 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, + 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, + 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, + 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, + 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0xe3, 0x01, 0x0a, 0x28, + 0x4c, 0x69, 0x73, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6d, + 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x89, 0x01, 0x0a, 0x1e, 0x66, 0x72, 0x61, + 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, + 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x72, 0x61, 0x6d, + 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x53, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x1c, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, + 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, + 0x72, 0x69, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, + 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x03, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x22, 0xcf, 0x0a, 0x0a, 0x19, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x43, + 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, + 0x1c, 0x0a, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x33, 0x0a, + 0x15, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x66, 0x72, + 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x7f, 0x0a, 0x1a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, + 0x61, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, + 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, + 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x18, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x67, 0x0a, 0x0e, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, + 0x72, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x40, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, + 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, + 0x6b, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x0d, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x72, + 0x0a, 0x19, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, + 0x0e, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x6f, 0x75, + 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x17, 0x73, 0x75, 0x70, 0x70, 0x6f, + 0x72, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x73, 0x12, 0x6d, 0x0a, 0x14, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x5f, + 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0e, + 0x32, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, + 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x13, 0x66, 0x72, + 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, + 0x73, 0x12, 0x39, 0x0a, 0x16, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x64, + 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x14, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, + 0x6b, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x08, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x5f, 0x72, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0f, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x6d, 0x69, + 0x6e, 0x6f, 0x72, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x76, 0x0a, + 0x17, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, + 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x15, + 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x3a, 0xab, 0x03, 0xea, 0x41, 0xa7, 0x03, 0x0a, 0x40, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, + 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, + 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x60, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, + 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x73, 0x2f, 0x7b, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x7d, + 0x12, 0x5e, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x66, 0x6f, 0x6c, 0x64, 0x65, + 0x72, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, + 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x73, 0x2f, 0x7b, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x7d, + 0x12, 0x6a, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x7d, 0x2f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6d, + 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x7b, + 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, + 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x7d, 0x2a, 0x1a, 0x66, 0x72, + 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, + 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x32, 0x19, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, + 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x22, 0xc1, 0x01, 0x0a, 0x25, 0x46, 0x65, 0x74, 0x63, 0x68, 0x46, 0x72, 0x61, + 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, + 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5c, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x48, 0xe0, 0x41, 0x02, + 0xfa, 0x41, 0x42, 0x0a, 0x40, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, + 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x46, 0x72, 0x61, 0x6d, + 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x52, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x65, + 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, + 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x95, 0x02, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, + 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x55, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3d, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x37, 0x12, + 0x35, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, + 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x20, + 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, + 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x12, 0x3c, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, + 0x05, 0xe0, 0x41, 0x01, 0x18, 0x01, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, + 0xb1, 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x64, 0x0a, 0x11, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x75, 0x6d, 0x6d, + 0x61, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x6d, + 0x6d, 0x61, 0x72, 0x79, 0x52, 0x10, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x6d, + 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, + 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x22, 0xa9, 0x02, 0x0a, 0x25, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x75, 0x6d, + 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5f, 0x0a, + 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x47, 0xe0, + 0x41, 0x02, 0xfa, 0x41, 0x41, 0x12, 0x3f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, + 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x53, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x3c, + 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x05, 0xe0, 0x41, + 0x01, 0x18, 0x01, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x09, + 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, + 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, + 0xdb, 0x01, 0x0a, 0x26, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x43, + 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x83, 0x01, 0x0a, 0x1c, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, + 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x75, 0x6d, + 0x6d, 0x61, 0x72, 0x79, 0x52, 0x1a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x43, 0x6f, 0x6d, + 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, + 0x12, 0x2b, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0d, + 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xde, 0x01, + 0x0a, 0x29, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, + 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5c, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x48, 0xe0, 0x41, 0x02, 0xfa, 0x41, + 0x42, 0x0a, 0x40, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, + 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, + 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x08, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, + 0x61, 0x6c, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, + 0x6c, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0xb6, + 0x01, 0x0a, 0x2a, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x46, 0x72, 0x61, 0x6d, + 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x52, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x87, 0x01, + 0x0a, 0x1d, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, + 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, + 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x1b, 0x61, 0x67, 0x67, 0x72, + 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, + 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x22, 0xe0, 0x01, 0x0a, 0x18, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x61, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, + 0x70, 0x61, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x12, + 0x29, 0x0a, 0x10, 0x66, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x66, 0x61, 0x69, 0x6c, 0x69, + 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x12, 0x3a, 0x0a, 0x19, 0x61, 0x73, + 0x73, 0x65, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x17, 0x61, + 0x73, 0x73, 0x65, 0x73, 0x73, 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x6e, 0x6f, 0x74, 0x5f, 0x61, 0x73, + 0x73, 0x65, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x6e, 0x6f, 0x74, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, + 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x22, 0xe6, 0x09, 0x0a, 0x1a, 0x46, + 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, + 0x63, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x72, 0x61, + 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x72, + 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x7f, 0x0a, 0x1a, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x41, 0x73, 0x73, + 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x18, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, + 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x67, 0x0a, 0x0e, 0x66, 0x72, 0x61, 0x6d, + 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, + 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, + 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x0d, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x72, 0x0a, 0x19, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x18, 0x04, + 0x20, 0x03, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, + 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x17, 0x73, 0x75, + 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x76, + 0x69, 0x64, 0x65, 0x72, 0x73, 0x12, 0x6d, 0x0a, 0x14, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, + 0x72, 0x6b, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, + 0x03, 0x28, 0x0e, 0x32, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, + 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x72, + 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, + 0x13, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, + 0x72, 0x69, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x16, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, + 0x6b, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x14, 0x66, 0x72, 0x61, 0x6d, 0x65, + 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x08, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x61, 0x6a, 0x6f, + 0x72, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0f, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x5f, 0x72, 0x65, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x0f, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x12, 0x76, 0x0a, 0x17, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x52, 0x15, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x3a, 0xb8, 0x03, 0xea, 0x41, 0xb4, 0x03, 0x0a, + 0x41, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, + 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, + 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, + 0x72, 0x79, 0x12, 0x63, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x66, 0x72, 0x61, 0x6d, + 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x53, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, + 0x6f, 0x72, 0x6b, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x73, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x7d, 0x12, 0x61, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x73, + 0x2f, 0x7b, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x66, + 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, + 0x63, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x66, 0x72, 0x61, + 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, + 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x7d, 0x12, 0x6d, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x66, 0x72, + 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, + 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x66, 0x72, 0x61, 0x6d, + 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, + 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x7d, 0x2a, 0x1c, 0x66, 0x72, 0x61, 0x6d, 0x65, + 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x75, + 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x32, 0x1a, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, + 0x72, 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x75, 0x6d, 0x6d, + 0x61, 0x72, 0x79, 0x22, 0xe6, 0x05, 0x0a, 0x0e, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x29, 0x0a, 0x10, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0f, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, + 0x79, 0x12, 0x5a, 0x0a, 0x0d, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, 0x61, + 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, + 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, + 0x0c, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x4d, 0x0a, + 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, + 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, + 0x74, 0x79, 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x23, 0x0a, 0x0d, + 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0c, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, + 0x69, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x12, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, + 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x11, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x46, 0x72, 0x61, + 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x08, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x3a, 0xc9, 0x02, 0xea, 0x41, 0xc5, 0x02, 0x0a, 0x35, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, + 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x4a, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x7d, 0x12, 0x48, 0x66, 0x6f, 0x6c, 0x64, + 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x7d, 0x2f, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, + 0x65, 0x73, 0x2f, 0x7b, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x75, 0x6d, 0x6d, + 0x61, 0x72, 0x79, 0x7d, 0x12, 0x54, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x7d, 0x2a, 0x10, 0x66, 0x69, 0x6e, 0x64, + 0x69, 0x6e, 0x67, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x32, 0x0e, 0x66, 0x69, + 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x22, 0xd6, 0x0a, 0x0a, + 0x18, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, + 0x63, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, + 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x77, 0x0a, 0x18, 0x6f, 0x76, 0x65, 0x72, + 0x61, 0x6c, 0x6c, 0x5f, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, + 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x16, 0x6f, 0x76, 0x65, 0x72, 0x61, + 0x6c, 0x6c, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x66, 0x69, 0x6e, 0x64, 0x69, + 0x6e, 0x67, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x12, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x33, 0x0a, 0x15, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, + 0x65, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x18, 0x06, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x14, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x46, 0x72, + 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x12, 0x63, 0x0a, 0x10, 0x73, 0x69, 0x6d, 0x69, + 0x6c, 0x61, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, + 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69, 0x6d, + 0x69, 0x6c, 0x61, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x52, 0x0f, 0x73, 0x69, + 0x6d, 0x69, 0x6c, 0x61, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x12, 0x6f, 0x0a, + 0x15, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x72, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, + 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x13, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x8c, + 0x01, 0x0a, 0x1b, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x4c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, + 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, + 0x65, 0x67, 0x75, 0x6c, 0x61, 0x74, 0x6f, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x19, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x26, 0x0a, + 0x0f, 0x69, 0x73, 0x5f, 0x66, 0x61, 0x6b, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x73, 0x46, 0x61, 0x6b, 0x65, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x08, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x3a, 0xd4, + 0x04, 0xea, 0x41, 0xd0, 0x04, 0x0a, 0x3f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, + 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x53, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x98, 0x01, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, + 0x2f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, + 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x66, 0x72, 0x61, + 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, + 0x65, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, + 0x72, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, + 0x7d, 0x12, 0x96, 0x01, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x66, 0x6f, 0x6c, + 0x64, 0x65, 0x72, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, + 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x5f, + 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, + 0x61, 0x6e, 0x63, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x7b, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, + 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x7d, 0x12, 0xa2, 0x01, 0x6f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x66, + 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, + 0x63, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x7b, 0x66, 0x72, 0x61, 0x6d, 0x65, + 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x5f, + 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x43, + 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, + 0x65, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x63, 0x6f, 0x6d, 0x70, + 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x7d, 0x2a, + 0x1a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, + 0x63, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x32, 0x18, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x75, + 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x22, 0xc4, 0x09, 0x0a, 0x12, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0xa4, 0x01, 0x0a, + 0x27, 0x6d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, + 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4c, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, + 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x43, + 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x41, 0x73, 0x73, 0x65, 0x73, + 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x23, + 0x6d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x12, 0x91, 0x01, 0x0a, 0x20, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, + 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x46, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, + 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x1d, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, + 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x21, 0x0a, 0x0c, + 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18, + 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, + 0x73, 0x12, 0x63, 0x0a, 0x10, 0x73, 0x69, 0x6d, 0x69, 0x6c, 0x61, 0x72, 0x5f, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69, 0x6d, 0x69, 0x6c, 0x61, 0x72, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x52, 0x0f, 0x73, 0x69, 0x6d, 0x69, 0x6c, 0x61, 0x72, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x12, 0x68, 0x0a, 0x12, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, + 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x6f, + 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x10, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x29, 0x0a, 0x10, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x61, 0x74, 0x65, + 0x67, 0x6f, 0x72, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x66, 0x69, 0x6e, 0x64, + 0x69, 0x6e, 0x67, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x43, 0x0a, 0x05, 0x72, + 0x75, 0x6c, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, + 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, + 0x12, 0x5c, 0x0a, 0x10, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, 0x76, 0x65, + 0x72, 0x69, 0x74, 0x79, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, + 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x52, 0x0f, 0x66, + 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x63, + 0x0a, 0x10, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, + 0x64, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, + 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x6f, + 0x64, 0x65, 0x52, 0x0f, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4d, + 0x6f, 0x64, 0x65, 0x12, 0x38, 0x0a, 0x18, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2a, 0x0a, + 0x11, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x52, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x69, 0x6e, + 0x6f, 0x72, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x13, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x52, 0x65, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x3f, 0x0a, 0x1c, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, + 0x72, 0x6b, 0x5f, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, 0x03, 0x52, 0x19, 0x66, 0x72, 0x61, + 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x4d, 0x61, 0x6a, 0x6f, 0x72, 0x52, 0x65, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x42, 0x14, 0x0a, 0x12, 0x61, 0x73, 0x73, 0x65, 0x73, 0x73, + 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x62, 0x0a, 0x23, + 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x12, 0x3b, 0x0a, 0x1a, 0x6d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x5f, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x67, 0x75, 0x69, 0x64, + 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x17, 0x6d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x43, + 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x47, 0x75, 0x69, 0x64, 0x65, + 0x22, 0xb0, 0x01, 0x0a, 0x1d, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x66, 0x69, 0x6e, 0x64, + 0x69, 0x6e, 0x67, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x68, 0x0a, 0x10, 0x65, 0x76, 0x61, + 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, + 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, + 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, + 0x41, 0x03, 0x52, 0x0f, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x22, 0x4e, 0x0a, 0x0f, 0x53, 0x69, 0x6d, 0x69, 0x6c, 0x61, 0x72, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, + 0x6f, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, + 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x49, 0x64, 0x22, 0xda, 0x01, 0x0a, 0x1a, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, + 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x70, 0x6f, + 0x72, 0x74, 0x12, 0x7f, 0x0a, 0x1a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x61, 0x73, + 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, + 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, + 0x6e, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x18, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x41, 0x73, 0x73, 0x65, 0x73, 0x73, 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, + 0x22, 0x86, 0x03, 0x0a, 0x15, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x31, 0x0a, 0x14, 0x66, 0x72, + 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, + 0x6f, 0x72, 0x6b, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3f, 0x0a, + 0x1c, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x19, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, + 0x0a, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x6d, 0x61, + 0x6a, 0x6f, 0x72, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2a, 0x0a, + 0x11, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x52, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x2a, 0x90, 0x01, 0x0a, 0x0f, 0x45, 0x76, + 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, + 0x1c, 0x45, 0x56, 0x41, 0x4c, 0x55, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x1b, 0x0a, 0x17, 0x45, 0x56, 0x41, 0x4c, 0x55, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x45, 0x5f, 0x50, 0x41, 0x53, 0x53, 0x45, 0x44, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, + 0x45, 0x56, 0x41, 0x4c, 0x55, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, + 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x12, 0x21, 0x0a, 0x1d, 0x45, 0x56, 0x41, + 0x4c, 0x55, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4e, 0x4f, + 0x54, 0x5f, 0x41, 0x53, 0x53, 0x45, 0x53, 0x53, 0x45, 0x44, 0x10, 0x03, 0x2a, 0xd9, 0x01, 0x0a, + 0x0c, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x1d, 0x0a, + 0x19, 0x46, 0x49, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, + 0x54, 0x48, 0x52, 0x45, 0x41, 0x54, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x56, 0x55, 0x4c, 0x4e, + 0x45, 0x52, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x4d, + 0x49, 0x53, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, + 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x42, 0x53, 0x45, 0x52, 0x56, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x43, 0x43, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, + 0x05, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x4f, 0x53, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x56, 0x49, 0x4f, + 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x4f, 0x58, 0x49, + 0x43, 0x5f, 0x43, 0x4f, 0x4d, 0x42, 0x49, 0x4e, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x07, 0x12, + 0x17, 0x0a, 0x13, 0x53, 0x45, 0x4e, 0x53, 0x49, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x44, 0x41, 0x54, + 0x41, 0x5f, 0x52, 0x49, 0x53, 0x4b, 0x10, 0x08, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x48, 0x4f, 0x4b, + 0x45, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x10, 0x09, 0x32, 0xd5, 0x11, 0x0a, 0x0a, 0x4d, 0x6f, 0x6e, + 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x12, 0xa8, 0x03, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, + 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, + 0x6e, 0x63, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x12, 0x50, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, + 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, + 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x75, + 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x51, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, + 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x72, 0x61, + 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, + 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0xde, 0x01, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0xce, 0x01, 0x5a, 0x41, 0x12, 0x3f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x3d, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x66, 0x72, 0x61, 0x6d, 0x65, + 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x75, + 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x5a, 0x42, 0x12, 0x40, 0x2f, 0x76, 0x31, 0x2f, 0x7b, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x66, + 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, + 0x63, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x12, 0x45, 0x2f, 0x76, 0x31, + 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x43, + 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, + 0x65, 0x73, 0x12, 0xe0, 0x02, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x69, 0x6e, 0x64, 0x69, + 0x6e, 0x67, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x12, 0x44, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, + 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x46, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xba, 0x01, 0xda, 0x41, 0x06, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xaa, 0x01, 0x5a, 0x35, 0x12, 0x33, 0x2f, + 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x66, 0x6f, 0x6c, 0x64, 0x65, + 0x72, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, + 0x7d, 0x2f, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, + 0x65, 0x73, 0x5a, 0x36, 0x12, 0x34, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x12, 0x39, 0x2f, 0x76, 0x31, 0x2f, + 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x66, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x75, 0x6d, 0x6d, + 0x61, 0x72, 0x69, 0x65, 0x73, 0x12, 0x9f, 0x03, 0x0a, 0x1e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x46, + 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, + 0x63, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x4e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, + 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, + 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, + 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6d, 0x70, + 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x22, 0xe8, 0x01, 0xda, + 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xda, 0x01, 0x5a, 0x45, 0x12, + 0x43, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x66, 0x6f, 0x6c, 0x64, 0x65, + 0x72, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, + 0x2f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, + 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x66, + 0x65, 0x74, 0x63, 0x68, 0x5a, 0x46, 0x12, 0x44, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, + 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, + 0x72, 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x70, 0x6f, + 0x72, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x66, 0x65, 0x74, 0x63, 0x68, 0x12, 0x49, 0x2f, 0x76, + 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x2a, 0x2f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6d, + 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x2a, + 0x7d, 0x3a, 0x66, 0x65, 0x74, 0x63, 0x68, 0x12, 0xf3, 0x03, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, + 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x12, 0x4e, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, + 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, + 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x4f, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, + 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, + 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xaf, 0x02, 0xda, 0x41, + 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x9f, 0x02, 0x5a, 0x5c, + 0x12, 0x5a, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x66, 0x6f, + 0x6c, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x2a, 0x2f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6d, + 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x2a, + 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, + 0x6e, 0x63, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x5a, 0x5d, 0x12, 0x5b, + 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x2a, 0x2f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6d, 0x70, + 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x2a, 0x7d, + 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, + 0x63, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x12, 0x60, 0x2f, 0x76, 0x31, + 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, + 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, + 0x2a, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, + 0x61, 0x6e, 0x63, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x12, 0xc4, 0x03, + 0x0a, 0x22, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, + 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x12, 0x52, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, + 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, + 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, + 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x53, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, + 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x46, 0x72, 0x61, 0x6d, + 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x52, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xf4, 0x01, + 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xe6, 0x01, 0x5a, 0x49, + 0x12, 0x47, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x66, 0x6f, 0x6c, 0x64, + 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x2a, 0x2f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, + 0x69, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, + 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x5a, 0x4a, 0x12, 0x48, 0x2f, 0x76, 0x31, + 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x66, 0x72, + 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, + 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x61, 0x67, 0x67, 0x72, + 0x65, 0x67, 0x61, 0x74, 0x65, 0x12, 0x4d, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, + 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, + 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x66, 0x72, 0x61, + 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, + 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x61, 0x67, 0x67, 0x72, 0x65, + 0x67, 0x61, 0x74, 0x65, 0x1a, 0x5a, 0xca, 0x41, 0x26, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, + 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, + 0x41, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, + 0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x42, 0x89, 0x03, 0xea, 0x41, 0x5e, 0x0a, 0x35, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, + 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x46, + 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x66, + 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x7d, 0x2f, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x7d, 0x0a, 0x2b, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, + 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x76, + 0x31, 0x42, 0x0f, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x65, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, + 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, + 0x65, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, + 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x70, + 0x62, 0x3b, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x63, + 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x70, 0x62, 0xaa, 0x02, 0x27, 0x47, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, + 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, + 0x63, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x27, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, + 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, + 0x74, 0x79, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x5c, 0x56, 0x31, 0xea, + 0x02, 0x2a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, + 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6f, + 0x6d, 0x70, 0x6c, 0x69, 0x61, 0x6e, 0x63, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_rawDescOnce sync.Once + file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_rawDescData = file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_rawDesc +) + +func file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_rawDescGZIP() []byte { + file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_rawDescOnce.Do(func() { + file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_rawDescData) + }) + return file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_rawDescData +} + +var file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_msgTypes = make([]protoimpl.MessageInfo, 20) +var file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_goTypes = []any{ + (EvaluationState)(0), // 0: google.cloud.cloudsecuritycompliance.v1.EvaluationState + (FindingClass)(0), // 1: google.cloud.cloudsecuritycompliance.v1.FindingClass + (*ListFrameworkComplianceSummariesRequest)(nil), // 2: google.cloud.cloudsecuritycompliance.v1.ListFrameworkComplianceSummariesRequest + (*ListFrameworkComplianceSummariesResponse)(nil), // 3: google.cloud.cloudsecuritycompliance.v1.ListFrameworkComplianceSummariesResponse + (*FrameworkComplianceReport)(nil), // 4: google.cloud.cloudsecuritycompliance.v1.FrameworkComplianceReport + (*FetchFrameworkComplianceReportRequest)(nil), // 5: google.cloud.cloudsecuritycompliance.v1.FetchFrameworkComplianceReportRequest + (*ListFindingSummariesRequest)(nil), // 6: google.cloud.cloudsecuritycompliance.v1.ListFindingSummariesRequest + (*ListFindingSummariesResponse)(nil), // 7: google.cloud.cloudsecuritycompliance.v1.ListFindingSummariesResponse + (*ListControlComplianceSummariesRequest)(nil), // 8: google.cloud.cloudsecuritycompliance.v1.ListControlComplianceSummariesRequest + (*ListControlComplianceSummariesResponse)(nil), // 9: google.cloud.cloudsecuritycompliance.v1.ListControlComplianceSummariesResponse + (*AggregateFrameworkComplianceReportRequest)(nil), // 10: google.cloud.cloudsecuritycompliance.v1.AggregateFrameworkComplianceReportRequest + (*AggregateFrameworkComplianceReportResponse)(nil), // 11: google.cloud.cloudsecuritycompliance.v1.AggregateFrameworkComplianceReportResponse + (*ControlAssessmentDetails)(nil), // 12: google.cloud.cloudsecuritycompliance.v1.ControlAssessmentDetails + (*FrameworkComplianceSummary)(nil), // 13: google.cloud.cloudsecuritycompliance.v1.FrameworkComplianceSummary + (*FindingSummary)(nil), // 14: google.cloud.cloudsecuritycompliance.v1.FindingSummary + (*ControlComplianceSummary)(nil), // 15: google.cloud.cloudsecuritycompliance.v1.ControlComplianceSummary + (*CloudControlReport)(nil), // 16: google.cloud.cloudsecuritycompliance.v1.CloudControlReport + (*ManualCloudControlAssessmentDetails)(nil), // 17: google.cloud.cloudsecuritycompliance.v1.ManualCloudControlAssessmentDetails + (*CloudControlAssessmentDetails)(nil), // 18: google.cloud.cloudsecuritycompliance.v1.CloudControlAssessmentDetails + (*SimilarControls)(nil), // 19: google.cloud.cloudsecuritycompliance.v1.SimilarControls + (*AggregatedComplianceReport)(nil), // 20: google.cloud.cloudsecuritycompliance.v1.AggregatedComplianceReport + (*TargetResourceDetails)(nil), // 21: google.cloud.cloudsecuritycompliance.v1.TargetResourceDetails + (*timestamppb.Timestamp)(nil), // 22: google.protobuf.Timestamp + (Framework_FrameworkType)(0), // 23: google.cloud.cloudsecuritycompliance.v1.Framework.FrameworkType + (CloudProvider)(0), // 24: google.cloud.cloudsecuritycompliance.v1.CloudProvider + (FrameworkCategory)(0), // 25: google.cloud.cloudsecuritycompliance.v1.FrameworkCategory + (*interval.Interval)(nil), // 26: google.type.Interval + (Severity)(0), // 27: google.cloud.cloudsecuritycompliance.v1.Severity + (RegulatoryControlResponsibilityType)(0), // 28: google.cloud.cloudsecuritycompliance.v1.RegulatoryControlResponsibilityType + (CloudControl_Type)(0), // 29: google.cloud.cloudsecuritycompliance.v1.CloudControl.Type + (*Rule)(nil), // 30: google.cloud.cloudsecuritycompliance.v1.Rule + (EnforcementMode)(0), // 31: google.cloud.cloudsecuritycompliance.v1.EnforcementMode +} +var file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_depIdxs = []int32{ + 13, // 0: google.cloud.cloudsecuritycompliance.v1.ListFrameworkComplianceSummariesResponse.framework_compliance_summaries:type_name -> google.cloud.cloudsecuritycompliance.v1.FrameworkComplianceSummary + 22, // 1: google.cloud.cloudsecuritycompliance.v1.FrameworkComplianceReport.update_time:type_name -> google.protobuf.Timestamp + 12, // 2: google.cloud.cloudsecuritycompliance.v1.FrameworkComplianceReport.control_assessment_details:type_name -> google.cloud.cloudsecuritycompliance.v1.ControlAssessmentDetails + 23, // 3: google.cloud.cloudsecuritycompliance.v1.FrameworkComplianceReport.framework_type:type_name -> google.cloud.cloudsecuritycompliance.v1.Framework.FrameworkType + 24, // 4: google.cloud.cloudsecuritycompliance.v1.FrameworkComplianceReport.supported_cloud_providers:type_name -> google.cloud.cloudsecuritycompliance.v1.CloudProvider + 25, // 5: google.cloud.cloudsecuritycompliance.v1.FrameworkComplianceReport.framework_categories:type_name -> google.cloud.cloudsecuritycompliance.v1.FrameworkCategory + 21, // 6: google.cloud.cloudsecuritycompliance.v1.FrameworkComplianceReport.target_resource_details:type_name -> google.cloud.cloudsecuritycompliance.v1.TargetResourceDetails + 22, // 7: google.cloud.cloudsecuritycompliance.v1.FetchFrameworkComplianceReportRequest.end_time:type_name -> google.protobuf.Timestamp + 22, // 8: google.cloud.cloudsecuritycompliance.v1.ListFindingSummariesRequest.end_time:type_name -> google.protobuf.Timestamp + 14, // 9: google.cloud.cloudsecuritycompliance.v1.ListFindingSummariesResponse.finding_summaries:type_name -> google.cloud.cloudsecuritycompliance.v1.FindingSummary + 22, // 10: google.cloud.cloudsecuritycompliance.v1.ListControlComplianceSummariesRequest.end_time:type_name -> google.protobuf.Timestamp + 15, // 11: google.cloud.cloudsecuritycompliance.v1.ListControlComplianceSummariesResponse.control_compliance_summaries:type_name -> google.cloud.cloudsecuritycompliance.v1.ControlComplianceSummary + 26, // 12: google.cloud.cloudsecuritycompliance.v1.AggregateFrameworkComplianceReportRequest.interval:type_name -> google.type.Interval + 20, // 13: google.cloud.cloudsecuritycompliance.v1.AggregateFrameworkComplianceReportResponse.aggregated_compliance_reports:type_name -> google.cloud.cloudsecuritycompliance.v1.AggregatedComplianceReport + 12, // 14: google.cloud.cloudsecuritycompliance.v1.FrameworkComplianceSummary.control_assessment_details:type_name -> google.cloud.cloudsecuritycompliance.v1.ControlAssessmentDetails + 23, // 15: google.cloud.cloudsecuritycompliance.v1.FrameworkComplianceSummary.framework_type:type_name -> google.cloud.cloudsecuritycompliance.v1.Framework.FrameworkType + 24, // 16: google.cloud.cloudsecuritycompliance.v1.FrameworkComplianceSummary.supported_cloud_providers:type_name -> google.cloud.cloudsecuritycompliance.v1.CloudProvider + 25, // 17: google.cloud.cloudsecuritycompliance.v1.FrameworkComplianceSummary.framework_categories:type_name -> google.cloud.cloudsecuritycompliance.v1.FrameworkCategory + 21, // 18: google.cloud.cloudsecuritycompliance.v1.FrameworkComplianceSummary.target_resource_details:type_name -> google.cloud.cloudsecuritycompliance.v1.TargetResourceDetails + 1, // 19: google.cloud.cloudsecuritycompliance.v1.FindingSummary.finding_class:type_name -> google.cloud.cloudsecuritycompliance.v1.FindingClass + 27, // 20: google.cloud.cloudsecuritycompliance.v1.FindingSummary.severity:type_name -> google.cloud.cloudsecuritycompliance.v1.Severity + 22, // 21: google.cloud.cloudsecuritycompliance.v1.FindingSummary.update_time:type_name -> google.protobuf.Timestamp + 0, // 22: google.cloud.cloudsecuritycompliance.v1.ControlComplianceSummary.overall_evaluation_state:type_name -> google.cloud.cloudsecuritycompliance.v1.EvaluationState + 19, // 23: google.cloud.cloudsecuritycompliance.v1.ControlComplianceSummary.similar_controls:type_name -> google.cloud.cloudsecuritycompliance.v1.SimilarControls + 16, // 24: google.cloud.cloudsecuritycompliance.v1.ControlComplianceSummary.cloud_control_reports:type_name -> google.cloud.cloudsecuritycompliance.v1.CloudControlReport + 28, // 25: google.cloud.cloudsecuritycompliance.v1.ControlComplianceSummary.control_responsibility_type:type_name -> google.cloud.cloudsecuritycompliance.v1.RegulatoryControlResponsibilityType + 17, // 26: google.cloud.cloudsecuritycompliance.v1.CloudControlReport.manual_cloud_control_assessment_details:type_name -> google.cloud.cloudsecuritycompliance.v1.ManualCloudControlAssessmentDetails + 18, // 27: google.cloud.cloudsecuritycompliance.v1.CloudControlReport.cloud_control_assessment_details:type_name -> google.cloud.cloudsecuritycompliance.v1.CloudControlAssessmentDetails + 19, // 28: google.cloud.cloudsecuritycompliance.v1.CloudControlReport.similar_controls:type_name -> google.cloud.cloudsecuritycompliance.v1.SimilarControls + 29, // 29: google.cloud.cloudsecuritycompliance.v1.CloudControlReport.cloud_control_type:type_name -> google.cloud.cloudsecuritycompliance.v1.CloudControl.Type + 30, // 30: google.cloud.cloudsecuritycompliance.v1.CloudControlReport.rules:type_name -> google.cloud.cloudsecuritycompliance.v1.Rule + 27, // 31: google.cloud.cloudsecuritycompliance.v1.CloudControlReport.finding_severity:type_name -> google.cloud.cloudsecuritycompliance.v1.Severity + 31, // 32: google.cloud.cloudsecuritycompliance.v1.CloudControlReport.enforcement_mode:type_name -> google.cloud.cloudsecuritycompliance.v1.EnforcementMode + 0, // 33: google.cloud.cloudsecuritycompliance.v1.CloudControlAssessmentDetails.evaluation_state:type_name -> google.cloud.cloudsecuritycompliance.v1.EvaluationState + 12, // 34: google.cloud.cloudsecuritycompliance.v1.AggregatedComplianceReport.control_assessment_details:type_name -> google.cloud.cloudsecuritycompliance.v1.ControlAssessmentDetails + 22, // 35: google.cloud.cloudsecuritycompliance.v1.AggregatedComplianceReport.report_time:type_name -> google.protobuf.Timestamp + 22, // 36: google.cloud.cloudsecuritycompliance.v1.TargetResourceDetails.create_time:type_name -> google.protobuf.Timestamp + 22, // 37: google.cloud.cloudsecuritycompliance.v1.TargetResourceDetails.update_time:type_name -> google.protobuf.Timestamp + 2, // 38: google.cloud.cloudsecuritycompliance.v1.Monitoring.ListFrameworkComplianceSummaries:input_type -> google.cloud.cloudsecuritycompliance.v1.ListFrameworkComplianceSummariesRequest + 6, // 39: google.cloud.cloudsecuritycompliance.v1.Monitoring.ListFindingSummaries:input_type -> google.cloud.cloudsecuritycompliance.v1.ListFindingSummariesRequest + 5, // 40: google.cloud.cloudsecuritycompliance.v1.Monitoring.FetchFrameworkComplianceReport:input_type -> google.cloud.cloudsecuritycompliance.v1.FetchFrameworkComplianceReportRequest + 8, // 41: google.cloud.cloudsecuritycompliance.v1.Monitoring.ListControlComplianceSummaries:input_type -> google.cloud.cloudsecuritycompliance.v1.ListControlComplianceSummariesRequest + 10, // 42: google.cloud.cloudsecuritycompliance.v1.Monitoring.AggregateFrameworkComplianceReport:input_type -> google.cloud.cloudsecuritycompliance.v1.AggregateFrameworkComplianceReportRequest + 3, // 43: google.cloud.cloudsecuritycompliance.v1.Monitoring.ListFrameworkComplianceSummaries:output_type -> google.cloud.cloudsecuritycompliance.v1.ListFrameworkComplianceSummariesResponse + 7, // 44: google.cloud.cloudsecuritycompliance.v1.Monitoring.ListFindingSummaries:output_type -> google.cloud.cloudsecuritycompliance.v1.ListFindingSummariesResponse + 4, // 45: google.cloud.cloudsecuritycompliance.v1.Monitoring.FetchFrameworkComplianceReport:output_type -> google.cloud.cloudsecuritycompliance.v1.FrameworkComplianceReport + 9, // 46: google.cloud.cloudsecuritycompliance.v1.Monitoring.ListControlComplianceSummaries:output_type -> google.cloud.cloudsecuritycompliance.v1.ListControlComplianceSummariesResponse + 11, // 47: google.cloud.cloudsecuritycompliance.v1.Monitoring.AggregateFrameworkComplianceReport:output_type -> google.cloud.cloudsecuritycompliance.v1.AggregateFrameworkComplianceReportResponse + 43, // [43:48] is the sub-list for method output_type + 38, // [38:43] is the sub-list for method input_type + 38, // [38:38] is the sub-list for extension type_name + 38, // [38:38] is the sub-list for extension extendee + 0, // [0:38] is the sub-list for field type_name +} + +func init() { file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_init() } +func file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_init() { + if File_google_cloud_cloudsecuritycompliance_v1_monitoring_proto != nil { + return + } + file_google_cloud_cloudsecuritycompliance_v1_common_proto_init() + file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_msgTypes[14].OneofWrappers = []any{ + (*CloudControlReport_ManualCloudControlAssessmentDetails)(nil), + (*CloudControlReport_CloudControlAssessmentDetails)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_rawDesc, + NumEnums: 2, + NumMessages: 20, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_goTypes, + DependencyIndexes: file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_depIdxs, + EnumInfos: file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_enumTypes, + MessageInfos: file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_msgTypes, + }.Build() + File_google_cloud_cloudsecuritycompliance_v1_monitoring_proto = out.File + file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_rawDesc = nil + file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_goTypes = nil + file_google_cloud_cloudsecuritycompliance_v1_monitoring_proto_depIdxs = nil +} diff --git a/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb/monitoring_grpc.pb.go b/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb/monitoring_grpc.pb.go new file mode 100644 index 000000000000..fd13b508e0a8 --- /dev/null +++ b/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb/monitoring_grpc.pb.go @@ -0,0 +1,280 @@ +// Copyright 2025 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 +// +// http://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. + +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc v4.25.7 +// source: google/cloud/cloudsecuritycompliance/v1/monitoring.proto + +package cloudsecuritycompliancepb + +import ( + context "context" + + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +const ( + Monitoring_ListFrameworkComplianceSummaries_FullMethodName = "/google.cloud.cloudsecuritycompliance.v1.Monitoring/ListFrameworkComplianceSummaries" + Monitoring_ListFindingSummaries_FullMethodName = "/google.cloud.cloudsecuritycompliance.v1.Monitoring/ListFindingSummaries" + Monitoring_FetchFrameworkComplianceReport_FullMethodName = "/google.cloud.cloudsecuritycompliance.v1.Monitoring/FetchFrameworkComplianceReport" + Monitoring_ListControlComplianceSummaries_FullMethodName = "/google.cloud.cloudsecuritycompliance.v1.Monitoring/ListControlComplianceSummaries" + Monitoring_AggregateFrameworkComplianceReport_FullMethodName = "/google.cloud.cloudsecuritycompliance.v1.Monitoring/AggregateFrameworkComplianceReport" +) + +// MonitoringClient is the client API for Monitoring service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type MonitoringClient interface { + // Lists the framework compliance summary for a given scope. + ListFrameworkComplianceSummaries(ctx context.Context, in *ListFrameworkComplianceSummariesRequest, opts ...grpc.CallOption) (*ListFrameworkComplianceSummariesResponse, error) + // Lists the finding summary by category for a given scope. + ListFindingSummaries(ctx context.Context, in *ListFindingSummariesRequest, opts ...grpc.CallOption) (*ListFindingSummariesResponse, error) + // Fetches the framework compliance report for a given scope. + FetchFrameworkComplianceReport(ctx context.Context, in *FetchFrameworkComplianceReportRequest, opts ...grpc.CallOption) (*FrameworkComplianceReport, error) + // Lists the control compliance summary for a given scope. + ListControlComplianceSummaries(ctx context.Context, in *ListControlComplianceSummariesRequest, opts ...grpc.CallOption) (*ListControlComplianceSummariesResponse, error) + // Gets the aggregated compliance report over time for a given scope. + AggregateFrameworkComplianceReport(ctx context.Context, in *AggregateFrameworkComplianceReportRequest, opts ...grpc.CallOption) (*AggregateFrameworkComplianceReportResponse, error) +} + +type monitoringClient struct { + cc grpc.ClientConnInterface +} + +func NewMonitoringClient(cc grpc.ClientConnInterface) MonitoringClient { + return &monitoringClient{cc} +} + +func (c *monitoringClient) ListFrameworkComplianceSummaries(ctx context.Context, in *ListFrameworkComplianceSummariesRequest, opts ...grpc.CallOption) (*ListFrameworkComplianceSummariesResponse, error) { + out := new(ListFrameworkComplianceSummariesResponse) + err := c.cc.Invoke(ctx, Monitoring_ListFrameworkComplianceSummaries_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *monitoringClient) ListFindingSummaries(ctx context.Context, in *ListFindingSummariesRequest, opts ...grpc.CallOption) (*ListFindingSummariesResponse, error) { + out := new(ListFindingSummariesResponse) + err := c.cc.Invoke(ctx, Monitoring_ListFindingSummaries_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *monitoringClient) FetchFrameworkComplianceReport(ctx context.Context, in *FetchFrameworkComplianceReportRequest, opts ...grpc.CallOption) (*FrameworkComplianceReport, error) { + out := new(FrameworkComplianceReport) + err := c.cc.Invoke(ctx, Monitoring_FetchFrameworkComplianceReport_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *monitoringClient) ListControlComplianceSummaries(ctx context.Context, in *ListControlComplianceSummariesRequest, opts ...grpc.CallOption) (*ListControlComplianceSummariesResponse, error) { + out := new(ListControlComplianceSummariesResponse) + err := c.cc.Invoke(ctx, Monitoring_ListControlComplianceSummaries_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *monitoringClient) AggregateFrameworkComplianceReport(ctx context.Context, in *AggregateFrameworkComplianceReportRequest, opts ...grpc.CallOption) (*AggregateFrameworkComplianceReportResponse, error) { + out := new(AggregateFrameworkComplianceReportResponse) + err := c.cc.Invoke(ctx, Monitoring_AggregateFrameworkComplianceReport_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// MonitoringServer is the server API for Monitoring service. +// All implementations should embed UnimplementedMonitoringServer +// for forward compatibility +type MonitoringServer interface { + // Lists the framework compliance summary for a given scope. + ListFrameworkComplianceSummaries(context.Context, *ListFrameworkComplianceSummariesRequest) (*ListFrameworkComplianceSummariesResponse, error) + // Lists the finding summary by category for a given scope. + ListFindingSummaries(context.Context, *ListFindingSummariesRequest) (*ListFindingSummariesResponse, error) + // Fetches the framework compliance report for a given scope. + FetchFrameworkComplianceReport(context.Context, *FetchFrameworkComplianceReportRequest) (*FrameworkComplianceReport, error) + // Lists the control compliance summary for a given scope. + ListControlComplianceSummaries(context.Context, *ListControlComplianceSummariesRequest) (*ListControlComplianceSummariesResponse, error) + // Gets the aggregated compliance report over time for a given scope. + AggregateFrameworkComplianceReport(context.Context, *AggregateFrameworkComplianceReportRequest) (*AggregateFrameworkComplianceReportResponse, error) +} + +// UnimplementedMonitoringServer should be embedded to have forward compatible implementations. +type UnimplementedMonitoringServer struct { +} + +func (UnimplementedMonitoringServer) ListFrameworkComplianceSummaries(context.Context, *ListFrameworkComplianceSummariesRequest) (*ListFrameworkComplianceSummariesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListFrameworkComplianceSummaries not implemented") +} +func (UnimplementedMonitoringServer) ListFindingSummaries(context.Context, *ListFindingSummariesRequest) (*ListFindingSummariesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListFindingSummaries not implemented") +} +func (UnimplementedMonitoringServer) FetchFrameworkComplianceReport(context.Context, *FetchFrameworkComplianceReportRequest) (*FrameworkComplianceReport, error) { + return nil, status.Errorf(codes.Unimplemented, "method FetchFrameworkComplianceReport not implemented") +} +func (UnimplementedMonitoringServer) ListControlComplianceSummaries(context.Context, *ListControlComplianceSummariesRequest) (*ListControlComplianceSummariesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListControlComplianceSummaries not implemented") +} +func (UnimplementedMonitoringServer) AggregateFrameworkComplianceReport(context.Context, *AggregateFrameworkComplianceReportRequest) (*AggregateFrameworkComplianceReportResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method AggregateFrameworkComplianceReport not implemented") +} + +// UnsafeMonitoringServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to MonitoringServer will +// result in compilation errors. +type UnsafeMonitoringServer interface { + mustEmbedUnimplementedMonitoringServer() +} + +func RegisterMonitoringServer(s grpc.ServiceRegistrar, srv MonitoringServer) { + s.RegisterService(&Monitoring_ServiceDesc, srv) +} + +func _Monitoring_ListFrameworkComplianceSummaries_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListFrameworkComplianceSummariesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MonitoringServer).ListFrameworkComplianceSummaries(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Monitoring_ListFrameworkComplianceSummaries_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MonitoringServer).ListFrameworkComplianceSummaries(ctx, req.(*ListFrameworkComplianceSummariesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Monitoring_ListFindingSummaries_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListFindingSummariesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MonitoringServer).ListFindingSummaries(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Monitoring_ListFindingSummaries_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MonitoringServer).ListFindingSummaries(ctx, req.(*ListFindingSummariesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Monitoring_FetchFrameworkComplianceReport_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(FetchFrameworkComplianceReportRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MonitoringServer).FetchFrameworkComplianceReport(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Monitoring_FetchFrameworkComplianceReport_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MonitoringServer).FetchFrameworkComplianceReport(ctx, req.(*FetchFrameworkComplianceReportRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Monitoring_ListControlComplianceSummaries_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListControlComplianceSummariesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MonitoringServer).ListControlComplianceSummaries(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Monitoring_ListControlComplianceSummaries_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MonitoringServer).ListControlComplianceSummaries(ctx, req.(*ListControlComplianceSummariesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Monitoring_AggregateFrameworkComplianceReport_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AggregateFrameworkComplianceReportRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MonitoringServer).AggregateFrameworkComplianceReport(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Monitoring_AggregateFrameworkComplianceReport_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MonitoringServer).AggregateFrameworkComplianceReport(ctx, req.(*AggregateFrameworkComplianceReportRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// Monitoring_ServiceDesc is the grpc.ServiceDesc for Monitoring service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Monitoring_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "google.cloud.cloudsecuritycompliance.v1.Monitoring", + HandlerType: (*MonitoringServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "ListFrameworkComplianceSummaries", + Handler: _Monitoring_ListFrameworkComplianceSummaries_Handler, + }, + { + MethodName: "ListFindingSummaries", + Handler: _Monitoring_ListFindingSummaries_Handler, + }, + { + MethodName: "FetchFrameworkComplianceReport", + Handler: _Monitoring_FetchFrameworkComplianceReport_Handler, + }, + { + MethodName: "ListControlComplianceSummaries", + Handler: _Monitoring_ListControlComplianceSummaries_Handler, + }, + { + MethodName: "AggregateFrameworkComplianceReport", + Handler: _Monitoring_AggregateFrameworkComplianceReport_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "google/cloud/cloudsecuritycompliance/v1/monitoring.proto", +} diff --git a/cloudsecuritycompliance/apiv1/cm_enrollment_client.go b/cloudsecuritycompliance/apiv1/cm_enrollment_client.go new file mode 100644 index 000000000000..35f046cec1f3 --- /dev/null +++ b/cloudsecuritycompliance/apiv1/cm_enrollment_client.go @@ -0,0 +1,1050 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +package cloudsecuritycompliance + +import ( + "bytes" + "context" + "fmt" + "log/slog" + "math" + "net/http" + "net/url" + "time" + + cloudsecuritycompliancepb "cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" + gax "github.com/googleapis/gax-go/v2" + "google.golang.org/api/iterator" + "google.golang.org/api/option" + "google.golang.org/api/option/internaloption" + gtransport "google.golang.org/api/transport/grpc" + httptransport "google.golang.org/api/transport/http" + locationpb "google.golang.org/genproto/googleapis/cloud/location" + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/protobuf/encoding/protojson" + "google.golang.org/protobuf/proto" +) + +var newCmEnrollmentClientHook clientHook + +// CmEnrollmentCallOptions contains the retry settings for each method of CmEnrollmentClient. +type CmEnrollmentCallOptions struct { + UpdateCmEnrollment []gax.CallOption + CalculateEffectiveCmEnrollment []gax.CallOption + GetLocation []gax.CallOption + ListLocations []gax.CallOption + CancelOperation []gax.CallOption + DeleteOperation []gax.CallOption + GetOperation []gax.CallOption + ListOperations []gax.CallOption +} + +func defaultCmEnrollmentGRPCClientOptions() []option.ClientOption { + return []option.ClientOption{ + internaloption.WithDefaultEndpoint("cloudsecuritycompliance.googleapis.com:443"), + internaloption.WithDefaultEndpointTemplate("cloudsecuritycompliance.UNIVERSE_DOMAIN:443"), + internaloption.WithDefaultMTLSEndpoint("cloudsecuritycompliance.mtls.googleapis.com:443"), + internaloption.WithDefaultUniverseDomain("googleapis.com"), + internaloption.WithDefaultAudience("https://cloudsecuritycompliance.googleapis.com/"), + internaloption.WithDefaultScopes(DefaultAuthScopes()...), + internaloption.EnableJwtWithScope(), + internaloption.EnableNewAuthLibrary(), + option.WithGRPCDialOption(grpc.WithDefaultCallOptions( + grpc.MaxCallRecvMsgSize(math.MaxInt32))), + } +} + +func defaultCmEnrollmentCallOptions() *CmEnrollmentCallOptions { + return &CmEnrollmentCallOptions{ + UpdateCmEnrollment: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + CalculateEffectiveCmEnrollment: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + GetLocation: []gax.CallOption{}, + ListLocations: []gax.CallOption{}, + CancelOperation: []gax.CallOption{}, + DeleteOperation: []gax.CallOption{}, + GetOperation: []gax.CallOption{}, + ListOperations: []gax.CallOption{}, + } +} + +func defaultCmEnrollmentRESTCallOptions() *CmEnrollmentCallOptions { + return &CmEnrollmentCallOptions{ + UpdateCmEnrollment: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + CalculateEffectiveCmEnrollment: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + GetLocation: []gax.CallOption{}, + ListLocations: []gax.CallOption{}, + CancelOperation: []gax.CallOption{}, + DeleteOperation: []gax.CallOption{}, + GetOperation: []gax.CallOption{}, + ListOperations: []gax.CallOption{}, + } +} + +// internalCmEnrollmentClient is an interface that defines the methods available from Cloud Security Compliance API. +type internalCmEnrollmentClient interface { + Close() error + setGoogleClientInfo(...string) + Connection() *grpc.ClientConn + UpdateCmEnrollment(context.Context, *cloudsecuritycompliancepb.UpdateCmEnrollmentRequest, ...gax.CallOption) (*cloudsecuritycompliancepb.CmEnrollment, error) + CalculateEffectiveCmEnrollment(context.Context, *cloudsecuritycompliancepb.CalculateEffectiveCmEnrollmentRequest, ...gax.CallOption) (*cloudsecuritycompliancepb.CalculateEffectiveCmEnrollmentResponse, error) + GetLocation(context.Context, *locationpb.GetLocationRequest, ...gax.CallOption) (*locationpb.Location, error) + ListLocations(context.Context, *locationpb.ListLocationsRequest, ...gax.CallOption) *LocationIterator + CancelOperation(context.Context, *longrunningpb.CancelOperationRequest, ...gax.CallOption) error + DeleteOperation(context.Context, *longrunningpb.DeleteOperationRequest, ...gax.CallOption) error + GetOperation(context.Context, *longrunningpb.GetOperationRequest, ...gax.CallOption) (*longrunningpb.Operation, error) + ListOperations(context.Context, *longrunningpb.ListOperationsRequest, ...gax.CallOption) *OperationIterator +} + +// CmEnrollmentClient is a client for interacting with Cloud Security Compliance API. +// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. +// +// Service describing CmEnrollment related RPCs for +// complianceManager. +type CmEnrollmentClient struct { + // The internal transport-dependent client. + internalClient internalCmEnrollmentClient + + // The call options for this service. + CallOptions *CmEnrollmentCallOptions +} + +// Wrapper methods routed to the internal client. + +// Close closes the connection to the API service. The user should invoke this when +// the client is no longer required. +func (c *CmEnrollmentClient) Close() error { + return c.internalClient.Close() +} + +// setGoogleClientInfo sets the name and version of the application in +// the `x-goog-api-client` header passed on each request. Intended for +// use by Google-written clients. +func (c *CmEnrollmentClient) setGoogleClientInfo(keyval ...string) { + c.internalClient.setGoogleClientInfo(keyval...) +} + +// Connection returns a connection to the API service. +// +// Deprecated: Connections are now pooled so this method does not always +// return the same resource. +func (c *CmEnrollmentClient) Connection() *grpc.ClientConn { + return c.internalClient.Connection() +} + +// UpdateCmEnrollment updates the Compliance Manager enrollment for a resource to facilitate +// an audit. +// Use this method to enroll a resource in Compliance Manager or to +// create or update feature-specific configurations. +func (c *CmEnrollmentClient) UpdateCmEnrollment(ctx context.Context, req *cloudsecuritycompliancepb.UpdateCmEnrollmentRequest, opts ...gax.CallOption) (*cloudsecuritycompliancepb.CmEnrollment, error) { + return c.internalClient.UpdateCmEnrollment(ctx, req, opts...) +} + +// CalculateEffectiveCmEnrollment calculates the effective Compliance Manager enrollment for a resource. +// An effective enrollment is either a direct enrollment of a +// resource (if it exists), or an enrollment of the closest parent of a +// resource that’s enrolled in Compliance Manager. +func (c *CmEnrollmentClient) CalculateEffectiveCmEnrollment(ctx context.Context, req *cloudsecuritycompliancepb.CalculateEffectiveCmEnrollmentRequest, opts ...gax.CallOption) (*cloudsecuritycompliancepb.CalculateEffectiveCmEnrollmentResponse, error) { + return c.internalClient.CalculateEffectiveCmEnrollment(ctx, req, opts...) +} + +// GetLocation gets information about a location. +func (c *CmEnrollmentClient) GetLocation(ctx context.Context, req *locationpb.GetLocationRequest, opts ...gax.CallOption) (*locationpb.Location, error) { + return c.internalClient.GetLocation(ctx, req, opts...) +} + +// ListLocations lists information about the supported locations for this service. +func (c *CmEnrollmentClient) ListLocations(ctx context.Context, req *locationpb.ListLocationsRequest, opts ...gax.CallOption) *LocationIterator { + return c.internalClient.ListLocations(ctx, req, opts...) +} + +// CancelOperation is a utility method from google.longrunning.Operations. +func (c *CmEnrollmentClient) CancelOperation(ctx context.Context, req *longrunningpb.CancelOperationRequest, opts ...gax.CallOption) error { + return c.internalClient.CancelOperation(ctx, req, opts...) +} + +// DeleteOperation is a utility method from google.longrunning.Operations. +func (c *CmEnrollmentClient) DeleteOperation(ctx context.Context, req *longrunningpb.DeleteOperationRequest, opts ...gax.CallOption) error { + return c.internalClient.DeleteOperation(ctx, req, opts...) +} + +// GetOperation is a utility method from google.longrunning.Operations. +func (c *CmEnrollmentClient) GetOperation(ctx context.Context, req *longrunningpb.GetOperationRequest, opts ...gax.CallOption) (*longrunningpb.Operation, error) { + return c.internalClient.GetOperation(ctx, req, opts...) +} + +// ListOperations is a utility method from google.longrunning.Operations. +func (c *CmEnrollmentClient) ListOperations(ctx context.Context, req *longrunningpb.ListOperationsRequest, opts ...gax.CallOption) *OperationIterator { + return c.internalClient.ListOperations(ctx, req, opts...) +} + +// cmEnrollmentGRPCClient is a client for interacting with Cloud Security Compliance API over gRPC transport. +// +// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. +type cmEnrollmentGRPCClient struct { + // Connection pool of gRPC connections to the service. + connPool gtransport.ConnPool + + // Points back to the CallOptions field of the containing CmEnrollmentClient + CallOptions **CmEnrollmentCallOptions + + // The gRPC API client. + cmEnrollmentClient cloudsecuritycompliancepb.CmEnrollmentServiceClient + + operationsClient longrunningpb.OperationsClient + + locationsClient locationpb.LocationsClient + + // The x-goog-* metadata to be sent with each request. + xGoogHeaders []string + + logger *slog.Logger +} + +// NewCmEnrollmentClient creates a new cm enrollment service client based on gRPC. +// The returned client must be Closed when it is done being used to clean up its underlying connections. +// +// Service describing CmEnrollment related RPCs for +// complianceManager. +func NewCmEnrollmentClient(ctx context.Context, opts ...option.ClientOption) (*CmEnrollmentClient, error) { + clientOpts := defaultCmEnrollmentGRPCClientOptions() + if newCmEnrollmentClientHook != nil { + hookOpts, err := newCmEnrollmentClientHook(ctx, clientHookParams{}) + if err != nil { + return nil, err + } + clientOpts = append(clientOpts, hookOpts...) + } + + connPool, err := gtransport.DialPool(ctx, append(clientOpts, opts...)...) + if err != nil { + return nil, err + } + client := CmEnrollmentClient{CallOptions: defaultCmEnrollmentCallOptions()} + + c := &cmEnrollmentGRPCClient{ + connPool: connPool, + cmEnrollmentClient: cloudsecuritycompliancepb.NewCmEnrollmentServiceClient(connPool), + CallOptions: &client.CallOptions, + logger: internaloption.GetLogger(opts), + operationsClient: longrunningpb.NewOperationsClient(connPool), + locationsClient: locationpb.NewLocationsClient(connPool), + } + c.setGoogleClientInfo() + + client.internalClient = c + + return &client, nil +} + +// Connection returns a connection to the API service. +// +// Deprecated: Connections are now pooled so this method does not always +// return the same resource. +func (c *cmEnrollmentGRPCClient) Connection() *grpc.ClientConn { + return c.connPool.Conn() +} + +// setGoogleClientInfo sets the name and version of the application in +// the `x-goog-api-client` header passed on each request. Intended for +// use by Google-written clients. +func (c *cmEnrollmentGRPCClient) setGoogleClientInfo(keyval ...string) { + kv := append([]string{"gl-go", gax.GoVersion}, keyval...) + kv = append(kv, "gapic", getVersionClient(), "gax", gax.Version, "grpc", grpc.Version, "pb", protoVersion) + c.xGoogHeaders = []string{ + "x-goog-api-client", gax.XGoogHeader(kv...), + } +} + +// Close closes the connection to the API service. The user should invoke this when +// the client is no longer required. +func (c *cmEnrollmentGRPCClient) Close() error { + return c.connPool.Close() +} + +// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. +type cmEnrollmentRESTClient struct { + // The http endpoint to connect to. + endpoint string + + // The http client. + httpClient *http.Client + + // The x-goog-* headers to be sent with each request. + xGoogHeaders []string + + // Points back to the CallOptions field of the containing CmEnrollmentClient + CallOptions **CmEnrollmentCallOptions + + logger *slog.Logger +} + +// NewCmEnrollmentRESTClient creates a new cm enrollment service rest client. +// +// Service describing CmEnrollment related RPCs for +// complianceManager. +func NewCmEnrollmentRESTClient(ctx context.Context, opts ...option.ClientOption) (*CmEnrollmentClient, error) { + clientOpts := append(defaultCmEnrollmentRESTClientOptions(), opts...) + httpClient, endpoint, err := httptransport.NewClient(ctx, clientOpts...) + if err != nil { + return nil, err + } + + callOpts := defaultCmEnrollmentRESTCallOptions() + c := &cmEnrollmentRESTClient{ + endpoint: endpoint, + httpClient: httpClient, + CallOptions: &callOpts, + logger: internaloption.GetLogger(opts), + } + c.setGoogleClientInfo() + + return &CmEnrollmentClient{internalClient: c, CallOptions: callOpts}, nil +} + +func defaultCmEnrollmentRESTClientOptions() []option.ClientOption { + return []option.ClientOption{ + internaloption.WithDefaultEndpoint("https://cloudsecuritycompliance.googleapis.com"), + internaloption.WithDefaultEndpointTemplate("https://cloudsecuritycompliance.UNIVERSE_DOMAIN"), + internaloption.WithDefaultMTLSEndpoint("https://cloudsecuritycompliance.mtls.googleapis.com"), + internaloption.WithDefaultUniverseDomain("googleapis.com"), + internaloption.WithDefaultAudience("https://cloudsecuritycompliance.googleapis.com/"), + internaloption.WithDefaultScopes(DefaultAuthScopes()...), + internaloption.EnableNewAuthLibrary(), + } +} + +// setGoogleClientInfo sets the name and version of the application in +// the `x-goog-api-client` header passed on each request. Intended for +// use by Google-written clients. +func (c *cmEnrollmentRESTClient) setGoogleClientInfo(keyval ...string) { + kv := append([]string{"gl-go", gax.GoVersion}, keyval...) + kv = append(kv, "gapic", getVersionClient(), "gax", gax.Version, "rest", "UNKNOWN", "pb", protoVersion) + c.xGoogHeaders = []string{ + "x-goog-api-client", gax.XGoogHeader(kv...), + } +} + +// Close closes the connection to the API service. The user should invoke this when +// the client is no longer required. +func (c *cmEnrollmentRESTClient) Close() error { + // Replace httpClient with nil to force cleanup. + c.httpClient = nil + return nil +} + +// Connection returns a connection to the API service. +// +// Deprecated: This method always returns nil. +func (c *cmEnrollmentRESTClient) Connection() *grpc.ClientConn { + return nil +} +func (c *cmEnrollmentGRPCClient) UpdateCmEnrollment(ctx context.Context, req *cloudsecuritycompliancepb.UpdateCmEnrollmentRequest, opts ...gax.CallOption) (*cloudsecuritycompliancepb.CmEnrollment, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "cm_enrollment.name", url.QueryEscape(req.GetCmEnrollment().GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).UpdateCmEnrollment[0:len((*c.CallOptions).UpdateCmEnrollment):len((*c.CallOptions).UpdateCmEnrollment)], opts...) + var resp *cloudsecuritycompliancepb.CmEnrollment + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.cmEnrollmentClient.UpdateCmEnrollment, req, settings.GRPC, c.logger, "UpdateCmEnrollment") + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *cmEnrollmentGRPCClient) CalculateEffectiveCmEnrollment(ctx context.Context, req *cloudsecuritycompliancepb.CalculateEffectiveCmEnrollmentRequest, opts ...gax.CallOption) (*cloudsecuritycompliancepb.CalculateEffectiveCmEnrollmentResponse, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).CalculateEffectiveCmEnrollment[0:len((*c.CallOptions).CalculateEffectiveCmEnrollment):len((*c.CallOptions).CalculateEffectiveCmEnrollment)], opts...) + var resp *cloudsecuritycompliancepb.CalculateEffectiveCmEnrollmentResponse + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.cmEnrollmentClient.CalculateEffectiveCmEnrollment, req, settings.GRPC, c.logger, "CalculateEffectiveCmEnrollment") + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *cmEnrollmentGRPCClient) GetLocation(ctx context.Context, req *locationpb.GetLocationRequest, opts ...gax.CallOption) (*locationpb.Location, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetLocation[0:len((*c.CallOptions).GetLocation):len((*c.CallOptions).GetLocation)], opts...) + var resp *locationpb.Location + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.locationsClient.GetLocation, req, settings.GRPC, c.logger, "GetLocation") + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *cmEnrollmentGRPCClient) ListLocations(ctx context.Context, req *locationpb.ListLocationsRequest, opts ...gax.CallOption) *LocationIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListLocations[0:len((*c.CallOptions).ListLocations):len((*c.CallOptions).ListLocations)], opts...) + it := &LocationIterator{} + req = proto.Clone(req).(*locationpb.ListLocationsRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*locationpb.Location, string, error) { + resp := &locationpb.ListLocationsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.locationsClient.ListLocations, req, settings.GRPC, c.logger, "ListLocations") + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetLocations(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +func (c *cmEnrollmentGRPCClient) CancelOperation(ctx context.Context, req *longrunningpb.CancelOperationRequest, opts ...gax.CallOption) error { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).CancelOperation[0:len((*c.CallOptions).CancelOperation):len((*c.CallOptions).CancelOperation)], opts...) + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + _, err = executeRPC(ctx, c.operationsClient.CancelOperation, req, settings.GRPC, c.logger, "CancelOperation") + return err + }, opts...) + return err +} + +func (c *cmEnrollmentGRPCClient) DeleteOperation(ctx context.Context, req *longrunningpb.DeleteOperationRequest, opts ...gax.CallOption) error { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).DeleteOperation[0:len((*c.CallOptions).DeleteOperation):len((*c.CallOptions).DeleteOperation)], opts...) + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + _, err = executeRPC(ctx, c.operationsClient.DeleteOperation, req, settings.GRPC, c.logger, "DeleteOperation") + return err + }, opts...) + return err +} + +func (c *cmEnrollmentGRPCClient) GetOperation(ctx context.Context, req *longrunningpb.GetOperationRequest, opts ...gax.CallOption) (*longrunningpb.Operation, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetOperation[0:len((*c.CallOptions).GetOperation):len((*c.CallOptions).GetOperation)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.operationsClient.GetOperation, req, settings.GRPC, c.logger, "GetOperation") + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *cmEnrollmentGRPCClient) ListOperations(ctx context.Context, req *longrunningpb.ListOperationsRequest, opts ...gax.CallOption) *OperationIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListOperations[0:len((*c.CallOptions).ListOperations):len((*c.CallOptions).ListOperations)], opts...) + it := &OperationIterator{} + req = proto.Clone(req).(*longrunningpb.ListOperationsRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*longrunningpb.Operation, string, error) { + resp := &longrunningpb.ListOperationsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.operationsClient.ListOperations, req, settings.GRPC, c.logger, "ListOperations") + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetOperations(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +// UpdateCmEnrollment updates the Compliance Manager enrollment for a resource to facilitate +// an audit. +// Use this method to enroll a resource in Compliance Manager or to +// create or update feature-specific configurations. +func (c *cmEnrollmentRESTClient) UpdateCmEnrollment(ctx context.Context, req *cloudsecuritycompliancepb.UpdateCmEnrollmentRequest, opts ...gax.CallOption) (*cloudsecuritycompliancepb.CmEnrollment, error) { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + body := req.GetCmEnrollment() + jsonReq, err := m.Marshal(body) + if err != nil { + return nil, err + } + + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetCmEnrollment().GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetUpdateMask() != nil { + field, err := protojson.Marshal(req.GetUpdateMask()) + if err != nil { + return nil, err + } + params.Add("updateMask", string(field[1:len(field)-1])) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "cm_enrollment.name", url.QueryEscape(req.GetCmEnrollment().GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).UpdateCmEnrollment[0:len((*c.CallOptions).UpdateCmEnrollment):len((*c.CallOptions).UpdateCmEnrollment)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &cloudsecuritycompliancepb.CmEnrollment{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("PATCH", baseUrl.String(), bytes.NewReader(jsonReq)) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, jsonReq, "UpdateCmEnrollment") + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + +// CalculateEffectiveCmEnrollment calculates the effective Compliance Manager enrollment for a resource. +// An effective enrollment is either a direct enrollment of a +// resource (if it exists), or an enrollment of the closest parent of a +// resource that’s enrolled in Compliance Manager. +func (c *cmEnrollmentRESTClient) CalculateEffectiveCmEnrollment(ctx context.Context, req *cloudsecuritycompliancepb.CalculateEffectiveCmEnrollmentRequest, opts ...gax.CallOption) (*cloudsecuritycompliancepb.CalculateEffectiveCmEnrollmentResponse, error) { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1/%v:calculate", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).CalculateEffectiveCmEnrollment[0:len((*c.CallOptions).CalculateEffectiveCmEnrollment):len((*c.CallOptions).CalculateEffectiveCmEnrollment)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &cloudsecuritycompliancepb.CalculateEffectiveCmEnrollmentResponse{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "CalculateEffectiveCmEnrollment") + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + +// GetLocation gets information about a location. +func (c *cmEnrollmentRESTClient) GetLocation(ctx context.Context, req *locationpb.GetLocationRequest, opts ...gax.CallOption) (*locationpb.Location, error) { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).GetLocation[0:len((*c.CallOptions).GetLocation):len((*c.CallOptions).GetLocation)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &locationpb.Location{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "GetLocation") + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + +// ListLocations lists information about the supported locations for this service. +func (c *cmEnrollmentRESTClient) ListLocations(ctx context.Context, req *locationpb.ListLocationsRequest, opts ...gax.CallOption) *LocationIterator { + it := &LocationIterator{} + req = proto.Clone(req).(*locationpb.ListLocationsRequest) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + it.InternalFetch = func(pageSize int, pageToken string) ([]*locationpb.Location, string, error) { + resp := &locationpb.ListLocationsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, "", err + } + baseUrl.Path += fmt.Sprintf("/v1/%v/locations", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetFilter() != "" { + params.Add("filter", fmt.Sprintf("%v", req.GetFilter())) + } + if req.GetPageSize() != 0 { + params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) + } + if req.GetPageToken() != "" { + params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := append(c.xGoogHeaders, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "ListLocations") + if err != nil { + return err + } + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, "", e + } + it.Response = resp + return resp.GetLocations(), resp.GetNextPageToken(), nil + } + + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +// CancelOperation is a utility method from google.longrunning.Operations. +func (c *cmEnrollmentRESTClient) CancelOperation(ctx context.Context, req *longrunningpb.CancelOperationRequest, opts ...gax.CallOption) error { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + jsonReq, err := m.Marshal(req) + if err != nil { + return err + } + + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return err + } + baseUrl.Path += fmt.Sprintf("/v1/%v:cancel", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + return gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + _, err = executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, jsonReq, "CancelOperation") + return err + }, opts...) +} + +// DeleteOperation is a utility method from google.longrunning.Operations. +func (c *cmEnrollmentRESTClient) DeleteOperation(ctx context.Context, req *longrunningpb.DeleteOperationRequest, opts ...gax.CallOption) error { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return err + } + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + return gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("DELETE", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + _, err = executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "DeleteOperation") + return err + }, opts...) +} + +// GetOperation is a utility method from google.longrunning.Operations. +func (c *cmEnrollmentRESTClient) GetOperation(ctx context.Context, req *longrunningpb.GetOperationRequest, opts ...gax.CallOption) (*longrunningpb.Operation, error) { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).GetOperation[0:len((*c.CallOptions).GetOperation):len((*c.CallOptions).GetOperation)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &longrunningpb.Operation{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "GetOperation") + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + +// ListOperations is a utility method from google.longrunning.Operations. +func (c *cmEnrollmentRESTClient) ListOperations(ctx context.Context, req *longrunningpb.ListOperationsRequest, opts ...gax.CallOption) *OperationIterator { + it := &OperationIterator{} + req = proto.Clone(req).(*longrunningpb.ListOperationsRequest) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + it.InternalFetch = func(pageSize int, pageToken string) ([]*longrunningpb.Operation, string, error) { + resp := &longrunningpb.ListOperationsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, "", err + } + baseUrl.Path += fmt.Sprintf("/v1/%v/operations", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetFilter() != "" { + params.Add("filter", fmt.Sprintf("%v", req.GetFilter())) + } + if req.GetPageSize() != 0 { + params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) + } + if req.GetPageToken() != "" { + params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) + } + if req.GetReturnPartialSuccess() { + params.Add("returnPartialSuccess", fmt.Sprintf("%v", req.GetReturnPartialSuccess())) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := append(c.xGoogHeaders, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "ListOperations") + if err != nil { + return err + } + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, "", e + } + it.Response = resp + return resp.GetOperations(), resp.GetNextPageToken(), nil + } + + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} diff --git a/cloudsecuritycompliance/apiv1/cm_enrollment_client_example_go123_test.go b/cloudsecuritycompliance/apiv1/cm_enrollment_client_example_go123_test.go new file mode 100644 index 000000000000..e0357b0f7bd1 --- /dev/null +++ b/cloudsecuritycompliance/apiv1/cm_enrollment_client_example_go123_test.go @@ -0,0 +1,79 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +//go:build go1.23 + +package cloudsecuritycompliance_test + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" + locationpb "google.golang.org/genproto/googleapis/cloud/location" +) + +func ExampleCmEnrollmentClient_ListLocations_all() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewCmEnrollmentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &locationpb.ListLocationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/google.golang.org/genproto/googleapis/cloud/location#ListLocationsRequest. + } + for resp, err := range c.ListLocations(ctx, req).All() { + if err != nil { + // TODO: Handle error and break/return/continue. Iteration will stop after any error. + } + // TODO: Use resp. + _ = resp + } +} + +func ExampleCmEnrollmentClient_ListOperations_all() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewCmEnrollmentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.ListOperationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#ListOperationsRequest. + } + for resp, err := range c.ListOperations(ctx, req).All() { + if err != nil { + // TODO: Handle error and break/return/continue. Iteration will stop after any error. + } + // TODO: Use resp. + _ = resp + } +} diff --git a/cloudsecuritycompliance/apiv1/cm_enrollment_client_example_test.go b/cloudsecuritycompliance/apiv1/cm_enrollment_client_example_test.go new file mode 100644 index 000000000000..1f91464caaa3 --- /dev/null +++ b/cloudsecuritycompliance/apiv1/cm_enrollment_client_example_test.go @@ -0,0 +1,281 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +package cloudsecuritycompliance_test + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + cloudsecuritycompliancepb "cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" + "google.golang.org/api/iterator" + locationpb "google.golang.org/genproto/googleapis/cloud/location" +) + +func ExampleNewCmEnrollmentClient() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewCmEnrollmentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + // TODO: Use client. + _ = c +} + +func ExampleNewCmEnrollmentRESTClient() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewCmEnrollmentRESTClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + // TODO: Use client. + _ = c +} + +func ExampleCmEnrollmentClient_CalculateEffectiveCmEnrollment() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewCmEnrollmentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.CalculateEffectiveCmEnrollmentRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#CalculateEffectiveCmEnrollmentRequest. + } + resp, err := c.CalculateEffectiveCmEnrollment(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleCmEnrollmentClient_UpdateCmEnrollment() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewCmEnrollmentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.UpdateCmEnrollmentRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#UpdateCmEnrollmentRequest. + } + resp, err := c.UpdateCmEnrollment(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleCmEnrollmentClient_GetLocation() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewCmEnrollmentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &locationpb.GetLocationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/google.golang.org/genproto/googleapis/cloud/location#GetLocationRequest. + } + resp, err := c.GetLocation(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleCmEnrollmentClient_ListLocations() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewCmEnrollmentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &locationpb.ListLocationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/google.golang.org/genproto/googleapis/cloud/location#ListLocationsRequest. + } + it := c.ListLocations(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*locationpb.ListLocationsResponse) + } +} + +func ExampleCmEnrollmentClient_CancelOperation() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewCmEnrollmentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.CancelOperationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#CancelOperationRequest. + } + err = c.CancelOperation(ctx, req) + if err != nil { + // TODO: Handle error. + } +} + +func ExampleCmEnrollmentClient_DeleteOperation() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewCmEnrollmentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.DeleteOperationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#DeleteOperationRequest. + } + err = c.DeleteOperation(ctx, req) + if err != nil { + // TODO: Handle error. + } +} + +func ExampleCmEnrollmentClient_GetOperation() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewCmEnrollmentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.GetOperationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#GetOperationRequest. + } + resp, err := c.GetOperation(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleCmEnrollmentClient_ListOperations() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewCmEnrollmentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.ListOperationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#ListOperationsRequest. + } + it := c.ListOperations(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*longrunningpb.ListOperationsResponse) + } +} diff --git a/cloudsecuritycompliance/apiv1/config_client.go b/cloudsecuritycompliance/apiv1/config_client.go new file mode 100644 index 000000000000..02f26cebbde2 --- /dev/null +++ b/cloudsecuritycompliance/apiv1/config_client.go @@ -0,0 +1,1957 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +package cloudsecuritycompliance + +import ( + "bytes" + "context" + "fmt" + "log/slog" + "math" + "net/http" + "net/url" + "time" + + cloudsecuritycompliancepb "cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" + gax "github.com/googleapis/gax-go/v2" + "google.golang.org/api/iterator" + "google.golang.org/api/option" + "google.golang.org/api/option/internaloption" + gtransport "google.golang.org/api/transport/grpc" + httptransport "google.golang.org/api/transport/http" + locationpb "google.golang.org/genproto/googleapis/cloud/location" + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/protobuf/encoding/protojson" + "google.golang.org/protobuf/proto" +) + +var newConfigClientHook clientHook + +// ConfigCallOptions contains the retry settings for each method of ConfigClient. +type ConfigCallOptions struct { + ListFrameworks []gax.CallOption + GetFramework []gax.CallOption + CreateFramework []gax.CallOption + UpdateFramework []gax.CallOption + DeleteFramework []gax.CallOption + ListCloudControls []gax.CallOption + GetCloudControl []gax.CallOption + CreateCloudControl []gax.CallOption + UpdateCloudControl []gax.CallOption + DeleteCloudControl []gax.CallOption + GetLocation []gax.CallOption + ListLocations []gax.CallOption + CancelOperation []gax.CallOption + DeleteOperation []gax.CallOption + GetOperation []gax.CallOption + ListOperations []gax.CallOption +} + +func defaultConfigGRPCClientOptions() []option.ClientOption { + return []option.ClientOption{ + internaloption.WithDefaultEndpoint("cloudsecuritycompliance.googleapis.com:443"), + internaloption.WithDefaultEndpointTemplate("cloudsecuritycompliance.UNIVERSE_DOMAIN:443"), + internaloption.WithDefaultMTLSEndpoint("cloudsecuritycompliance.mtls.googleapis.com:443"), + internaloption.WithDefaultUniverseDomain("googleapis.com"), + internaloption.WithDefaultAudience("https://cloudsecuritycompliance.googleapis.com/"), + internaloption.WithDefaultScopes(DefaultAuthScopes()...), + internaloption.EnableJwtWithScope(), + internaloption.EnableNewAuthLibrary(), + option.WithGRPCDialOption(grpc.WithDefaultCallOptions( + grpc.MaxCallRecvMsgSize(math.MaxInt32))), + } +} + +func defaultConfigCallOptions() *ConfigCallOptions { + return &ConfigCallOptions{ + ListFrameworks: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + GetFramework: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + CreateFramework: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, + UpdateFramework: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, + DeleteFramework: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, + ListCloudControls: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + GetCloudControl: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + CreateCloudControl: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, + UpdateCloudControl: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, + DeleteCloudControl: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, + GetLocation: []gax.CallOption{}, + ListLocations: []gax.CallOption{}, + CancelOperation: []gax.CallOption{}, + DeleteOperation: []gax.CallOption{}, + GetOperation: []gax.CallOption{}, + ListOperations: []gax.CallOption{}, + } +} + +func defaultConfigRESTCallOptions() *ConfigCallOptions { + return &ConfigCallOptions{ + ListFrameworks: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + GetFramework: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + CreateFramework: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, + UpdateFramework: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, + DeleteFramework: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, + ListCloudControls: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + GetCloudControl: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + CreateCloudControl: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, + UpdateCloudControl: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, + DeleteCloudControl: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, + GetLocation: []gax.CallOption{}, + ListLocations: []gax.CallOption{}, + CancelOperation: []gax.CallOption{}, + DeleteOperation: []gax.CallOption{}, + GetOperation: []gax.CallOption{}, + ListOperations: []gax.CallOption{}, + } +} + +// internalConfigClient is an interface that defines the methods available from Cloud Security Compliance API. +type internalConfigClient interface { + Close() error + setGoogleClientInfo(...string) + Connection() *grpc.ClientConn + ListFrameworks(context.Context, *cloudsecuritycompliancepb.ListFrameworksRequest, ...gax.CallOption) *FrameworkIterator + GetFramework(context.Context, *cloudsecuritycompliancepb.GetFrameworkRequest, ...gax.CallOption) (*cloudsecuritycompliancepb.Framework, error) + CreateFramework(context.Context, *cloudsecuritycompliancepb.CreateFrameworkRequest, ...gax.CallOption) (*cloudsecuritycompliancepb.Framework, error) + UpdateFramework(context.Context, *cloudsecuritycompliancepb.UpdateFrameworkRequest, ...gax.CallOption) (*cloudsecuritycompliancepb.Framework, error) + DeleteFramework(context.Context, *cloudsecuritycompliancepb.DeleteFrameworkRequest, ...gax.CallOption) error + ListCloudControls(context.Context, *cloudsecuritycompliancepb.ListCloudControlsRequest, ...gax.CallOption) *CloudControlIterator + GetCloudControl(context.Context, *cloudsecuritycompliancepb.GetCloudControlRequest, ...gax.CallOption) (*cloudsecuritycompliancepb.CloudControl, error) + CreateCloudControl(context.Context, *cloudsecuritycompliancepb.CreateCloudControlRequest, ...gax.CallOption) (*cloudsecuritycompliancepb.CloudControl, error) + UpdateCloudControl(context.Context, *cloudsecuritycompliancepb.UpdateCloudControlRequest, ...gax.CallOption) (*cloudsecuritycompliancepb.CloudControl, error) + DeleteCloudControl(context.Context, *cloudsecuritycompliancepb.DeleteCloudControlRequest, ...gax.CallOption) error + GetLocation(context.Context, *locationpb.GetLocationRequest, ...gax.CallOption) (*locationpb.Location, error) + ListLocations(context.Context, *locationpb.ListLocationsRequest, ...gax.CallOption) *LocationIterator + CancelOperation(context.Context, *longrunningpb.CancelOperationRequest, ...gax.CallOption) error + DeleteOperation(context.Context, *longrunningpb.DeleteOperationRequest, ...gax.CallOption) error + GetOperation(context.Context, *longrunningpb.GetOperationRequest, ...gax.CallOption) (*longrunningpb.Operation, error) + ListOperations(context.Context, *longrunningpb.ListOperationsRequest, ...gax.CallOption) *OperationIterator +} + +// ConfigClient is a client for interacting with Cloud Security Compliance API. +// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. +// +// Config Service manages compliance frameworks, cloud controls, and their +// configurations. +type ConfigClient struct { + // The internal transport-dependent client. + internalClient internalConfigClient + + // The call options for this service. + CallOptions *ConfigCallOptions +} + +// Wrapper methods routed to the internal client. + +// Close closes the connection to the API service. The user should invoke this when +// the client is no longer required. +func (c *ConfigClient) Close() error { + return c.internalClient.Close() +} + +// setGoogleClientInfo sets the name and version of the application in +// the `x-goog-api-client` header passed on each request. Intended for +// use by Google-written clients. +func (c *ConfigClient) setGoogleClientInfo(keyval ...string) { + c.internalClient.setGoogleClientInfo(keyval...) +} + +// Connection returns a connection to the API service. +// +// Deprecated: Connections are now pooled so this method does not always +// return the same resource. +func (c *ConfigClient) Connection() *grpc.ClientConn { + return c.internalClient.Connection() +} + +// ListFrameworks lists the frameworks (both built-in and custom) that are available within +// the parent resource. The latest major version of each framework is +// returned. +// This method supports pagination. +func (c *ConfigClient) ListFrameworks(ctx context.Context, req *cloudsecuritycompliancepb.ListFrameworksRequest, opts ...gax.CallOption) *FrameworkIterator { + return c.internalClient.ListFrameworks(ctx, req, opts...) +} + +// GetFramework gets details about a framework. +// This method retrieves the latest major version of the framework. +// +// To retrieve a specific major version, include major_revision_id in +// the request. +func (c *ConfigClient) GetFramework(ctx context.Context, req *cloudsecuritycompliancepb.GetFrameworkRequest, opts ...gax.CallOption) (*cloudsecuritycompliancepb.Framework, error) { + return c.internalClient.GetFramework(ctx, req, opts...) +} + +// CreateFramework creates a custom framework in a given parent resource. +// You can’t create built-in frameworks because those are managed by +// Google. +func (c *ConfigClient) CreateFramework(ctx context.Context, req *cloudsecuritycompliancepb.CreateFrameworkRequest, opts ...gax.CallOption) (*cloudsecuritycompliancepb.Framework, error) { + return c.internalClient.CreateFramework(ctx, req, opts...) +} + +// UpdateFramework updates a custom framework. +// This method allows for partial updates of a framework. Use the +// update_mask to specify which fields to update. Consider the following: +// +// If you provide an update_mask, only the fields that are specified +// in the mask are updated. +// +// If you don’t provide an update_mask, all the fields that are present +// in the request’s framework body are used to overwrite the existing +// resource. +// +// You can only update frameworks with the CUSTOM type. +// A successful update creates a new version of the framework. +func (c *ConfigClient) UpdateFramework(ctx context.Context, req *cloudsecuritycompliancepb.UpdateFrameworkRequest, opts ...gax.CallOption) (*cloudsecuritycompliancepb.Framework, error) { + return c.internalClient.UpdateFramework(ctx, req, opts...) +} + +// DeleteFramework deletes a custom framework, including all its major and +// minor revisions. Consider the following: +// +// You can’t delete built-in frameworks. You can only delete frameworks +// with type CUSTOM. +// +// You can’t delete frameworks that are deployed to a resource. +// +// You can’t restore a deleted framework. This action is permanent. +func (c *ConfigClient) DeleteFramework(ctx context.Context, req *cloudsecuritycompliancepb.DeleteFrameworkRequest, opts ...gax.CallOption) error { + return c.internalClient.DeleteFramework(ctx, req, opts...) +} + +// ListCloudControls lists the cloud controls (both built-in and custom) that are available +// in a given parent resource. The latest major version of each cloud control +// is returned. +// This method supports pagination. +func (c *ConfigClient) ListCloudControls(ctx context.Context, req *cloudsecuritycompliancepb.ListCloudControlsRequest, opts ...gax.CallOption) *CloudControlIterator { + return c.internalClient.ListCloudControls(ctx, req, opts...) +} + +// GetCloudControl gets details about a cloud control. +// This method retrieves the latest major version of a cloud control that +// you identify by name. +// +// By default, the latest major version of the cloud control is returned. +// To retrieve a specific major version, include major_revision_id in +// the request. +func (c *ConfigClient) GetCloudControl(ctx context.Context, req *cloudsecuritycompliancepb.GetCloudControlRequest, opts ...gax.CallOption) (*cloudsecuritycompliancepb.CloudControl, error) { + return c.internalClient.GetCloudControl(ctx, req, opts...) +} + +// CreateCloudControl creates a custom cloud control in a given parent +// resource. +// You can’t create built-in cloud controls because those are managed by +// Google. +func (c *ConfigClient) CreateCloudControl(ctx context.Context, req *cloudsecuritycompliancepb.CreateCloudControlRequest, opts ...gax.CallOption) (*cloudsecuritycompliancepb.CloudControl, error) { + return c.internalClient.CreateCloudControl(ctx, req, opts...) +} + +// UpdateCloudControl updates a custom cloud control. +// This method allows for partial updates of a cloud control. Use the +// update_mask to specify which fields to update. Consider the following: +// +// If you provide an update_mask, only the fields that are specified +// in the mask are updated. +// +// If you don’t provide an update_mask, all the fields that are present +// in the request’s cloud_control body are used to overwrite the existing +// resource. +// +// You can only update cloud controls with the CUSTOM type. +// A successful update creates a new version of the cloud control. +func (c *ConfigClient) UpdateCloudControl(ctx context.Context, req *cloudsecuritycompliancepb.UpdateCloudControlRequest, opts ...gax.CallOption) (*cloudsecuritycompliancepb.CloudControl, error) { + return c.internalClient.UpdateCloudControl(ctx, req, opts...) +} + +// DeleteCloudControl deletes a custom cloud control, including all its +// major and minor revisions. Consider the following: +// +// You can’t delete built-in cloud controls. You can only delete cloud +// controls with type CUSTOM. +// +// You can’t delete cloud controls if any of the versions are referenced +// by a framework. +// +// You can’t restore a deleted cloud control. This action is permanent. +func (c *ConfigClient) DeleteCloudControl(ctx context.Context, req *cloudsecuritycompliancepb.DeleteCloudControlRequest, opts ...gax.CallOption) error { + return c.internalClient.DeleteCloudControl(ctx, req, opts...) +} + +// GetLocation gets information about a location. +func (c *ConfigClient) GetLocation(ctx context.Context, req *locationpb.GetLocationRequest, opts ...gax.CallOption) (*locationpb.Location, error) { + return c.internalClient.GetLocation(ctx, req, opts...) +} + +// ListLocations lists information about the supported locations for this service. +func (c *ConfigClient) ListLocations(ctx context.Context, req *locationpb.ListLocationsRequest, opts ...gax.CallOption) *LocationIterator { + return c.internalClient.ListLocations(ctx, req, opts...) +} + +// CancelOperation is a utility method from google.longrunning.Operations. +func (c *ConfigClient) CancelOperation(ctx context.Context, req *longrunningpb.CancelOperationRequest, opts ...gax.CallOption) error { + return c.internalClient.CancelOperation(ctx, req, opts...) +} + +// DeleteOperation is a utility method from google.longrunning.Operations. +func (c *ConfigClient) DeleteOperation(ctx context.Context, req *longrunningpb.DeleteOperationRequest, opts ...gax.CallOption) error { + return c.internalClient.DeleteOperation(ctx, req, opts...) +} + +// GetOperation is a utility method from google.longrunning.Operations. +func (c *ConfigClient) GetOperation(ctx context.Context, req *longrunningpb.GetOperationRequest, opts ...gax.CallOption) (*longrunningpb.Operation, error) { + return c.internalClient.GetOperation(ctx, req, opts...) +} + +// ListOperations is a utility method from google.longrunning.Operations. +func (c *ConfigClient) ListOperations(ctx context.Context, req *longrunningpb.ListOperationsRequest, opts ...gax.CallOption) *OperationIterator { + return c.internalClient.ListOperations(ctx, req, opts...) +} + +// configGRPCClient is a client for interacting with Cloud Security Compliance API over gRPC transport. +// +// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. +type configGRPCClient struct { + // Connection pool of gRPC connections to the service. + connPool gtransport.ConnPool + + // Points back to the CallOptions field of the containing ConfigClient + CallOptions **ConfigCallOptions + + // The gRPC API client. + configClient cloudsecuritycompliancepb.ConfigClient + + operationsClient longrunningpb.OperationsClient + + locationsClient locationpb.LocationsClient + + // The x-goog-* metadata to be sent with each request. + xGoogHeaders []string + + logger *slog.Logger +} + +// NewConfigClient creates a new config client based on gRPC. +// The returned client must be Closed when it is done being used to clean up its underlying connections. +// +// Config Service manages compliance frameworks, cloud controls, and their +// configurations. +func NewConfigClient(ctx context.Context, opts ...option.ClientOption) (*ConfigClient, error) { + clientOpts := defaultConfigGRPCClientOptions() + if newConfigClientHook != nil { + hookOpts, err := newConfigClientHook(ctx, clientHookParams{}) + if err != nil { + return nil, err + } + clientOpts = append(clientOpts, hookOpts...) + } + + connPool, err := gtransport.DialPool(ctx, append(clientOpts, opts...)...) + if err != nil { + return nil, err + } + client := ConfigClient{CallOptions: defaultConfigCallOptions()} + + c := &configGRPCClient{ + connPool: connPool, + configClient: cloudsecuritycompliancepb.NewConfigClient(connPool), + CallOptions: &client.CallOptions, + logger: internaloption.GetLogger(opts), + operationsClient: longrunningpb.NewOperationsClient(connPool), + locationsClient: locationpb.NewLocationsClient(connPool), + } + c.setGoogleClientInfo() + + client.internalClient = c + + return &client, nil +} + +// Connection returns a connection to the API service. +// +// Deprecated: Connections are now pooled so this method does not always +// return the same resource. +func (c *configGRPCClient) Connection() *grpc.ClientConn { + return c.connPool.Conn() +} + +// setGoogleClientInfo sets the name and version of the application in +// the `x-goog-api-client` header passed on each request. Intended for +// use by Google-written clients. +func (c *configGRPCClient) setGoogleClientInfo(keyval ...string) { + kv := append([]string{"gl-go", gax.GoVersion}, keyval...) + kv = append(kv, "gapic", getVersionClient(), "gax", gax.Version, "grpc", grpc.Version, "pb", protoVersion) + c.xGoogHeaders = []string{ + "x-goog-api-client", gax.XGoogHeader(kv...), + } +} + +// Close closes the connection to the API service. The user should invoke this when +// the client is no longer required. +func (c *configGRPCClient) Close() error { + return c.connPool.Close() +} + +// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. +type configRESTClient struct { + // The http endpoint to connect to. + endpoint string + + // The http client. + httpClient *http.Client + + // The x-goog-* headers to be sent with each request. + xGoogHeaders []string + + // Points back to the CallOptions field of the containing ConfigClient + CallOptions **ConfigCallOptions + + logger *slog.Logger +} + +// NewConfigRESTClient creates a new config rest client. +// +// Config Service manages compliance frameworks, cloud controls, and their +// configurations. +func NewConfigRESTClient(ctx context.Context, opts ...option.ClientOption) (*ConfigClient, error) { + clientOpts := append(defaultConfigRESTClientOptions(), opts...) + httpClient, endpoint, err := httptransport.NewClient(ctx, clientOpts...) + if err != nil { + return nil, err + } + + callOpts := defaultConfigRESTCallOptions() + c := &configRESTClient{ + endpoint: endpoint, + httpClient: httpClient, + CallOptions: &callOpts, + logger: internaloption.GetLogger(opts), + } + c.setGoogleClientInfo() + + return &ConfigClient{internalClient: c, CallOptions: callOpts}, nil +} + +func defaultConfigRESTClientOptions() []option.ClientOption { + return []option.ClientOption{ + internaloption.WithDefaultEndpoint("https://cloudsecuritycompliance.googleapis.com"), + internaloption.WithDefaultEndpointTemplate("https://cloudsecuritycompliance.UNIVERSE_DOMAIN"), + internaloption.WithDefaultMTLSEndpoint("https://cloudsecuritycompliance.mtls.googleapis.com"), + internaloption.WithDefaultUniverseDomain("googleapis.com"), + internaloption.WithDefaultAudience("https://cloudsecuritycompliance.googleapis.com/"), + internaloption.WithDefaultScopes(DefaultAuthScopes()...), + internaloption.EnableNewAuthLibrary(), + } +} + +// setGoogleClientInfo sets the name and version of the application in +// the `x-goog-api-client` header passed on each request. Intended for +// use by Google-written clients. +func (c *configRESTClient) setGoogleClientInfo(keyval ...string) { + kv := append([]string{"gl-go", gax.GoVersion}, keyval...) + kv = append(kv, "gapic", getVersionClient(), "gax", gax.Version, "rest", "UNKNOWN", "pb", protoVersion) + c.xGoogHeaders = []string{ + "x-goog-api-client", gax.XGoogHeader(kv...), + } +} + +// Close closes the connection to the API service. The user should invoke this when +// the client is no longer required. +func (c *configRESTClient) Close() error { + // Replace httpClient with nil to force cleanup. + c.httpClient = nil + return nil +} + +// Connection returns a connection to the API service. +// +// Deprecated: This method always returns nil. +func (c *configRESTClient) Connection() *grpc.ClientConn { + return nil +} +func (c *configGRPCClient) ListFrameworks(ctx context.Context, req *cloudsecuritycompliancepb.ListFrameworksRequest, opts ...gax.CallOption) *FrameworkIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListFrameworks[0:len((*c.CallOptions).ListFrameworks):len((*c.CallOptions).ListFrameworks)], opts...) + it := &FrameworkIterator{} + req = proto.Clone(req).(*cloudsecuritycompliancepb.ListFrameworksRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*cloudsecuritycompliancepb.Framework, string, error) { + resp := &cloudsecuritycompliancepb.ListFrameworksResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.configClient.ListFrameworks, req, settings.GRPC, c.logger, "ListFrameworks") + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetFrameworks(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +func (c *configGRPCClient) GetFramework(ctx context.Context, req *cloudsecuritycompliancepb.GetFrameworkRequest, opts ...gax.CallOption) (*cloudsecuritycompliancepb.Framework, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetFramework[0:len((*c.CallOptions).GetFramework):len((*c.CallOptions).GetFramework)], opts...) + var resp *cloudsecuritycompliancepb.Framework + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.configClient.GetFramework, req, settings.GRPC, c.logger, "GetFramework") + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *configGRPCClient) CreateFramework(ctx context.Context, req *cloudsecuritycompliancepb.CreateFrameworkRequest, opts ...gax.CallOption) (*cloudsecuritycompliancepb.Framework, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).CreateFramework[0:len((*c.CallOptions).CreateFramework):len((*c.CallOptions).CreateFramework)], opts...) + var resp *cloudsecuritycompliancepb.Framework + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.configClient.CreateFramework, req, settings.GRPC, c.logger, "CreateFramework") + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *configGRPCClient) UpdateFramework(ctx context.Context, req *cloudsecuritycompliancepb.UpdateFrameworkRequest, opts ...gax.CallOption) (*cloudsecuritycompliancepb.Framework, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "framework.name", url.QueryEscape(req.GetFramework().GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).UpdateFramework[0:len((*c.CallOptions).UpdateFramework):len((*c.CallOptions).UpdateFramework)], opts...) + var resp *cloudsecuritycompliancepb.Framework + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.configClient.UpdateFramework, req, settings.GRPC, c.logger, "UpdateFramework") + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *configGRPCClient) DeleteFramework(ctx context.Context, req *cloudsecuritycompliancepb.DeleteFrameworkRequest, opts ...gax.CallOption) error { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).DeleteFramework[0:len((*c.CallOptions).DeleteFramework):len((*c.CallOptions).DeleteFramework)], opts...) + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + _, err = executeRPC(ctx, c.configClient.DeleteFramework, req, settings.GRPC, c.logger, "DeleteFramework") + return err + }, opts...) + return err +} + +func (c *configGRPCClient) ListCloudControls(ctx context.Context, req *cloudsecuritycompliancepb.ListCloudControlsRequest, opts ...gax.CallOption) *CloudControlIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListCloudControls[0:len((*c.CallOptions).ListCloudControls):len((*c.CallOptions).ListCloudControls)], opts...) + it := &CloudControlIterator{} + req = proto.Clone(req).(*cloudsecuritycompliancepb.ListCloudControlsRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*cloudsecuritycompliancepb.CloudControl, string, error) { + resp := &cloudsecuritycompliancepb.ListCloudControlsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.configClient.ListCloudControls, req, settings.GRPC, c.logger, "ListCloudControls") + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetCloudControls(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +func (c *configGRPCClient) GetCloudControl(ctx context.Context, req *cloudsecuritycompliancepb.GetCloudControlRequest, opts ...gax.CallOption) (*cloudsecuritycompliancepb.CloudControl, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetCloudControl[0:len((*c.CallOptions).GetCloudControl):len((*c.CallOptions).GetCloudControl)], opts...) + var resp *cloudsecuritycompliancepb.CloudControl + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.configClient.GetCloudControl, req, settings.GRPC, c.logger, "GetCloudControl") + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *configGRPCClient) CreateCloudControl(ctx context.Context, req *cloudsecuritycompliancepb.CreateCloudControlRequest, opts ...gax.CallOption) (*cloudsecuritycompliancepb.CloudControl, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).CreateCloudControl[0:len((*c.CallOptions).CreateCloudControl):len((*c.CallOptions).CreateCloudControl)], opts...) + var resp *cloudsecuritycompliancepb.CloudControl + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.configClient.CreateCloudControl, req, settings.GRPC, c.logger, "CreateCloudControl") + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *configGRPCClient) UpdateCloudControl(ctx context.Context, req *cloudsecuritycompliancepb.UpdateCloudControlRequest, opts ...gax.CallOption) (*cloudsecuritycompliancepb.CloudControl, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "cloud_control.name", url.QueryEscape(req.GetCloudControl().GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).UpdateCloudControl[0:len((*c.CallOptions).UpdateCloudControl):len((*c.CallOptions).UpdateCloudControl)], opts...) + var resp *cloudsecuritycompliancepb.CloudControl + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.configClient.UpdateCloudControl, req, settings.GRPC, c.logger, "UpdateCloudControl") + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *configGRPCClient) DeleteCloudControl(ctx context.Context, req *cloudsecuritycompliancepb.DeleteCloudControlRequest, opts ...gax.CallOption) error { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).DeleteCloudControl[0:len((*c.CallOptions).DeleteCloudControl):len((*c.CallOptions).DeleteCloudControl)], opts...) + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + _, err = executeRPC(ctx, c.configClient.DeleteCloudControl, req, settings.GRPC, c.logger, "DeleteCloudControl") + return err + }, opts...) + return err +} + +func (c *configGRPCClient) GetLocation(ctx context.Context, req *locationpb.GetLocationRequest, opts ...gax.CallOption) (*locationpb.Location, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetLocation[0:len((*c.CallOptions).GetLocation):len((*c.CallOptions).GetLocation)], opts...) + var resp *locationpb.Location + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.locationsClient.GetLocation, req, settings.GRPC, c.logger, "GetLocation") + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *configGRPCClient) ListLocations(ctx context.Context, req *locationpb.ListLocationsRequest, opts ...gax.CallOption) *LocationIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListLocations[0:len((*c.CallOptions).ListLocations):len((*c.CallOptions).ListLocations)], opts...) + it := &LocationIterator{} + req = proto.Clone(req).(*locationpb.ListLocationsRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*locationpb.Location, string, error) { + resp := &locationpb.ListLocationsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.locationsClient.ListLocations, req, settings.GRPC, c.logger, "ListLocations") + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetLocations(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +func (c *configGRPCClient) CancelOperation(ctx context.Context, req *longrunningpb.CancelOperationRequest, opts ...gax.CallOption) error { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).CancelOperation[0:len((*c.CallOptions).CancelOperation):len((*c.CallOptions).CancelOperation)], opts...) + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + _, err = executeRPC(ctx, c.operationsClient.CancelOperation, req, settings.GRPC, c.logger, "CancelOperation") + return err + }, opts...) + return err +} + +func (c *configGRPCClient) DeleteOperation(ctx context.Context, req *longrunningpb.DeleteOperationRequest, opts ...gax.CallOption) error { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).DeleteOperation[0:len((*c.CallOptions).DeleteOperation):len((*c.CallOptions).DeleteOperation)], opts...) + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + _, err = executeRPC(ctx, c.operationsClient.DeleteOperation, req, settings.GRPC, c.logger, "DeleteOperation") + return err + }, opts...) + return err +} + +func (c *configGRPCClient) GetOperation(ctx context.Context, req *longrunningpb.GetOperationRequest, opts ...gax.CallOption) (*longrunningpb.Operation, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetOperation[0:len((*c.CallOptions).GetOperation):len((*c.CallOptions).GetOperation)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.operationsClient.GetOperation, req, settings.GRPC, c.logger, "GetOperation") + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *configGRPCClient) ListOperations(ctx context.Context, req *longrunningpb.ListOperationsRequest, opts ...gax.CallOption) *OperationIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListOperations[0:len((*c.CallOptions).ListOperations):len((*c.CallOptions).ListOperations)], opts...) + it := &OperationIterator{} + req = proto.Clone(req).(*longrunningpb.ListOperationsRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*longrunningpb.Operation, string, error) { + resp := &longrunningpb.ListOperationsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.operationsClient.ListOperations, req, settings.GRPC, c.logger, "ListOperations") + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetOperations(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +// ListFrameworks lists the frameworks (both built-in and custom) that are available within +// the parent resource. The latest major version of each framework is +// returned. +// This method supports pagination. +func (c *configRESTClient) ListFrameworks(ctx context.Context, req *cloudsecuritycompliancepb.ListFrameworksRequest, opts ...gax.CallOption) *FrameworkIterator { + it := &FrameworkIterator{} + req = proto.Clone(req).(*cloudsecuritycompliancepb.ListFrameworksRequest) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + it.InternalFetch = func(pageSize int, pageToken string) ([]*cloudsecuritycompliancepb.Framework, string, error) { + resp := &cloudsecuritycompliancepb.ListFrameworksResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, "", err + } + baseUrl.Path += fmt.Sprintf("/v1/%v/frameworks", req.GetParent()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetPageSize() != 0 { + params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) + } + if req.GetPageToken() != "" { + params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := append(c.xGoogHeaders, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "ListFrameworks") + if err != nil { + return err + } + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, "", e + } + it.Response = resp + return resp.GetFrameworks(), resp.GetNextPageToken(), nil + } + + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +// GetFramework gets details about a framework. +// This method retrieves the latest major version of the framework. +// +// To retrieve a specific major version, include major_revision_id in +// the request. +func (c *configRESTClient) GetFramework(ctx context.Context, req *cloudsecuritycompliancepb.GetFrameworkRequest, opts ...gax.CallOption) (*cloudsecuritycompliancepb.Framework, error) { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetMajorRevisionId() != 0 { + params.Add("majorRevisionId", fmt.Sprintf("%v", req.GetMajorRevisionId())) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).GetFramework[0:len((*c.CallOptions).GetFramework):len((*c.CallOptions).GetFramework)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &cloudsecuritycompliancepb.Framework{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "GetFramework") + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + +// CreateFramework creates a custom framework in a given parent resource. +// You can’t create built-in frameworks because those are managed by +// Google. +func (c *configRESTClient) CreateFramework(ctx context.Context, req *cloudsecuritycompliancepb.CreateFrameworkRequest, opts ...gax.CallOption) (*cloudsecuritycompliancepb.Framework, error) { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + body := req.GetFramework() + jsonReq, err := m.Marshal(body) + if err != nil { + return nil, err + } + + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1/%v/frameworks", req.GetParent()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + params.Add("frameworkId", fmt.Sprintf("%v", req.GetFrameworkId())) + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).CreateFramework[0:len((*c.CallOptions).CreateFramework):len((*c.CallOptions).CreateFramework)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &cloudsecuritycompliancepb.Framework{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, jsonReq, "CreateFramework") + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + +// UpdateFramework updates a custom framework. +// This method allows for partial updates of a framework. Use the +// update_mask to specify which fields to update. Consider the following: +// +// If you provide an update_mask, only the fields that are specified +// in the mask are updated. +// +// If you don’t provide an update_mask, all the fields that are present +// in the request’s framework body are used to overwrite the existing +// resource. +// +// You can only update frameworks with the CUSTOM type. +// A successful update creates a new version of the framework. +func (c *configRESTClient) UpdateFramework(ctx context.Context, req *cloudsecuritycompliancepb.UpdateFrameworkRequest, opts ...gax.CallOption) (*cloudsecuritycompliancepb.Framework, error) { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + body := req.GetFramework() + jsonReq, err := m.Marshal(body) + if err != nil { + return nil, err + } + + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetFramework().GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetMajorRevisionId() != 0 { + params.Add("majorRevisionId", fmt.Sprintf("%v", req.GetMajorRevisionId())) + } + if req.GetUpdateMask() != nil { + field, err := protojson.Marshal(req.GetUpdateMask()) + if err != nil { + return nil, err + } + params.Add("updateMask", string(field[1:len(field)-1])) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "framework.name", url.QueryEscape(req.GetFramework().GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).UpdateFramework[0:len((*c.CallOptions).UpdateFramework):len((*c.CallOptions).UpdateFramework)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &cloudsecuritycompliancepb.Framework{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("PATCH", baseUrl.String(), bytes.NewReader(jsonReq)) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, jsonReq, "UpdateFramework") + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + +// DeleteFramework deletes a custom framework, including all its major and +// minor revisions. Consider the following: +// +// You can’t delete built-in frameworks. You can only delete frameworks +// with type CUSTOM. +// +// You can’t delete frameworks that are deployed to a resource. +// +// You can’t restore a deleted framework. This action is permanent. +func (c *configRESTClient) DeleteFramework(ctx context.Context, req *cloudsecuritycompliancepb.DeleteFrameworkRequest, opts ...gax.CallOption) error { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return err + } + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + return gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("DELETE", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + _, err = executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "DeleteFramework") + return err + }, opts...) +} + +// ListCloudControls lists the cloud controls (both built-in and custom) that are available +// in a given parent resource. The latest major version of each cloud control +// is returned. +// This method supports pagination. +func (c *configRESTClient) ListCloudControls(ctx context.Context, req *cloudsecuritycompliancepb.ListCloudControlsRequest, opts ...gax.CallOption) *CloudControlIterator { + it := &CloudControlIterator{} + req = proto.Clone(req).(*cloudsecuritycompliancepb.ListCloudControlsRequest) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + it.InternalFetch = func(pageSize int, pageToken string) ([]*cloudsecuritycompliancepb.CloudControl, string, error) { + resp := &cloudsecuritycompliancepb.ListCloudControlsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, "", err + } + baseUrl.Path += fmt.Sprintf("/v1/%v/cloudControls", req.GetParent()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetPageSize() != 0 { + params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) + } + if req.GetPageToken() != "" { + params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := append(c.xGoogHeaders, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "ListCloudControls") + if err != nil { + return err + } + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, "", e + } + it.Response = resp + return resp.GetCloudControls(), resp.GetNextPageToken(), nil + } + + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +// GetCloudControl gets details about a cloud control. +// This method retrieves the latest major version of a cloud control that +// you identify by name. +// +// By default, the latest major version of the cloud control is returned. +// To retrieve a specific major version, include major_revision_id in +// the request. +func (c *configRESTClient) GetCloudControl(ctx context.Context, req *cloudsecuritycompliancepb.GetCloudControlRequest, opts ...gax.CallOption) (*cloudsecuritycompliancepb.CloudControl, error) { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetMajorRevisionId() != 0 { + params.Add("majorRevisionId", fmt.Sprintf("%v", req.GetMajorRevisionId())) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).GetCloudControl[0:len((*c.CallOptions).GetCloudControl):len((*c.CallOptions).GetCloudControl)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &cloudsecuritycompliancepb.CloudControl{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "GetCloudControl") + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + +// CreateCloudControl creates a custom cloud control in a given parent +// resource. +// You can’t create built-in cloud controls because those are managed by +// Google. +func (c *configRESTClient) CreateCloudControl(ctx context.Context, req *cloudsecuritycompliancepb.CreateCloudControlRequest, opts ...gax.CallOption) (*cloudsecuritycompliancepb.CloudControl, error) { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + body := req.GetCloudControl() + jsonReq, err := m.Marshal(body) + if err != nil { + return nil, err + } + + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1/%v/cloudControls", req.GetParent()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + params.Add("cloudControlId", fmt.Sprintf("%v", req.GetCloudControlId())) + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).CreateCloudControl[0:len((*c.CallOptions).CreateCloudControl):len((*c.CallOptions).CreateCloudControl)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &cloudsecuritycompliancepb.CloudControl{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, jsonReq, "CreateCloudControl") + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + +// UpdateCloudControl updates a custom cloud control. +// This method allows for partial updates of a cloud control. Use the +// update_mask to specify which fields to update. Consider the following: +// +// If you provide an update_mask, only the fields that are specified +// in the mask are updated. +// +// If you don’t provide an update_mask, all the fields that are present +// in the request’s cloud_control body are used to overwrite the existing +// resource. +// +// You can only update cloud controls with the CUSTOM type. +// A successful update creates a new version of the cloud control. +func (c *configRESTClient) UpdateCloudControl(ctx context.Context, req *cloudsecuritycompliancepb.UpdateCloudControlRequest, opts ...gax.CallOption) (*cloudsecuritycompliancepb.CloudControl, error) { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + body := req.GetCloudControl() + jsonReq, err := m.Marshal(body) + if err != nil { + return nil, err + } + + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetCloudControl().GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetUpdateMask() != nil { + field, err := protojson.Marshal(req.GetUpdateMask()) + if err != nil { + return nil, err + } + params.Add("updateMask", string(field[1:len(field)-1])) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "cloud_control.name", url.QueryEscape(req.GetCloudControl().GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).UpdateCloudControl[0:len((*c.CallOptions).UpdateCloudControl):len((*c.CallOptions).UpdateCloudControl)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &cloudsecuritycompliancepb.CloudControl{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("PATCH", baseUrl.String(), bytes.NewReader(jsonReq)) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, jsonReq, "UpdateCloudControl") + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + +// DeleteCloudControl deletes a custom cloud control, including all its +// major and minor revisions. Consider the following: +// +// You can’t delete built-in cloud controls. You can only delete cloud +// controls with type CUSTOM. +// +// You can’t delete cloud controls if any of the versions are referenced +// by a framework. +// +// You can’t restore a deleted cloud control. This action is permanent. +func (c *configRESTClient) DeleteCloudControl(ctx context.Context, req *cloudsecuritycompliancepb.DeleteCloudControlRequest, opts ...gax.CallOption) error { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return err + } + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + return gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("DELETE", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + _, err = executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "DeleteCloudControl") + return err + }, opts...) +} + +// GetLocation gets information about a location. +func (c *configRESTClient) GetLocation(ctx context.Context, req *locationpb.GetLocationRequest, opts ...gax.CallOption) (*locationpb.Location, error) { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).GetLocation[0:len((*c.CallOptions).GetLocation):len((*c.CallOptions).GetLocation)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &locationpb.Location{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "GetLocation") + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + +// ListLocations lists information about the supported locations for this service. +func (c *configRESTClient) ListLocations(ctx context.Context, req *locationpb.ListLocationsRequest, opts ...gax.CallOption) *LocationIterator { + it := &LocationIterator{} + req = proto.Clone(req).(*locationpb.ListLocationsRequest) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + it.InternalFetch = func(pageSize int, pageToken string) ([]*locationpb.Location, string, error) { + resp := &locationpb.ListLocationsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, "", err + } + baseUrl.Path += fmt.Sprintf("/v1/%v/locations", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetFilter() != "" { + params.Add("filter", fmt.Sprintf("%v", req.GetFilter())) + } + if req.GetPageSize() != 0 { + params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) + } + if req.GetPageToken() != "" { + params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := append(c.xGoogHeaders, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "ListLocations") + if err != nil { + return err + } + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, "", e + } + it.Response = resp + return resp.GetLocations(), resp.GetNextPageToken(), nil + } + + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +// CancelOperation is a utility method from google.longrunning.Operations. +func (c *configRESTClient) CancelOperation(ctx context.Context, req *longrunningpb.CancelOperationRequest, opts ...gax.CallOption) error { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + jsonReq, err := m.Marshal(req) + if err != nil { + return err + } + + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return err + } + baseUrl.Path += fmt.Sprintf("/v1/%v:cancel", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + return gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + _, err = executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, jsonReq, "CancelOperation") + return err + }, opts...) +} + +// DeleteOperation is a utility method from google.longrunning.Operations. +func (c *configRESTClient) DeleteOperation(ctx context.Context, req *longrunningpb.DeleteOperationRequest, opts ...gax.CallOption) error { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return err + } + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + return gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("DELETE", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + _, err = executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "DeleteOperation") + return err + }, opts...) +} + +// GetOperation is a utility method from google.longrunning.Operations. +func (c *configRESTClient) GetOperation(ctx context.Context, req *longrunningpb.GetOperationRequest, opts ...gax.CallOption) (*longrunningpb.Operation, error) { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).GetOperation[0:len((*c.CallOptions).GetOperation):len((*c.CallOptions).GetOperation)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &longrunningpb.Operation{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "GetOperation") + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + +// ListOperations is a utility method from google.longrunning.Operations. +func (c *configRESTClient) ListOperations(ctx context.Context, req *longrunningpb.ListOperationsRequest, opts ...gax.CallOption) *OperationIterator { + it := &OperationIterator{} + req = proto.Clone(req).(*longrunningpb.ListOperationsRequest) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + it.InternalFetch = func(pageSize int, pageToken string) ([]*longrunningpb.Operation, string, error) { + resp := &longrunningpb.ListOperationsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, "", err + } + baseUrl.Path += fmt.Sprintf("/v1/%v/operations", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetFilter() != "" { + params.Add("filter", fmt.Sprintf("%v", req.GetFilter())) + } + if req.GetPageSize() != 0 { + params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) + } + if req.GetPageToken() != "" { + params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) + } + if req.GetReturnPartialSuccess() { + params.Add("returnPartialSuccess", fmt.Sprintf("%v", req.GetReturnPartialSuccess())) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := append(c.xGoogHeaders, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "ListOperations") + if err != nil { + return err + } + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, "", e + } + it.Response = resp + return resp.GetOperations(), resp.GetNextPageToken(), nil + } + + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} diff --git a/cloudsecuritycompliance/apiv1/config_client_example_go123_test.go b/cloudsecuritycompliance/apiv1/config_client_example_go123_test.go new file mode 100644 index 000000000000..cb37b1c6c925 --- /dev/null +++ b/cloudsecuritycompliance/apiv1/config_client_example_go123_test.go @@ -0,0 +1,132 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +//go:build go1.23 + +package cloudsecuritycompliance_test + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + cloudsecuritycompliancepb "cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" + locationpb "google.golang.org/genproto/googleapis/cloud/location" +) + +func ExampleConfigClient_ListCloudControls_all() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewConfigClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.ListCloudControlsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#ListCloudControlsRequest. + } + for resp, err := range c.ListCloudControls(ctx, req).All() { + if err != nil { + // TODO: Handle error and break/return/continue. Iteration will stop after any error. + } + // TODO: Use resp. + _ = resp + } +} + +func ExampleConfigClient_ListFrameworks_all() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewConfigClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.ListFrameworksRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#ListFrameworksRequest. + } + for resp, err := range c.ListFrameworks(ctx, req).All() { + if err != nil { + // TODO: Handle error and break/return/continue. Iteration will stop after any error. + } + // TODO: Use resp. + _ = resp + } +} + +func ExampleConfigClient_ListLocations_all() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewConfigClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &locationpb.ListLocationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/google.golang.org/genproto/googleapis/cloud/location#ListLocationsRequest. + } + for resp, err := range c.ListLocations(ctx, req).All() { + if err != nil { + // TODO: Handle error and break/return/continue. Iteration will stop after any error. + } + // TODO: Use resp. + _ = resp + } +} + +func ExampleConfigClient_ListOperations_all() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewConfigClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.ListOperationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#ListOperationsRequest. + } + for resp, err := range c.ListOperations(ctx, req).All() { + if err != nil { + // TODO: Handle error and break/return/continue. Iteration will stop after any error. + } + // TODO: Use resp. + _ = resp + } +} diff --git a/cloudsecuritycompliance/apiv1/config_client_example_test.go b/cloudsecuritycompliance/apiv1/config_client_example_test.go new file mode 100644 index 000000000000..ddba8e5ae28d --- /dev/null +++ b/cloudsecuritycompliance/apiv1/config_client_example_test.go @@ -0,0 +1,501 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +package cloudsecuritycompliance_test + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + cloudsecuritycompliancepb "cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" + "google.golang.org/api/iterator" + locationpb "google.golang.org/genproto/googleapis/cloud/location" +) + +func ExampleNewConfigClient() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewConfigClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + // TODO: Use client. + _ = c +} + +func ExampleNewConfigRESTClient() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewConfigRESTClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + // TODO: Use client. + _ = c +} + +func ExampleConfigClient_CreateCloudControl() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewConfigClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.CreateCloudControlRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#CreateCloudControlRequest. + } + resp, err := c.CreateCloudControl(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleConfigClient_CreateFramework() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewConfigClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.CreateFrameworkRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#CreateFrameworkRequest. + } + resp, err := c.CreateFramework(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleConfigClient_DeleteCloudControl() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewConfigClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.DeleteCloudControlRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#DeleteCloudControlRequest. + } + err = c.DeleteCloudControl(ctx, req) + if err != nil { + // TODO: Handle error. + } +} + +func ExampleConfigClient_DeleteFramework() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewConfigClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.DeleteFrameworkRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#DeleteFrameworkRequest. + } + err = c.DeleteFramework(ctx, req) + if err != nil { + // TODO: Handle error. + } +} + +func ExampleConfigClient_GetCloudControl() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewConfigClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.GetCloudControlRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#GetCloudControlRequest. + } + resp, err := c.GetCloudControl(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleConfigClient_GetFramework() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewConfigClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.GetFrameworkRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#GetFrameworkRequest. + } + resp, err := c.GetFramework(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleConfigClient_ListCloudControls() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewConfigClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.ListCloudControlsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#ListCloudControlsRequest. + } + it := c.ListCloudControls(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*cloudsecuritycompliancepb.ListCloudControlsResponse) + } +} + +func ExampleConfigClient_ListFrameworks() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewConfigClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.ListFrameworksRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#ListFrameworksRequest. + } + it := c.ListFrameworks(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*cloudsecuritycompliancepb.ListFrameworksResponse) + } +} + +func ExampleConfigClient_UpdateCloudControl() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewConfigClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.UpdateCloudControlRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#UpdateCloudControlRequest. + } + resp, err := c.UpdateCloudControl(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleConfigClient_UpdateFramework() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewConfigClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.UpdateFrameworkRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#UpdateFrameworkRequest. + } + resp, err := c.UpdateFramework(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleConfigClient_GetLocation() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewConfigClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &locationpb.GetLocationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/google.golang.org/genproto/googleapis/cloud/location#GetLocationRequest. + } + resp, err := c.GetLocation(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleConfigClient_ListLocations() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewConfigClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &locationpb.ListLocationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/google.golang.org/genproto/googleapis/cloud/location#ListLocationsRequest. + } + it := c.ListLocations(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*locationpb.ListLocationsResponse) + } +} + +func ExampleConfigClient_CancelOperation() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewConfigClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.CancelOperationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#CancelOperationRequest. + } + err = c.CancelOperation(ctx, req) + if err != nil { + // TODO: Handle error. + } +} + +func ExampleConfigClient_DeleteOperation() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewConfigClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.DeleteOperationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#DeleteOperationRequest. + } + err = c.DeleteOperation(ctx, req) + if err != nil { + // TODO: Handle error. + } +} + +func ExampleConfigClient_GetOperation() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewConfigClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.GetOperationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#GetOperationRequest. + } + resp, err := c.GetOperation(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleConfigClient_ListOperations() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewConfigClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.ListOperationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#ListOperationsRequest. + } + it := c.ListOperations(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*longrunningpb.ListOperationsResponse) + } +} diff --git a/cloudsecuritycompliance/apiv1/deployment_client.go b/cloudsecuritycompliance/apiv1/deployment_client.go new file mode 100644 index 000000000000..243caf013207 --- /dev/null +++ b/cloudsecuritycompliance/apiv1/deployment_client.go @@ -0,0 +1,1623 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +package cloudsecuritycompliance + +import ( + "bytes" + "context" + "fmt" + "log/slog" + "math" + "net/http" + "net/url" + "time" + + cloudsecuritycompliancepb "cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb" + "cloud.google.com/go/longrunning" + lroauto "cloud.google.com/go/longrunning/autogen" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" + gax "github.com/googleapis/gax-go/v2" + "google.golang.org/api/iterator" + "google.golang.org/api/option" + "google.golang.org/api/option/internaloption" + gtransport "google.golang.org/api/transport/grpc" + httptransport "google.golang.org/api/transport/http" + locationpb "google.golang.org/genproto/googleapis/cloud/location" + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/protobuf/encoding/protojson" + "google.golang.org/protobuf/proto" +) + +var newDeploymentClientHook clientHook + +// DeploymentCallOptions contains the retry settings for each method of DeploymentClient. +type DeploymentCallOptions struct { + CreateFrameworkDeployment []gax.CallOption + DeleteFrameworkDeployment []gax.CallOption + GetFrameworkDeployment []gax.CallOption + ListFrameworkDeployments []gax.CallOption + GetCloudControlDeployment []gax.CallOption + ListCloudControlDeployments []gax.CallOption + GetLocation []gax.CallOption + ListLocations []gax.CallOption + CancelOperation []gax.CallOption + DeleteOperation []gax.CallOption + GetOperation []gax.CallOption + ListOperations []gax.CallOption +} + +func defaultDeploymentGRPCClientOptions() []option.ClientOption { + return []option.ClientOption{ + internaloption.WithDefaultEndpoint("cloudsecuritycompliance.googleapis.com:443"), + internaloption.WithDefaultEndpointTemplate("cloudsecuritycompliance.UNIVERSE_DOMAIN:443"), + internaloption.WithDefaultMTLSEndpoint("cloudsecuritycompliance.mtls.googleapis.com:443"), + internaloption.WithDefaultUniverseDomain("googleapis.com"), + internaloption.WithDefaultAudience("https://cloudsecuritycompliance.googleapis.com/"), + internaloption.WithDefaultScopes(DefaultAuthScopes()...), + internaloption.EnableJwtWithScope(), + internaloption.EnableNewAuthLibrary(), + option.WithGRPCDialOption(grpc.WithDefaultCallOptions( + grpc.MaxCallRecvMsgSize(math.MaxInt32))), + } +} + +func defaultDeploymentCallOptions() *DeploymentCallOptions { + return &DeploymentCallOptions{ + CreateFrameworkDeployment: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, + DeleteFrameworkDeployment: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, + GetFrameworkDeployment: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + ListFrameworkDeployments: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + GetCloudControlDeployment: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + ListCloudControlDeployments: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + GetLocation: []gax.CallOption{}, + ListLocations: []gax.CallOption{}, + CancelOperation: []gax.CallOption{}, + DeleteOperation: []gax.CallOption{}, + GetOperation: []gax.CallOption{}, + ListOperations: []gax.CallOption{}, + } +} + +func defaultDeploymentRESTCallOptions() *DeploymentCallOptions { + return &DeploymentCallOptions{ + CreateFrameworkDeployment: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, + DeleteFrameworkDeployment: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, + GetFrameworkDeployment: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + ListFrameworkDeployments: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + GetCloudControlDeployment: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + ListCloudControlDeployments: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + GetLocation: []gax.CallOption{}, + ListLocations: []gax.CallOption{}, + CancelOperation: []gax.CallOption{}, + DeleteOperation: []gax.CallOption{}, + GetOperation: []gax.CallOption{}, + ListOperations: []gax.CallOption{}, + } +} + +// internalDeploymentClient is an interface that defines the methods available from Cloud Security Compliance API. +type internalDeploymentClient interface { + Close() error + setGoogleClientInfo(...string) + Connection() *grpc.ClientConn + CreateFrameworkDeployment(context.Context, *cloudsecuritycompliancepb.CreateFrameworkDeploymentRequest, ...gax.CallOption) (*CreateFrameworkDeploymentOperation, error) + CreateFrameworkDeploymentOperation(name string) *CreateFrameworkDeploymentOperation + DeleteFrameworkDeployment(context.Context, *cloudsecuritycompliancepb.DeleteFrameworkDeploymentRequest, ...gax.CallOption) (*DeleteFrameworkDeploymentOperation, error) + DeleteFrameworkDeploymentOperation(name string) *DeleteFrameworkDeploymentOperation + GetFrameworkDeployment(context.Context, *cloudsecuritycompliancepb.GetFrameworkDeploymentRequest, ...gax.CallOption) (*cloudsecuritycompliancepb.FrameworkDeployment, error) + ListFrameworkDeployments(context.Context, *cloudsecuritycompliancepb.ListFrameworkDeploymentsRequest, ...gax.CallOption) *FrameworkDeploymentIterator + GetCloudControlDeployment(context.Context, *cloudsecuritycompliancepb.GetCloudControlDeploymentRequest, ...gax.CallOption) (*cloudsecuritycompliancepb.CloudControlDeployment, error) + ListCloudControlDeployments(context.Context, *cloudsecuritycompliancepb.ListCloudControlDeploymentsRequest, ...gax.CallOption) *CloudControlDeploymentIterator + GetLocation(context.Context, *locationpb.GetLocationRequest, ...gax.CallOption) (*locationpb.Location, error) + ListLocations(context.Context, *locationpb.ListLocationsRequest, ...gax.CallOption) *LocationIterator + CancelOperation(context.Context, *longrunningpb.CancelOperationRequest, ...gax.CallOption) error + DeleteOperation(context.Context, *longrunningpb.DeleteOperationRequest, ...gax.CallOption) error + GetOperation(context.Context, *longrunningpb.GetOperationRequest, ...gax.CallOption) (*longrunningpb.Operation, error) + ListOperations(context.Context, *longrunningpb.ListOperationsRequest, ...gax.CallOption) *OperationIterator +} + +// DeploymentClient is a client for interacting with Cloud Security Compliance API. +// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. +// +// Deployment service allows users to manage deployments of Frameworks and +// Cloud Controls on a target resource. +type DeploymentClient struct { + // The internal transport-dependent client. + internalClient internalDeploymentClient + + // The call options for this service. + CallOptions *DeploymentCallOptions + + // LROClient is used internally to handle long-running operations. + // It is exposed so that its CallOptions can be modified if required. + // Users should not Close this client. + LROClient *lroauto.OperationsClient +} + +// Wrapper methods routed to the internal client. + +// Close closes the connection to the API service. The user should invoke this when +// the client is no longer required. +func (c *DeploymentClient) Close() error { + return c.internalClient.Close() +} + +// setGoogleClientInfo sets the name and version of the application in +// the `x-goog-api-client` header passed on each request. Intended for +// use by Google-written clients. +func (c *DeploymentClient) setGoogleClientInfo(keyval ...string) { + c.internalClient.setGoogleClientInfo(keyval...) +} + +// Connection returns a connection to the API service. +// +// Deprecated: Connections are now pooled so this method does not always +// return the same resource. +func (c *DeploymentClient) Connection() *grpc.ClientConn { + return c.internalClient.Connection() +} + +// CreateFrameworkDeployment creates a framework deployment in a given parent resource. A +// framework deployment lets you assign a particular framework version to an +// organization, folder, or project so that you can control and monitor +// those resources using the framework’s cloud controls. +func (c *DeploymentClient) CreateFrameworkDeployment(ctx context.Context, req *cloudsecuritycompliancepb.CreateFrameworkDeploymentRequest, opts ...gax.CallOption) (*CreateFrameworkDeploymentOperation, error) { + return c.internalClient.CreateFrameworkDeployment(ctx, req, opts...) +} + +// CreateFrameworkDeploymentOperation returns a new CreateFrameworkDeploymentOperation from a given name. +// The name must be that of a previously created CreateFrameworkDeploymentOperation, possibly from a different process. +func (c *DeploymentClient) CreateFrameworkDeploymentOperation(name string) *CreateFrameworkDeploymentOperation { + return c.internalClient.CreateFrameworkDeploymentOperation(name) +} + +// DeleteFrameworkDeployment deletes a framework deployment. +func (c *DeploymentClient) DeleteFrameworkDeployment(ctx context.Context, req *cloudsecuritycompliancepb.DeleteFrameworkDeploymentRequest, opts ...gax.CallOption) (*DeleteFrameworkDeploymentOperation, error) { + return c.internalClient.DeleteFrameworkDeployment(ctx, req, opts...) +} + +// DeleteFrameworkDeploymentOperation returns a new DeleteFrameworkDeploymentOperation from a given name. +// The name must be that of a previously created DeleteFrameworkDeploymentOperation, possibly from a different process. +func (c *DeploymentClient) DeleteFrameworkDeploymentOperation(name string) *DeleteFrameworkDeploymentOperation { + return c.internalClient.DeleteFrameworkDeploymentOperation(name) +} + +// GetFrameworkDeployment gets details about a framework deployment. +func (c *DeploymentClient) GetFrameworkDeployment(ctx context.Context, req *cloudsecuritycompliancepb.GetFrameworkDeploymentRequest, opts ...gax.CallOption) (*cloudsecuritycompliancepb.FrameworkDeployment, error) { + return c.internalClient.GetFrameworkDeployment(ctx, req, opts...) +} + +// ListFrameworkDeployments lists the framework deployments in a given parent resource. +func (c *DeploymentClient) ListFrameworkDeployments(ctx context.Context, req *cloudsecuritycompliancepb.ListFrameworkDeploymentsRequest, opts ...gax.CallOption) *FrameworkDeploymentIterator { + return c.internalClient.ListFrameworkDeployments(ctx, req, opts...) +} + +// GetCloudControlDeployment gets details about a cloud control deployment. +func (c *DeploymentClient) GetCloudControlDeployment(ctx context.Context, req *cloudsecuritycompliancepb.GetCloudControlDeploymentRequest, opts ...gax.CallOption) (*cloudsecuritycompliancepb.CloudControlDeployment, error) { + return c.internalClient.GetCloudControlDeployment(ctx, req, opts...) +} + +// ListCloudControlDeployments lists the cloud conrol deployments in a given parent resource. +func (c *DeploymentClient) ListCloudControlDeployments(ctx context.Context, req *cloudsecuritycompliancepb.ListCloudControlDeploymentsRequest, opts ...gax.CallOption) *CloudControlDeploymentIterator { + return c.internalClient.ListCloudControlDeployments(ctx, req, opts...) +} + +// GetLocation gets information about a location. +func (c *DeploymentClient) GetLocation(ctx context.Context, req *locationpb.GetLocationRequest, opts ...gax.CallOption) (*locationpb.Location, error) { + return c.internalClient.GetLocation(ctx, req, opts...) +} + +// ListLocations lists information about the supported locations for this service. +func (c *DeploymentClient) ListLocations(ctx context.Context, req *locationpb.ListLocationsRequest, opts ...gax.CallOption) *LocationIterator { + return c.internalClient.ListLocations(ctx, req, opts...) +} + +// CancelOperation is a utility method from google.longrunning.Operations. +func (c *DeploymentClient) CancelOperation(ctx context.Context, req *longrunningpb.CancelOperationRequest, opts ...gax.CallOption) error { + return c.internalClient.CancelOperation(ctx, req, opts...) +} + +// DeleteOperation is a utility method from google.longrunning.Operations. +func (c *DeploymentClient) DeleteOperation(ctx context.Context, req *longrunningpb.DeleteOperationRequest, opts ...gax.CallOption) error { + return c.internalClient.DeleteOperation(ctx, req, opts...) +} + +// GetOperation is a utility method from google.longrunning.Operations. +func (c *DeploymentClient) GetOperation(ctx context.Context, req *longrunningpb.GetOperationRequest, opts ...gax.CallOption) (*longrunningpb.Operation, error) { + return c.internalClient.GetOperation(ctx, req, opts...) +} + +// ListOperations is a utility method from google.longrunning.Operations. +func (c *DeploymentClient) ListOperations(ctx context.Context, req *longrunningpb.ListOperationsRequest, opts ...gax.CallOption) *OperationIterator { + return c.internalClient.ListOperations(ctx, req, opts...) +} + +// deploymentGRPCClient is a client for interacting with Cloud Security Compliance API over gRPC transport. +// +// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. +type deploymentGRPCClient struct { + // Connection pool of gRPC connections to the service. + connPool gtransport.ConnPool + + // Points back to the CallOptions field of the containing DeploymentClient + CallOptions **DeploymentCallOptions + + // The gRPC API client. + deploymentClient cloudsecuritycompliancepb.DeploymentClient + + // LROClient is used internally to handle long-running operations. + // It is exposed so that its CallOptions can be modified if required. + // Users should not Close this client. + LROClient **lroauto.OperationsClient + + operationsClient longrunningpb.OperationsClient + + locationsClient locationpb.LocationsClient + + // The x-goog-* metadata to be sent with each request. + xGoogHeaders []string + + logger *slog.Logger +} + +// NewDeploymentClient creates a new deployment client based on gRPC. +// The returned client must be Closed when it is done being used to clean up its underlying connections. +// +// Deployment service allows users to manage deployments of Frameworks and +// Cloud Controls on a target resource. +func NewDeploymentClient(ctx context.Context, opts ...option.ClientOption) (*DeploymentClient, error) { + clientOpts := defaultDeploymentGRPCClientOptions() + if newDeploymentClientHook != nil { + hookOpts, err := newDeploymentClientHook(ctx, clientHookParams{}) + if err != nil { + return nil, err + } + clientOpts = append(clientOpts, hookOpts...) + } + + connPool, err := gtransport.DialPool(ctx, append(clientOpts, opts...)...) + if err != nil { + return nil, err + } + client := DeploymentClient{CallOptions: defaultDeploymentCallOptions()} + + c := &deploymentGRPCClient{ + connPool: connPool, + deploymentClient: cloudsecuritycompliancepb.NewDeploymentClient(connPool), + CallOptions: &client.CallOptions, + logger: internaloption.GetLogger(opts), + operationsClient: longrunningpb.NewOperationsClient(connPool), + locationsClient: locationpb.NewLocationsClient(connPool), + } + c.setGoogleClientInfo() + + client.internalClient = c + + client.LROClient, err = lroauto.NewOperationsClient(ctx, gtransport.WithConnPool(connPool)) + if err != nil { + // This error "should not happen", since we are just reusing old connection pool + // and never actually need to dial. + // If this does happen, we could leak connp. However, we cannot close conn: + // If the user invoked the constructor with option.WithGRPCConn, + // we would close a connection that's still in use. + // TODO: investigate error conditions. + return nil, err + } + c.LROClient = &client.LROClient + return &client, nil +} + +// Connection returns a connection to the API service. +// +// Deprecated: Connections are now pooled so this method does not always +// return the same resource. +func (c *deploymentGRPCClient) Connection() *grpc.ClientConn { + return c.connPool.Conn() +} + +// setGoogleClientInfo sets the name and version of the application in +// the `x-goog-api-client` header passed on each request. Intended for +// use by Google-written clients. +func (c *deploymentGRPCClient) setGoogleClientInfo(keyval ...string) { + kv := append([]string{"gl-go", gax.GoVersion}, keyval...) + kv = append(kv, "gapic", getVersionClient(), "gax", gax.Version, "grpc", grpc.Version, "pb", protoVersion) + c.xGoogHeaders = []string{ + "x-goog-api-client", gax.XGoogHeader(kv...), + } +} + +// Close closes the connection to the API service. The user should invoke this when +// the client is no longer required. +func (c *deploymentGRPCClient) Close() error { + return c.connPool.Close() +} + +// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. +type deploymentRESTClient struct { + // The http endpoint to connect to. + endpoint string + + // The http client. + httpClient *http.Client + + // LROClient is used internally to handle long-running operations. + // It is exposed so that its CallOptions can be modified if required. + // Users should not Close this client. + LROClient **lroauto.OperationsClient + + // The x-goog-* headers to be sent with each request. + xGoogHeaders []string + + // Points back to the CallOptions field of the containing DeploymentClient + CallOptions **DeploymentCallOptions + + logger *slog.Logger +} + +// NewDeploymentRESTClient creates a new deployment rest client. +// +// Deployment service allows users to manage deployments of Frameworks and +// Cloud Controls on a target resource. +func NewDeploymentRESTClient(ctx context.Context, opts ...option.ClientOption) (*DeploymentClient, error) { + clientOpts := append(defaultDeploymentRESTClientOptions(), opts...) + httpClient, endpoint, err := httptransport.NewClient(ctx, clientOpts...) + if err != nil { + return nil, err + } + + callOpts := defaultDeploymentRESTCallOptions() + c := &deploymentRESTClient{ + endpoint: endpoint, + httpClient: httpClient, + CallOptions: &callOpts, + logger: internaloption.GetLogger(opts), + } + c.setGoogleClientInfo() + + lroOpts := []option.ClientOption{ + option.WithHTTPClient(httpClient), + option.WithEndpoint(endpoint), + } + opClient, err := lroauto.NewOperationsRESTClient(ctx, lroOpts...) + if err != nil { + return nil, err + } + c.LROClient = &opClient + + return &DeploymentClient{internalClient: c, CallOptions: callOpts}, nil +} + +func defaultDeploymentRESTClientOptions() []option.ClientOption { + return []option.ClientOption{ + internaloption.WithDefaultEndpoint("https://cloudsecuritycompliance.googleapis.com"), + internaloption.WithDefaultEndpointTemplate("https://cloudsecuritycompliance.UNIVERSE_DOMAIN"), + internaloption.WithDefaultMTLSEndpoint("https://cloudsecuritycompliance.mtls.googleapis.com"), + internaloption.WithDefaultUniverseDomain("googleapis.com"), + internaloption.WithDefaultAudience("https://cloudsecuritycompliance.googleapis.com/"), + internaloption.WithDefaultScopes(DefaultAuthScopes()...), + internaloption.EnableNewAuthLibrary(), + } +} + +// setGoogleClientInfo sets the name and version of the application in +// the `x-goog-api-client` header passed on each request. Intended for +// use by Google-written clients. +func (c *deploymentRESTClient) setGoogleClientInfo(keyval ...string) { + kv := append([]string{"gl-go", gax.GoVersion}, keyval...) + kv = append(kv, "gapic", getVersionClient(), "gax", gax.Version, "rest", "UNKNOWN", "pb", protoVersion) + c.xGoogHeaders = []string{ + "x-goog-api-client", gax.XGoogHeader(kv...), + } +} + +// Close closes the connection to the API service. The user should invoke this when +// the client is no longer required. +func (c *deploymentRESTClient) Close() error { + // Replace httpClient with nil to force cleanup. + c.httpClient = nil + return nil +} + +// Connection returns a connection to the API service. +// +// Deprecated: This method always returns nil. +func (c *deploymentRESTClient) Connection() *grpc.ClientConn { + return nil +} +func (c *deploymentGRPCClient) CreateFrameworkDeployment(ctx context.Context, req *cloudsecuritycompliancepb.CreateFrameworkDeploymentRequest, opts ...gax.CallOption) (*CreateFrameworkDeploymentOperation, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).CreateFrameworkDeployment[0:len((*c.CallOptions).CreateFrameworkDeployment):len((*c.CallOptions).CreateFrameworkDeployment)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.deploymentClient.CreateFrameworkDeployment, req, settings.GRPC, c.logger, "CreateFrameworkDeployment") + return err + }, opts...) + if err != nil { + return nil, err + } + return &CreateFrameworkDeploymentOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil +} + +func (c *deploymentGRPCClient) DeleteFrameworkDeployment(ctx context.Context, req *cloudsecuritycompliancepb.DeleteFrameworkDeploymentRequest, opts ...gax.CallOption) (*DeleteFrameworkDeploymentOperation, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).DeleteFrameworkDeployment[0:len((*c.CallOptions).DeleteFrameworkDeployment):len((*c.CallOptions).DeleteFrameworkDeployment)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.deploymentClient.DeleteFrameworkDeployment, req, settings.GRPC, c.logger, "DeleteFrameworkDeployment") + return err + }, opts...) + if err != nil { + return nil, err + } + return &DeleteFrameworkDeploymentOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil +} + +func (c *deploymentGRPCClient) GetFrameworkDeployment(ctx context.Context, req *cloudsecuritycompliancepb.GetFrameworkDeploymentRequest, opts ...gax.CallOption) (*cloudsecuritycompliancepb.FrameworkDeployment, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetFrameworkDeployment[0:len((*c.CallOptions).GetFrameworkDeployment):len((*c.CallOptions).GetFrameworkDeployment)], opts...) + var resp *cloudsecuritycompliancepb.FrameworkDeployment + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.deploymentClient.GetFrameworkDeployment, req, settings.GRPC, c.logger, "GetFrameworkDeployment") + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *deploymentGRPCClient) ListFrameworkDeployments(ctx context.Context, req *cloudsecuritycompliancepb.ListFrameworkDeploymentsRequest, opts ...gax.CallOption) *FrameworkDeploymentIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListFrameworkDeployments[0:len((*c.CallOptions).ListFrameworkDeployments):len((*c.CallOptions).ListFrameworkDeployments)], opts...) + it := &FrameworkDeploymentIterator{} + req = proto.Clone(req).(*cloudsecuritycompliancepb.ListFrameworkDeploymentsRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*cloudsecuritycompliancepb.FrameworkDeployment, string, error) { + resp := &cloudsecuritycompliancepb.ListFrameworkDeploymentsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.deploymentClient.ListFrameworkDeployments, req, settings.GRPC, c.logger, "ListFrameworkDeployments") + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetFrameworkDeployments(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +func (c *deploymentGRPCClient) GetCloudControlDeployment(ctx context.Context, req *cloudsecuritycompliancepb.GetCloudControlDeploymentRequest, opts ...gax.CallOption) (*cloudsecuritycompliancepb.CloudControlDeployment, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetCloudControlDeployment[0:len((*c.CallOptions).GetCloudControlDeployment):len((*c.CallOptions).GetCloudControlDeployment)], opts...) + var resp *cloudsecuritycompliancepb.CloudControlDeployment + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.deploymentClient.GetCloudControlDeployment, req, settings.GRPC, c.logger, "GetCloudControlDeployment") + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *deploymentGRPCClient) ListCloudControlDeployments(ctx context.Context, req *cloudsecuritycompliancepb.ListCloudControlDeploymentsRequest, opts ...gax.CallOption) *CloudControlDeploymentIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListCloudControlDeployments[0:len((*c.CallOptions).ListCloudControlDeployments):len((*c.CallOptions).ListCloudControlDeployments)], opts...) + it := &CloudControlDeploymentIterator{} + req = proto.Clone(req).(*cloudsecuritycompliancepb.ListCloudControlDeploymentsRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*cloudsecuritycompliancepb.CloudControlDeployment, string, error) { + resp := &cloudsecuritycompliancepb.ListCloudControlDeploymentsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.deploymentClient.ListCloudControlDeployments, req, settings.GRPC, c.logger, "ListCloudControlDeployments") + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetCloudControlDeployments(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +func (c *deploymentGRPCClient) GetLocation(ctx context.Context, req *locationpb.GetLocationRequest, opts ...gax.CallOption) (*locationpb.Location, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetLocation[0:len((*c.CallOptions).GetLocation):len((*c.CallOptions).GetLocation)], opts...) + var resp *locationpb.Location + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.locationsClient.GetLocation, req, settings.GRPC, c.logger, "GetLocation") + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *deploymentGRPCClient) ListLocations(ctx context.Context, req *locationpb.ListLocationsRequest, opts ...gax.CallOption) *LocationIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListLocations[0:len((*c.CallOptions).ListLocations):len((*c.CallOptions).ListLocations)], opts...) + it := &LocationIterator{} + req = proto.Clone(req).(*locationpb.ListLocationsRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*locationpb.Location, string, error) { + resp := &locationpb.ListLocationsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.locationsClient.ListLocations, req, settings.GRPC, c.logger, "ListLocations") + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetLocations(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +func (c *deploymentGRPCClient) CancelOperation(ctx context.Context, req *longrunningpb.CancelOperationRequest, opts ...gax.CallOption) error { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).CancelOperation[0:len((*c.CallOptions).CancelOperation):len((*c.CallOptions).CancelOperation)], opts...) + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + _, err = executeRPC(ctx, c.operationsClient.CancelOperation, req, settings.GRPC, c.logger, "CancelOperation") + return err + }, opts...) + return err +} + +func (c *deploymentGRPCClient) DeleteOperation(ctx context.Context, req *longrunningpb.DeleteOperationRequest, opts ...gax.CallOption) error { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).DeleteOperation[0:len((*c.CallOptions).DeleteOperation):len((*c.CallOptions).DeleteOperation)], opts...) + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + _, err = executeRPC(ctx, c.operationsClient.DeleteOperation, req, settings.GRPC, c.logger, "DeleteOperation") + return err + }, opts...) + return err +} + +func (c *deploymentGRPCClient) GetOperation(ctx context.Context, req *longrunningpb.GetOperationRequest, opts ...gax.CallOption) (*longrunningpb.Operation, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetOperation[0:len((*c.CallOptions).GetOperation):len((*c.CallOptions).GetOperation)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.operationsClient.GetOperation, req, settings.GRPC, c.logger, "GetOperation") + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *deploymentGRPCClient) ListOperations(ctx context.Context, req *longrunningpb.ListOperationsRequest, opts ...gax.CallOption) *OperationIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListOperations[0:len((*c.CallOptions).ListOperations):len((*c.CallOptions).ListOperations)], opts...) + it := &OperationIterator{} + req = proto.Clone(req).(*longrunningpb.ListOperationsRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*longrunningpb.Operation, string, error) { + resp := &longrunningpb.ListOperationsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.operationsClient.ListOperations, req, settings.GRPC, c.logger, "ListOperations") + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetOperations(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +// CreateFrameworkDeployment creates a framework deployment in a given parent resource. A +// framework deployment lets you assign a particular framework version to an +// organization, folder, or project so that you can control and monitor +// those resources using the framework’s cloud controls. +func (c *deploymentRESTClient) CreateFrameworkDeployment(ctx context.Context, req *cloudsecuritycompliancepb.CreateFrameworkDeploymentRequest, opts ...gax.CallOption) (*CreateFrameworkDeploymentOperation, error) { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + body := req.GetFrameworkDeployment() + jsonReq, err := m.Marshal(body) + if err != nil { + return nil, err + } + + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1/%v/frameworkDeployments", req.GetParent()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetFrameworkDeploymentId() != "" { + params.Add("frameworkDeploymentId", fmt.Sprintf("%v", req.GetFrameworkDeploymentId())) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &longrunningpb.Operation{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, jsonReq, "CreateFrameworkDeployment") + if err != nil { + return err + } + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + + override := fmt.Sprintf("/v1/%s", resp.GetName()) + return &CreateFrameworkDeploymentOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + pollPath: override, + }, nil +} + +// DeleteFrameworkDeployment deletes a framework deployment. +func (c *deploymentRESTClient) DeleteFrameworkDeployment(ctx context.Context, req *cloudsecuritycompliancepb.DeleteFrameworkDeploymentRequest, opts ...gax.CallOption) (*DeleteFrameworkDeploymentOperation, error) { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetEtag() != "" { + params.Add("etag", fmt.Sprintf("%v", req.GetEtag())) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &longrunningpb.Operation{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("DELETE", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "DeleteFrameworkDeployment") + if err != nil { + return err + } + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + + override := fmt.Sprintf("/v1/%s", resp.GetName()) + return &DeleteFrameworkDeploymentOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + pollPath: override, + }, nil +} + +// GetFrameworkDeployment gets details about a framework deployment. +func (c *deploymentRESTClient) GetFrameworkDeployment(ctx context.Context, req *cloudsecuritycompliancepb.GetFrameworkDeploymentRequest, opts ...gax.CallOption) (*cloudsecuritycompliancepb.FrameworkDeployment, error) { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).GetFrameworkDeployment[0:len((*c.CallOptions).GetFrameworkDeployment):len((*c.CallOptions).GetFrameworkDeployment)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &cloudsecuritycompliancepb.FrameworkDeployment{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "GetFrameworkDeployment") + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + +// ListFrameworkDeployments lists the framework deployments in a given parent resource. +func (c *deploymentRESTClient) ListFrameworkDeployments(ctx context.Context, req *cloudsecuritycompliancepb.ListFrameworkDeploymentsRequest, opts ...gax.CallOption) *FrameworkDeploymentIterator { + it := &FrameworkDeploymentIterator{} + req = proto.Clone(req).(*cloudsecuritycompliancepb.ListFrameworkDeploymentsRequest) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + it.InternalFetch = func(pageSize int, pageToken string) ([]*cloudsecuritycompliancepb.FrameworkDeployment, string, error) { + resp := &cloudsecuritycompliancepb.ListFrameworkDeploymentsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, "", err + } + baseUrl.Path += fmt.Sprintf("/v1/%v/frameworkDeployments", req.GetParent()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetFilter() != "" { + params.Add("filter", fmt.Sprintf("%v", req.GetFilter())) + } + if req.GetOrderBy() != "" { + params.Add("orderBy", fmt.Sprintf("%v", req.GetOrderBy())) + } + if req.GetPageSize() != 0 { + params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) + } + if req.GetPageToken() != "" { + params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := append(c.xGoogHeaders, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "ListFrameworkDeployments") + if err != nil { + return err + } + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, "", e + } + it.Response = resp + return resp.GetFrameworkDeployments(), resp.GetNextPageToken(), nil + } + + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +// GetCloudControlDeployment gets details about a cloud control deployment. +func (c *deploymentRESTClient) GetCloudControlDeployment(ctx context.Context, req *cloudsecuritycompliancepb.GetCloudControlDeploymentRequest, opts ...gax.CallOption) (*cloudsecuritycompliancepb.CloudControlDeployment, error) { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).GetCloudControlDeployment[0:len((*c.CallOptions).GetCloudControlDeployment):len((*c.CallOptions).GetCloudControlDeployment)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &cloudsecuritycompliancepb.CloudControlDeployment{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "GetCloudControlDeployment") + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + +// ListCloudControlDeployments lists the cloud conrol deployments in a given parent resource. +func (c *deploymentRESTClient) ListCloudControlDeployments(ctx context.Context, req *cloudsecuritycompliancepb.ListCloudControlDeploymentsRequest, opts ...gax.CallOption) *CloudControlDeploymentIterator { + it := &CloudControlDeploymentIterator{} + req = proto.Clone(req).(*cloudsecuritycompliancepb.ListCloudControlDeploymentsRequest) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + it.InternalFetch = func(pageSize int, pageToken string) ([]*cloudsecuritycompliancepb.CloudControlDeployment, string, error) { + resp := &cloudsecuritycompliancepb.ListCloudControlDeploymentsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, "", err + } + baseUrl.Path += fmt.Sprintf("/v1/%v/cloudControlDeployments", req.GetParent()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetFilter() != "" { + params.Add("filter", fmt.Sprintf("%v", req.GetFilter())) + } + if req.GetOrderBy() != "" { + params.Add("orderBy", fmt.Sprintf("%v", req.GetOrderBy())) + } + if req.GetPageSize() != 0 { + params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) + } + if req.GetPageToken() != "" { + params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := append(c.xGoogHeaders, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "ListCloudControlDeployments") + if err != nil { + return err + } + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, "", e + } + it.Response = resp + return resp.GetCloudControlDeployments(), resp.GetNextPageToken(), nil + } + + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +// GetLocation gets information about a location. +func (c *deploymentRESTClient) GetLocation(ctx context.Context, req *locationpb.GetLocationRequest, opts ...gax.CallOption) (*locationpb.Location, error) { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).GetLocation[0:len((*c.CallOptions).GetLocation):len((*c.CallOptions).GetLocation)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &locationpb.Location{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "GetLocation") + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + +// ListLocations lists information about the supported locations for this service. +func (c *deploymentRESTClient) ListLocations(ctx context.Context, req *locationpb.ListLocationsRequest, opts ...gax.CallOption) *LocationIterator { + it := &LocationIterator{} + req = proto.Clone(req).(*locationpb.ListLocationsRequest) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + it.InternalFetch = func(pageSize int, pageToken string) ([]*locationpb.Location, string, error) { + resp := &locationpb.ListLocationsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, "", err + } + baseUrl.Path += fmt.Sprintf("/v1/%v/locations", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetFilter() != "" { + params.Add("filter", fmt.Sprintf("%v", req.GetFilter())) + } + if req.GetPageSize() != 0 { + params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) + } + if req.GetPageToken() != "" { + params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := append(c.xGoogHeaders, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "ListLocations") + if err != nil { + return err + } + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, "", e + } + it.Response = resp + return resp.GetLocations(), resp.GetNextPageToken(), nil + } + + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +// CancelOperation is a utility method from google.longrunning.Operations. +func (c *deploymentRESTClient) CancelOperation(ctx context.Context, req *longrunningpb.CancelOperationRequest, opts ...gax.CallOption) error { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + jsonReq, err := m.Marshal(req) + if err != nil { + return err + } + + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return err + } + baseUrl.Path += fmt.Sprintf("/v1/%v:cancel", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + return gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + _, err = executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, jsonReq, "CancelOperation") + return err + }, opts...) +} + +// DeleteOperation is a utility method from google.longrunning.Operations. +func (c *deploymentRESTClient) DeleteOperation(ctx context.Context, req *longrunningpb.DeleteOperationRequest, opts ...gax.CallOption) error { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return err + } + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + return gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("DELETE", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + _, err = executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "DeleteOperation") + return err + }, opts...) +} + +// GetOperation is a utility method from google.longrunning.Operations. +func (c *deploymentRESTClient) GetOperation(ctx context.Context, req *longrunningpb.GetOperationRequest, opts ...gax.CallOption) (*longrunningpb.Operation, error) { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).GetOperation[0:len((*c.CallOptions).GetOperation):len((*c.CallOptions).GetOperation)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &longrunningpb.Operation{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "GetOperation") + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + +// ListOperations is a utility method from google.longrunning.Operations. +func (c *deploymentRESTClient) ListOperations(ctx context.Context, req *longrunningpb.ListOperationsRequest, opts ...gax.CallOption) *OperationIterator { + it := &OperationIterator{} + req = proto.Clone(req).(*longrunningpb.ListOperationsRequest) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + it.InternalFetch = func(pageSize int, pageToken string) ([]*longrunningpb.Operation, string, error) { + resp := &longrunningpb.ListOperationsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, "", err + } + baseUrl.Path += fmt.Sprintf("/v1/%v/operations", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetFilter() != "" { + params.Add("filter", fmt.Sprintf("%v", req.GetFilter())) + } + if req.GetPageSize() != 0 { + params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) + } + if req.GetPageToken() != "" { + params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) + } + if req.GetReturnPartialSuccess() { + params.Add("returnPartialSuccess", fmt.Sprintf("%v", req.GetReturnPartialSuccess())) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := append(c.xGoogHeaders, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "ListOperations") + if err != nil { + return err + } + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, "", e + } + it.Response = resp + return resp.GetOperations(), resp.GetNextPageToken(), nil + } + + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +// CreateFrameworkDeploymentOperation returns a new CreateFrameworkDeploymentOperation from a given name. +// The name must be that of a previously created CreateFrameworkDeploymentOperation, possibly from a different process. +func (c *deploymentGRPCClient) CreateFrameworkDeploymentOperation(name string) *CreateFrameworkDeploymentOperation { + return &CreateFrameworkDeploymentOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + } +} + +// CreateFrameworkDeploymentOperation returns a new CreateFrameworkDeploymentOperation from a given name. +// The name must be that of a previously created CreateFrameworkDeploymentOperation, possibly from a different process. +func (c *deploymentRESTClient) CreateFrameworkDeploymentOperation(name string) *CreateFrameworkDeploymentOperation { + override := fmt.Sprintf("/v1/%s", name) + return &CreateFrameworkDeploymentOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + pollPath: override, + } +} + +// DeleteFrameworkDeploymentOperation returns a new DeleteFrameworkDeploymentOperation from a given name. +// The name must be that of a previously created DeleteFrameworkDeploymentOperation, possibly from a different process. +func (c *deploymentGRPCClient) DeleteFrameworkDeploymentOperation(name string) *DeleteFrameworkDeploymentOperation { + return &DeleteFrameworkDeploymentOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + } +} + +// DeleteFrameworkDeploymentOperation returns a new DeleteFrameworkDeploymentOperation from a given name. +// The name must be that of a previously created DeleteFrameworkDeploymentOperation, possibly from a different process. +func (c *deploymentRESTClient) DeleteFrameworkDeploymentOperation(name string) *DeleteFrameworkDeploymentOperation { + override := fmt.Sprintf("/v1/%s", name) + return &DeleteFrameworkDeploymentOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + pollPath: override, + } +} diff --git a/cloudsecuritycompliance/apiv1/deployment_client_example_go123_test.go b/cloudsecuritycompliance/apiv1/deployment_client_example_go123_test.go new file mode 100644 index 000000000000..16c301370f82 --- /dev/null +++ b/cloudsecuritycompliance/apiv1/deployment_client_example_go123_test.go @@ -0,0 +1,132 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +//go:build go1.23 + +package cloudsecuritycompliance_test + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + cloudsecuritycompliancepb "cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" + locationpb "google.golang.org/genproto/googleapis/cloud/location" +) + +func ExampleDeploymentClient_ListCloudControlDeployments_all() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewDeploymentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.ListCloudControlDeploymentsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#ListCloudControlDeploymentsRequest. + } + for resp, err := range c.ListCloudControlDeployments(ctx, req).All() { + if err != nil { + // TODO: Handle error and break/return/continue. Iteration will stop after any error. + } + // TODO: Use resp. + _ = resp + } +} + +func ExampleDeploymentClient_ListFrameworkDeployments_all() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewDeploymentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.ListFrameworkDeploymentsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#ListFrameworkDeploymentsRequest. + } + for resp, err := range c.ListFrameworkDeployments(ctx, req).All() { + if err != nil { + // TODO: Handle error and break/return/continue. Iteration will stop after any error. + } + // TODO: Use resp. + _ = resp + } +} + +func ExampleDeploymentClient_ListLocations_all() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewDeploymentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &locationpb.ListLocationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/google.golang.org/genproto/googleapis/cloud/location#ListLocationsRequest. + } + for resp, err := range c.ListLocations(ctx, req).All() { + if err != nil { + // TODO: Handle error and break/return/continue. Iteration will stop after any error. + } + // TODO: Use resp. + _ = resp + } +} + +func ExampleDeploymentClient_ListOperations_all() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewDeploymentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.ListOperationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#ListOperationsRequest. + } + for resp, err := range c.ListOperations(ctx, req).All() { + if err != nil { + // TODO: Handle error and break/return/continue. Iteration will stop after any error. + } + // TODO: Use resp. + _ = resp + } +} diff --git a/cloudsecuritycompliance/apiv1/deployment_client_example_test.go b/cloudsecuritycompliance/apiv1/deployment_client_example_test.go new file mode 100644 index 000000000000..47f8c8303841 --- /dev/null +++ b/cloudsecuritycompliance/apiv1/deployment_client_example_test.go @@ -0,0 +1,413 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +package cloudsecuritycompliance_test + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + cloudsecuritycompliancepb "cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" + "google.golang.org/api/iterator" + locationpb "google.golang.org/genproto/googleapis/cloud/location" +) + +func ExampleNewDeploymentClient() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewDeploymentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + // TODO: Use client. + _ = c +} + +func ExampleNewDeploymentRESTClient() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewDeploymentRESTClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + // TODO: Use client. + _ = c +} + +func ExampleDeploymentClient_CreateFrameworkDeployment() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewDeploymentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.CreateFrameworkDeploymentRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#CreateFrameworkDeploymentRequest. + } + op, err := c.CreateFrameworkDeployment(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleDeploymentClient_DeleteFrameworkDeployment() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewDeploymentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.DeleteFrameworkDeploymentRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#DeleteFrameworkDeploymentRequest. + } + op, err := c.DeleteFrameworkDeployment(ctx, req) + if err != nil { + // TODO: Handle error. + } + + err = op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } +} + +func ExampleDeploymentClient_GetCloudControlDeployment() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewDeploymentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.GetCloudControlDeploymentRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#GetCloudControlDeploymentRequest. + } + resp, err := c.GetCloudControlDeployment(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleDeploymentClient_GetFrameworkDeployment() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewDeploymentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.GetFrameworkDeploymentRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#GetFrameworkDeploymentRequest. + } + resp, err := c.GetFrameworkDeployment(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleDeploymentClient_ListCloudControlDeployments() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewDeploymentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.ListCloudControlDeploymentsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#ListCloudControlDeploymentsRequest. + } + it := c.ListCloudControlDeployments(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*cloudsecuritycompliancepb.ListCloudControlDeploymentsResponse) + } +} + +func ExampleDeploymentClient_ListFrameworkDeployments() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewDeploymentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.ListFrameworkDeploymentsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#ListFrameworkDeploymentsRequest. + } + it := c.ListFrameworkDeployments(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*cloudsecuritycompliancepb.ListFrameworkDeploymentsResponse) + } +} + +func ExampleDeploymentClient_GetLocation() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewDeploymentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &locationpb.GetLocationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/google.golang.org/genproto/googleapis/cloud/location#GetLocationRequest. + } + resp, err := c.GetLocation(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleDeploymentClient_ListLocations() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewDeploymentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &locationpb.ListLocationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/google.golang.org/genproto/googleapis/cloud/location#ListLocationsRequest. + } + it := c.ListLocations(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*locationpb.ListLocationsResponse) + } +} + +func ExampleDeploymentClient_CancelOperation() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewDeploymentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.CancelOperationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#CancelOperationRequest. + } + err = c.CancelOperation(ctx, req) + if err != nil { + // TODO: Handle error. + } +} + +func ExampleDeploymentClient_DeleteOperation() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewDeploymentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.DeleteOperationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#DeleteOperationRequest. + } + err = c.DeleteOperation(ctx, req) + if err != nil { + // TODO: Handle error. + } +} + +func ExampleDeploymentClient_GetOperation() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewDeploymentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.GetOperationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#GetOperationRequest. + } + resp, err := c.GetOperation(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleDeploymentClient_ListOperations() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewDeploymentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.ListOperationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#ListOperationsRequest. + } + it := c.ListOperations(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*longrunningpb.ListOperationsResponse) + } +} diff --git a/cloudsecuritycompliance/apiv1/doc.go b/cloudsecuritycompliance/apiv1/doc.go new file mode 100644 index 000000000000..63c6ae1a0760 --- /dev/null +++ b/cloudsecuritycompliance/apiv1/doc.go @@ -0,0 +1,88 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// Package cloudsecuritycompliance is an auto-generated package for the +// Cloud Security Compliance API. +// +// NOTE: This package is in beta. It is not stable, and may be subject to changes. +// +// # General documentation +// +// For information that is relevant for all client libraries please reference +// https://pkg.go.dev/cloud.google.com/go#pkg-overview. Some information on this +// page includes: +// +// - [Authentication and Authorization] +// - [Timeouts and Cancellation] +// - [Testing against Client Libraries] +// - [Debugging Client Libraries] +// - [Inspecting errors] +// +// # Example usage +// +// To get started with this package, create a client. +// +// // go get cloud.google.com/go/cloudsecuritycompliance/apiv1@latest +// ctx := context.Background() +// // This snippet has been automatically generated and should be regarded as a code template only. +// // It will require modifications to work: +// // - It may require correct/in-range values for request initialization. +// // - It may require specifying regional endpoints when creating the service client as shown in: +// // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options +// c, err := cloudsecuritycompliance.NewAuditClient(ctx) +// if err != nil { +// // TODO: Handle error. +// } +// defer c.Close() +// +// The client will use your default application credentials. Clients should be reused instead of created as needed. +// The methods of Client are safe for concurrent use by multiple goroutines. +// The returned client must be Closed when it is done being used. +// +// # Using the Client +// +// The following is an example of making an API call with the newly created client, mentioned above. +// +// req := &cloudsecuritycompliancepb.CreateFrameworkAuditRequest{ +// // TODO: Fill request struct fields. +// // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#CreateFrameworkAuditRequest. +// } +// op, err := c.CreateFrameworkAudit(ctx, req) +// if err != nil { +// // TODO: Handle error. +// } +// +// resp, err := op.Wait(ctx) +// if err != nil { +// // TODO: Handle error. +// } +// // TODO: Use resp. +// _ = resp +// +// # Use of Context +// +// The ctx passed to NewAuditClient is used for authentication requests and +// for creating the underlying connection, but is not used for subsequent calls. +// Individual methods on the client use the ctx given to them. +// +// To close the open connection, use the Close() method. +// +// [Authentication and Authorization]: https://pkg.go.dev/cloud.google.com/go#hdr-Authentication_and_Authorization +// [Timeouts and Cancellation]: https://pkg.go.dev/cloud.google.com/go#hdr-Timeouts_and_Cancellation +// [Testing against Client Libraries]: https://pkg.go.dev/cloud.google.com/go#hdr-Testing +// [Debugging Client Libraries]: https://pkg.go.dev/cloud.google.com/go#hdr-Debugging +// [Inspecting errors]: https://pkg.go.dev/cloud.google.com/go#hdr-Inspecting_errors +package cloudsecuritycompliance // import "cloud.google.com/go/cloudsecuritycompliance/apiv1" diff --git a/cloudsecuritycompliance/apiv1/gapic_metadata.json b/cloudsecuritycompliance/apiv1/gapic_metadata.json new file mode 100644 index 000000000000..5533be87a8d5 --- /dev/null +++ b/cloudsecuritycompliance/apiv1/gapic_metadata.json @@ -0,0 +1,649 @@ +{ + "schema": "1.0", + "comment": "This file maps proto services/RPCs to the corresponding library clients/methods.", + "language": "go", + "protoPackage": "google.cloud.cloudsecuritycompliance.v1", + "libraryPackage": "cloud.google.com/go/cloudsecuritycompliance/apiv1", + "services": { + "Audit": { + "clients": { + "grpc": { + "libraryClient": "AuditClient", + "rpcs": { + "CancelOperation": { + "methods": [ + "CancelOperation" + ] + }, + "CreateFrameworkAudit": { + "methods": [ + "CreateFrameworkAudit" + ] + }, + "DeleteOperation": { + "methods": [ + "DeleteOperation" + ] + }, + "GenerateFrameworkAuditScopeReport": { + "methods": [ + "GenerateFrameworkAuditScopeReport" + ] + }, + "GetFrameworkAudit": { + "methods": [ + "GetFrameworkAudit" + ] + }, + "GetLocation": { + "methods": [ + "GetLocation" + ] + }, + "GetOperation": { + "methods": [ + "GetOperation" + ] + }, + "ListFrameworkAudits": { + "methods": [ + "ListFrameworkAudits" + ] + }, + "ListLocations": { + "methods": [ + "ListLocations" + ] + }, + "ListOperations": { + "methods": [ + "ListOperations" + ] + } + } + }, + "rest": { + "libraryClient": "AuditClient", + "rpcs": { + "CancelOperation": { + "methods": [ + "CancelOperation" + ] + }, + "CreateFrameworkAudit": { + "methods": [ + "CreateFrameworkAudit" + ] + }, + "DeleteOperation": { + "methods": [ + "DeleteOperation" + ] + }, + "GenerateFrameworkAuditScopeReport": { + "methods": [ + "GenerateFrameworkAuditScopeReport" + ] + }, + "GetFrameworkAudit": { + "methods": [ + "GetFrameworkAudit" + ] + }, + "GetLocation": { + "methods": [ + "GetLocation" + ] + }, + "GetOperation": { + "methods": [ + "GetOperation" + ] + }, + "ListFrameworkAudits": { + "methods": [ + "ListFrameworkAudits" + ] + }, + "ListLocations": { + "methods": [ + "ListLocations" + ] + }, + "ListOperations": { + "methods": [ + "ListOperations" + ] + } + } + } + } + }, + "CmEnrollmentService": { + "clients": { + "grpc": { + "libraryClient": "CmEnrollmentClient", + "rpcs": { + "CalculateEffectiveCmEnrollment": { + "methods": [ + "CalculateEffectiveCmEnrollment" + ] + }, + "CancelOperation": { + "methods": [ + "CancelOperation" + ] + }, + "DeleteOperation": { + "methods": [ + "DeleteOperation" + ] + }, + "GetLocation": { + "methods": [ + "GetLocation" + ] + }, + "GetOperation": { + "methods": [ + "GetOperation" + ] + }, + "ListLocations": { + "methods": [ + "ListLocations" + ] + }, + "ListOperations": { + "methods": [ + "ListOperations" + ] + }, + "UpdateCmEnrollment": { + "methods": [ + "UpdateCmEnrollment" + ] + } + } + }, + "rest": { + "libraryClient": "CmEnrollmentClient", + "rpcs": { + "CalculateEffectiveCmEnrollment": { + "methods": [ + "CalculateEffectiveCmEnrollment" + ] + }, + "CancelOperation": { + "methods": [ + "CancelOperation" + ] + }, + "DeleteOperation": { + "methods": [ + "DeleteOperation" + ] + }, + "GetLocation": { + "methods": [ + "GetLocation" + ] + }, + "GetOperation": { + "methods": [ + "GetOperation" + ] + }, + "ListLocations": { + "methods": [ + "ListLocations" + ] + }, + "ListOperations": { + "methods": [ + "ListOperations" + ] + }, + "UpdateCmEnrollment": { + "methods": [ + "UpdateCmEnrollment" + ] + } + } + } + } + }, + "Config": { + "clients": { + "grpc": { + "libraryClient": "ConfigClient", + "rpcs": { + "CancelOperation": { + "methods": [ + "CancelOperation" + ] + }, + "CreateCloudControl": { + "methods": [ + "CreateCloudControl" + ] + }, + "CreateFramework": { + "methods": [ + "CreateFramework" + ] + }, + "DeleteCloudControl": { + "methods": [ + "DeleteCloudControl" + ] + }, + "DeleteFramework": { + "methods": [ + "DeleteFramework" + ] + }, + "DeleteOperation": { + "methods": [ + "DeleteOperation" + ] + }, + "GetCloudControl": { + "methods": [ + "GetCloudControl" + ] + }, + "GetFramework": { + "methods": [ + "GetFramework" + ] + }, + "GetLocation": { + "methods": [ + "GetLocation" + ] + }, + "GetOperation": { + "methods": [ + "GetOperation" + ] + }, + "ListCloudControls": { + "methods": [ + "ListCloudControls" + ] + }, + "ListFrameworks": { + "methods": [ + "ListFrameworks" + ] + }, + "ListLocations": { + "methods": [ + "ListLocations" + ] + }, + "ListOperations": { + "methods": [ + "ListOperations" + ] + }, + "UpdateCloudControl": { + "methods": [ + "UpdateCloudControl" + ] + }, + "UpdateFramework": { + "methods": [ + "UpdateFramework" + ] + } + } + }, + "rest": { + "libraryClient": "ConfigClient", + "rpcs": { + "CancelOperation": { + "methods": [ + "CancelOperation" + ] + }, + "CreateCloudControl": { + "methods": [ + "CreateCloudControl" + ] + }, + "CreateFramework": { + "methods": [ + "CreateFramework" + ] + }, + "DeleteCloudControl": { + "methods": [ + "DeleteCloudControl" + ] + }, + "DeleteFramework": { + "methods": [ + "DeleteFramework" + ] + }, + "DeleteOperation": { + "methods": [ + "DeleteOperation" + ] + }, + "GetCloudControl": { + "methods": [ + "GetCloudControl" + ] + }, + "GetFramework": { + "methods": [ + "GetFramework" + ] + }, + "GetLocation": { + "methods": [ + "GetLocation" + ] + }, + "GetOperation": { + "methods": [ + "GetOperation" + ] + }, + "ListCloudControls": { + "methods": [ + "ListCloudControls" + ] + }, + "ListFrameworks": { + "methods": [ + "ListFrameworks" + ] + }, + "ListLocations": { + "methods": [ + "ListLocations" + ] + }, + "ListOperations": { + "methods": [ + "ListOperations" + ] + }, + "UpdateCloudControl": { + "methods": [ + "UpdateCloudControl" + ] + }, + "UpdateFramework": { + "methods": [ + "UpdateFramework" + ] + } + } + } + } + }, + "Deployment": { + "clients": { + "grpc": { + "libraryClient": "DeploymentClient", + "rpcs": { + "CancelOperation": { + "methods": [ + "CancelOperation" + ] + }, + "CreateFrameworkDeployment": { + "methods": [ + "CreateFrameworkDeployment" + ] + }, + "DeleteFrameworkDeployment": { + "methods": [ + "DeleteFrameworkDeployment" + ] + }, + "DeleteOperation": { + "methods": [ + "DeleteOperation" + ] + }, + "GetCloudControlDeployment": { + "methods": [ + "GetCloudControlDeployment" + ] + }, + "GetFrameworkDeployment": { + "methods": [ + "GetFrameworkDeployment" + ] + }, + "GetLocation": { + "methods": [ + "GetLocation" + ] + }, + "GetOperation": { + "methods": [ + "GetOperation" + ] + }, + "ListCloudControlDeployments": { + "methods": [ + "ListCloudControlDeployments" + ] + }, + "ListFrameworkDeployments": { + "methods": [ + "ListFrameworkDeployments" + ] + }, + "ListLocations": { + "methods": [ + "ListLocations" + ] + }, + "ListOperations": { + "methods": [ + "ListOperations" + ] + } + } + }, + "rest": { + "libraryClient": "DeploymentClient", + "rpcs": { + "CancelOperation": { + "methods": [ + "CancelOperation" + ] + }, + "CreateFrameworkDeployment": { + "methods": [ + "CreateFrameworkDeployment" + ] + }, + "DeleteFrameworkDeployment": { + "methods": [ + "DeleteFrameworkDeployment" + ] + }, + "DeleteOperation": { + "methods": [ + "DeleteOperation" + ] + }, + "GetCloudControlDeployment": { + "methods": [ + "GetCloudControlDeployment" + ] + }, + "GetFrameworkDeployment": { + "methods": [ + "GetFrameworkDeployment" + ] + }, + "GetLocation": { + "methods": [ + "GetLocation" + ] + }, + "GetOperation": { + "methods": [ + "GetOperation" + ] + }, + "ListCloudControlDeployments": { + "methods": [ + "ListCloudControlDeployments" + ] + }, + "ListFrameworkDeployments": { + "methods": [ + "ListFrameworkDeployments" + ] + }, + "ListLocations": { + "methods": [ + "ListLocations" + ] + }, + "ListOperations": { + "methods": [ + "ListOperations" + ] + } + } + } + } + }, + "Monitoring": { + "clients": { + "grpc": { + "libraryClient": "MonitoringClient", + "rpcs": { + "AggregateFrameworkComplianceReport": { + "methods": [ + "AggregateFrameworkComplianceReport" + ] + }, + "CancelOperation": { + "methods": [ + "CancelOperation" + ] + }, + "DeleteOperation": { + "methods": [ + "DeleteOperation" + ] + }, + "FetchFrameworkComplianceReport": { + "methods": [ + "FetchFrameworkComplianceReport" + ] + }, + "GetLocation": { + "methods": [ + "GetLocation" + ] + }, + "GetOperation": { + "methods": [ + "GetOperation" + ] + }, + "ListControlComplianceSummaries": { + "methods": [ + "ListControlComplianceSummaries" + ] + }, + "ListFindingSummaries": { + "methods": [ + "ListFindingSummaries" + ] + }, + "ListFrameworkComplianceSummaries": { + "methods": [ + "ListFrameworkComplianceSummaries" + ] + }, + "ListLocations": { + "methods": [ + "ListLocations" + ] + }, + "ListOperations": { + "methods": [ + "ListOperations" + ] + } + } + }, + "rest": { + "libraryClient": "MonitoringClient", + "rpcs": { + "AggregateFrameworkComplianceReport": { + "methods": [ + "AggregateFrameworkComplianceReport" + ] + }, + "CancelOperation": { + "methods": [ + "CancelOperation" + ] + }, + "DeleteOperation": { + "methods": [ + "DeleteOperation" + ] + }, + "FetchFrameworkComplianceReport": { + "methods": [ + "FetchFrameworkComplianceReport" + ] + }, + "GetLocation": { + "methods": [ + "GetLocation" + ] + }, + "GetOperation": { + "methods": [ + "GetOperation" + ] + }, + "ListControlComplianceSummaries": { + "methods": [ + "ListControlComplianceSummaries" + ] + }, + "ListFindingSummaries": { + "methods": [ + "ListFindingSummaries" + ] + }, + "ListFrameworkComplianceSummaries": { + "methods": [ + "ListFrameworkComplianceSummaries" + ] + }, + "ListLocations": { + "methods": [ + "ListLocations" + ] + }, + "ListOperations": { + "methods": [ + "ListOperations" + ] + } + } + } + } + } + } +} diff --git a/cloudsecuritycompliance/apiv1/helpers.go b/cloudsecuritycompliance/apiv1/helpers.go new file mode 100644 index 000000000000..bf49a18aff1e --- /dev/null +++ b/cloudsecuritycompliance/apiv1/helpers.go @@ -0,0 +1,105 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +package cloudsecuritycompliance + +import ( + "context" + "fmt" + "io" + "log/slog" + "net/http" + + "github.com/googleapis/gax-go/v2/internallog" + "github.com/googleapis/gax-go/v2/internallog/grpclog" + "google.golang.org/api/googleapi" + "google.golang.org/api/option" + "google.golang.org/grpc" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/runtime/protoimpl" +) + +const serviceName = "cloudsecuritycompliance.googleapis.com" + +var protoVersion = fmt.Sprintf("1.%d", protoimpl.MaxVersion) + +// For more information on implementing a client constructor hook, see +// https://github.com/googleapis/google-cloud-go/wiki/Customizing-constructors. +type clientHookParams struct{} +type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) + +var versionClient string + +func getVersionClient() string { + if versionClient == "" { + return "UNKNOWN" + } + return versionClient +} + +// DefaultAuthScopes reports the default set of authentication scopes to use with this package. +func DefaultAuthScopes() []string { + return []string{ + "https://www.googleapis.com/auth/cloud-platform", + } +} + +func executeHTTPRequestWithResponse(ctx context.Context, client *http.Client, req *http.Request, logger *slog.Logger, body []byte, rpc string) ([]byte, *http.Response, error) { + logger.DebugContext(ctx, "api request", "serviceName", serviceName, "rpcName", rpc, "request", internallog.HTTPRequest(req, body)) + resp, err := client.Do(req) + if err != nil { + return nil, nil, err + } + defer resp.Body.Close() + buf, err := io.ReadAll(resp.Body) + if err != nil { + return nil, nil, err + } + logger.DebugContext(ctx, "api response", "serviceName", serviceName, "rpcName", rpc, "response", internallog.HTTPResponse(resp, buf)) + if err = googleapi.CheckResponseWithBody(resp, buf); err != nil { + return nil, nil, err + } + return buf, resp, nil +} + +func executeHTTPRequest(ctx context.Context, client *http.Client, req *http.Request, logger *slog.Logger, body []byte, rpc string) ([]byte, error) { + buf, _, err := executeHTTPRequestWithResponse(ctx, client, req, logger, body, rpc) + return buf, err +} + +func executeStreamingHTTPRequest(ctx context.Context, client *http.Client, req *http.Request, logger *slog.Logger, body []byte, rpc string) (*http.Response, error) { + logger.DebugContext(ctx, "api request", "serviceName", serviceName, "rpcName", rpc, "request", internallog.HTTPRequest(req, body)) + resp, err := client.Do(req) + if err != nil { + return nil, err + } + logger.DebugContext(ctx, "api response", "serviceName", serviceName, "rpcName", rpc, "response", internallog.HTTPResponse(resp, nil)) + if err = googleapi.CheckResponse(resp); err != nil { + return nil, err + } + return resp, nil +} + +func executeRPC[I proto.Message, O proto.Message](ctx context.Context, fn func(context.Context, I, ...grpc.CallOption) (O, error), req I, opts []grpc.CallOption, logger *slog.Logger, rpc string) (O, error) { + var zero O + logger.DebugContext(ctx, "api request", "serviceName", serviceName, "rpcName", rpc, "request", grpclog.ProtoMessageRequest(ctx, req)) + resp, err := fn(ctx, req, opts...) + if err != nil { + return zero, err + } + logger.DebugContext(ctx, "api response", "serviceName", serviceName, "rpcName", rpc, "response", grpclog.ProtoMessageResponse(resp)) + return resp, err +} diff --git a/cloudsecuritycompliance/apiv1/monitoring_client.go b/cloudsecuritycompliance/apiv1/monitoring_client.go new file mode 100644 index 000000000000..c3f871263b4d --- /dev/null +++ b/cloudsecuritycompliance/apiv1/monitoring_client.go @@ -0,0 +1,1530 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +package cloudsecuritycompliance + +import ( + "bytes" + "context" + "fmt" + "log/slog" + "math" + "net/http" + "net/url" + "time" + + cloudsecuritycompliancepb "cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" + gax "github.com/googleapis/gax-go/v2" + "google.golang.org/api/iterator" + "google.golang.org/api/option" + "google.golang.org/api/option/internaloption" + gtransport "google.golang.org/api/transport/grpc" + httptransport "google.golang.org/api/transport/http" + locationpb "google.golang.org/genproto/googleapis/cloud/location" + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/protobuf/encoding/protojson" + "google.golang.org/protobuf/proto" +) + +var newMonitoringClientHook clientHook + +// MonitoringCallOptions contains the retry settings for each method of MonitoringClient. +type MonitoringCallOptions struct { + ListFrameworkComplianceSummaries []gax.CallOption + ListFindingSummaries []gax.CallOption + FetchFrameworkComplianceReport []gax.CallOption + ListControlComplianceSummaries []gax.CallOption + AggregateFrameworkComplianceReport []gax.CallOption + GetLocation []gax.CallOption + ListLocations []gax.CallOption + CancelOperation []gax.CallOption + DeleteOperation []gax.CallOption + GetOperation []gax.CallOption + ListOperations []gax.CallOption +} + +func defaultMonitoringGRPCClientOptions() []option.ClientOption { + return []option.ClientOption{ + internaloption.WithDefaultEndpoint("cloudsecuritycompliance.googleapis.com:443"), + internaloption.WithDefaultEndpointTemplate("cloudsecuritycompliance.UNIVERSE_DOMAIN:443"), + internaloption.WithDefaultMTLSEndpoint("cloudsecuritycompliance.mtls.googleapis.com:443"), + internaloption.WithDefaultUniverseDomain("googleapis.com"), + internaloption.WithDefaultAudience("https://cloudsecuritycompliance.googleapis.com/"), + internaloption.WithDefaultScopes(DefaultAuthScopes()...), + internaloption.EnableJwtWithScope(), + internaloption.EnableNewAuthLibrary(), + option.WithGRPCDialOption(grpc.WithDefaultCallOptions( + grpc.MaxCallRecvMsgSize(math.MaxInt32))), + } +} + +func defaultMonitoringCallOptions() *MonitoringCallOptions { + return &MonitoringCallOptions{ + ListFrameworkComplianceSummaries: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + ListFindingSummaries: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + FetchFrameworkComplianceReport: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + ListControlComplianceSummaries: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + AggregateFrameworkComplianceReport: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + GetLocation: []gax.CallOption{}, + ListLocations: []gax.CallOption{}, + CancelOperation: []gax.CallOption{}, + DeleteOperation: []gax.CallOption{}, + GetOperation: []gax.CallOption{}, + ListOperations: []gax.CallOption{}, + } +} + +func defaultMonitoringRESTCallOptions() *MonitoringCallOptions { + return &MonitoringCallOptions{ + ListFrameworkComplianceSummaries: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + ListFindingSummaries: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + FetchFrameworkComplianceReport: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + ListControlComplianceSummaries: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + AggregateFrameworkComplianceReport: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + GetLocation: []gax.CallOption{}, + ListLocations: []gax.CallOption{}, + CancelOperation: []gax.CallOption{}, + DeleteOperation: []gax.CallOption{}, + GetOperation: []gax.CallOption{}, + ListOperations: []gax.CallOption{}, + } +} + +// internalMonitoringClient is an interface that defines the methods available from Cloud Security Compliance API. +type internalMonitoringClient interface { + Close() error + setGoogleClientInfo(...string) + Connection() *grpc.ClientConn + ListFrameworkComplianceSummaries(context.Context, *cloudsecuritycompliancepb.ListFrameworkComplianceSummariesRequest, ...gax.CallOption) *FrameworkComplianceSummaryIterator + ListFindingSummaries(context.Context, *cloudsecuritycompliancepb.ListFindingSummariesRequest, ...gax.CallOption) *FindingSummaryIterator + FetchFrameworkComplianceReport(context.Context, *cloudsecuritycompliancepb.FetchFrameworkComplianceReportRequest, ...gax.CallOption) (*cloudsecuritycompliancepb.FrameworkComplianceReport, error) + ListControlComplianceSummaries(context.Context, *cloudsecuritycompliancepb.ListControlComplianceSummariesRequest, ...gax.CallOption) *ControlComplianceSummaryIterator + AggregateFrameworkComplianceReport(context.Context, *cloudsecuritycompliancepb.AggregateFrameworkComplianceReportRequest, ...gax.CallOption) (*cloudsecuritycompliancepb.AggregateFrameworkComplianceReportResponse, error) + GetLocation(context.Context, *locationpb.GetLocationRequest, ...gax.CallOption) (*locationpb.Location, error) + ListLocations(context.Context, *locationpb.ListLocationsRequest, ...gax.CallOption) *LocationIterator + CancelOperation(context.Context, *longrunningpb.CancelOperationRequest, ...gax.CallOption) error + DeleteOperation(context.Context, *longrunningpb.DeleteOperationRequest, ...gax.CallOption) error + GetOperation(context.Context, *longrunningpb.GetOperationRequest, ...gax.CallOption) (*longrunningpb.Operation, error) + ListOperations(context.Context, *longrunningpb.ListOperationsRequest, ...gax.CallOption) *OperationIterator +} + +// MonitoringClient is a client for interacting with Cloud Security Compliance API. +// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. +// +// Service describing handlers for resources +type MonitoringClient struct { + // The internal transport-dependent client. + internalClient internalMonitoringClient + + // The call options for this service. + CallOptions *MonitoringCallOptions +} + +// Wrapper methods routed to the internal client. + +// Close closes the connection to the API service. The user should invoke this when +// the client is no longer required. +func (c *MonitoringClient) Close() error { + return c.internalClient.Close() +} + +// setGoogleClientInfo sets the name and version of the application in +// the `x-goog-api-client` header passed on each request. Intended for +// use by Google-written clients. +func (c *MonitoringClient) setGoogleClientInfo(keyval ...string) { + c.internalClient.setGoogleClientInfo(keyval...) +} + +// Connection returns a connection to the API service. +// +// Deprecated: Connections are now pooled so this method does not always +// return the same resource. +func (c *MonitoringClient) Connection() *grpc.ClientConn { + return c.internalClient.Connection() +} + +// ListFrameworkComplianceSummaries lists the framework compliance summary for a given scope. +func (c *MonitoringClient) ListFrameworkComplianceSummaries(ctx context.Context, req *cloudsecuritycompliancepb.ListFrameworkComplianceSummariesRequest, opts ...gax.CallOption) *FrameworkComplianceSummaryIterator { + return c.internalClient.ListFrameworkComplianceSummaries(ctx, req, opts...) +} + +// ListFindingSummaries lists the finding summary by category for a given scope. +func (c *MonitoringClient) ListFindingSummaries(ctx context.Context, req *cloudsecuritycompliancepb.ListFindingSummariesRequest, opts ...gax.CallOption) *FindingSummaryIterator { + return c.internalClient.ListFindingSummaries(ctx, req, opts...) +} + +// FetchFrameworkComplianceReport fetches the framework compliance report for a given scope. +func (c *MonitoringClient) FetchFrameworkComplianceReport(ctx context.Context, req *cloudsecuritycompliancepb.FetchFrameworkComplianceReportRequest, opts ...gax.CallOption) (*cloudsecuritycompliancepb.FrameworkComplianceReport, error) { + return c.internalClient.FetchFrameworkComplianceReport(ctx, req, opts...) +} + +// ListControlComplianceSummaries lists the control compliance summary for a given scope. +func (c *MonitoringClient) ListControlComplianceSummaries(ctx context.Context, req *cloudsecuritycompliancepb.ListControlComplianceSummariesRequest, opts ...gax.CallOption) *ControlComplianceSummaryIterator { + return c.internalClient.ListControlComplianceSummaries(ctx, req, opts...) +} + +// AggregateFrameworkComplianceReport gets the aggregated compliance report over time for a given scope. +func (c *MonitoringClient) AggregateFrameworkComplianceReport(ctx context.Context, req *cloudsecuritycompliancepb.AggregateFrameworkComplianceReportRequest, opts ...gax.CallOption) (*cloudsecuritycompliancepb.AggregateFrameworkComplianceReportResponse, error) { + return c.internalClient.AggregateFrameworkComplianceReport(ctx, req, opts...) +} + +// GetLocation gets information about a location. +func (c *MonitoringClient) GetLocation(ctx context.Context, req *locationpb.GetLocationRequest, opts ...gax.CallOption) (*locationpb.Location, error) { + return c.internalClient.GetLocation(ctx, req, opts...) +} + +// ListLocations lists information about the supported locations for this service. +func (c *MonitoringClient) ListLocations(ctx context.Context, req *locationpb.ListLocationsRequest, opts ...gax.CallOption) *LocationIterator { + return c.internalClient.ListLocations(ctx, req, opts...) +} + +// CancelOperation is a utility method from google.longrunning.Operations. +func (c *MonitoringClient) CancelOperation(ctx context.Context, req *longrunningpb.CancelOperationRequest, opts ...gax.CallOption) error { + return c.internalClient.CancelOperation(ctx, req, opts...) +} + +// DeleteOperation is a utility method from google.longrunning.Operations. +func (c *MonitoringClient) DeleteOperation(ctx context.Context, req *longrunningpb.DeleteOperationRequest, opts ...gax.CallOption) error { + return c.internalClient.DeleteOperation(ctx, req, opts...) +} + +// GetOperation is a utility method from google.longrunning.Operations. +func (c *MonitoringClient) GetOperation(ctx context.Context, req *longrunningpb.GetOperationRequest, opts ...gax.CallOption) (*longrunningpb.Operation, error) { + return c.internalClient.GetOperation(ctx, req, opts...) +} + +// ListOperations is a utility method from google.longrunning.Operations. +func (c *MonitoringClient) ListOperations(ctx context.Context, req *longrunningpb.ListOperationsRequest, opts ...gax.CallOption) *OperationIterator { + return c.internalClient.ListOperations(ctx, req, opts...) +} + +// monitoringGRPCClient is a client for interacting with Cloud Security Compliance API over gRPC transport. +// +// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. +type monitoringGRPCClient struct { + // Connection pool of gRPC connections to the service. + connPool gtransport.ConnPool + + // Points back to the CallOptions field of the containing MonitoringClient + CallOptions **MonitoringCallOptions + + // The gRPC API client. + monitoringClient cloudsecuritycompliancepb.MonitoringClient + + operationsClient longrunningpb.OperationsClient + + locationsClient locationpb.LocationsClient + + // The x-goog-* metadata to be sent with each request. + xGoogHeaders []string + + logger *slog.Logger +} + +// NewMonitoringClient creates a new monitoring client based on gRPC. +// The returned client must be Closed when it is done being used to clean up its underlying connections. +// +// Service describing handlers for resources +func NewMonitoringClient(ctx context.Context, opts ...option.ClientOption) (*MonitoringClient, error) { + clientOpts := defaultMonitoringGRPCClientOptions() + if newMonitoringClientHook != nil { + hookOpts, err := newMonitoringClientHook(ctx, clientHookParams{}) + if err != nil { + return nil, err + } + clientOpts = append(clientOpts, hookOpts...) + } + + connPool, err := gtransport.DialPool(ctx, append(clientOpts, opts...)...) + if err != nil { + return nil, err + } + client := MonitoringClient{CallOptions: defaultMonitoringCallOptions()} + + c := &monitoringGRPCClient{ + connPool: connPool, + monitoringClient: cloudsecuritycompliancepb.NewMonitoringClient(connPool), + CallOptions: &client.CallOptions, + logger: internaloption.GetLogger(opts), + operationsClient: longrunningpb.NewOperationsClient(connPool), + locationsClient: locationpb.NewLocationsClient(connPool), + } + c.setGoogleClientInfo() + + client.internalClient = c + + return &client, nil +} + +// Connection returns a connection to the API service. +// +// Deprecated: Connections are now pooled so this method does not always +// return the same resource. +func (c *monitoringGRPCClient) Connection() *grpc.ClientConn { + return c.connPool.Conn() +} + +// setGoogleClientInfo sets the name and version of the application in +// the `x-goog-api-client` header passed on each request. Intended for +// use by Google-written clients. +func (c *monitoringGRPCClient) setGoogleClientInfo(keyval ...string) { + kv := append([]string{"gl-go", gax.GoVersion}, keyval...) + kv = append(kv, "gapic", getVersionClient(), "gax", gax.Version, "grpc", grpc.Version, "pb", protoVersion) + c.xGoogHeaders = []string{ + "x-goog-api-client", gax.XGoogHeader(kv...), + } +} + +// Close closes the connection to the API service. The user should invoke this when +// the client is no longer required. +func (c *monitoringGRPCClient) Close() error { + return c.connPool.Close() +} + +// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. +type monitoringRESTClient struct { + // The http endpoint to connect to. + endpoint string + + // The http client. + httpClient *http.Client + + // The x-goog-* headers to be sent with each request. + xGoogHeaders []string + + // Points back to the CallOptions field of the containing MonitoringClient + CallOptions **MonitoringCallOptions + + logger *slog.Logger +} + +// NewMonitoringRESTClient creates a new monitoring rest client. +// +// Service describing handlers for resources +func NewMonitoringRESTClient(ctx context.Context, opts ...option.ClientOption) (*MonitoringClient, error) { + clientOpts := append(defaultMonitoringRESTClientOptions(), opts...) + httpClient, endpoint, err := httptransport.NewClient(ctx, clientOpts...) + if err != nil { + return nil, err + } + + callOpts := defaultMonitoringRESTCallOptions() + c := &monitoringRESTClient{ + endpoint: endpoint, + httpClient: httpClient, + CallOptions: &callOpts, + logger: internaloption.GetLogger(opts), + } + c.setGoogleClientInfo() + + return &MonitoringClient{internalClient: c, CallOptions: callOpts}, nil +} + +func defaultMonitoringRESTClientOptions() []option.ClientOption { + return []option.ClientOption{ + internaloption.WithDefaultEndpoint("https://cloudsecuritycompliance.googleapis.com"), + internaloption.WithDefaultEndpointTemplate("https://cloudsecuritycompliance.UNIVERSE_DOMAIN"), + internaloption.WithDefaultMTLSEndpoint("https://cloudsecuritycompliance.mtls.googleapis.com"), + internaloption.WithDefaultUniverseDomain("googleapis.com"), + internaloption.WithDefaultAudience("https://cloudsecuritycompliance.googleapis.com/"), + internaloption.WithDefaultScopes(DefaultAuthScopes()...), + internaloption.EnableNewAuthLibrary(), + } +} + +// setGoogleClientInfo sets the name and version of the application in +// the `x-goog-api-client` header passed on each request. Intended for +// use by Google-written clients. +func (c *monitoringRESTClient) setGoogleClientInfo(keyval ...string) { + kv := append([]string{"gl-go", gax.GoVersion}, keyval...) + kv = append(kv, "gapic", getVersionClient(), "gax", gax.Version, "rest", "UNKNOWN", "pb", protoVersion) + c.xGoogHeaders = []string{ + "x-goog-api-client", gax.XGoogHeader(kv...), + } +} + +// Close closes the connection to the API service. The user should invoke this when +// the client is no longer required. +func (c *monitoringRESTClient) Close() error { + // Replace httpClient with nil to force cleanup. + c.httpClient = nil + return nil +} + +// Connection returns a connection to the API service. +// +// Deprecated: This method always returns nil. +func (c *monitoringRESTClient) Connection() *grpc.ClientConn { + return nil +} +func (c *monitoringGRPCClient) ListFrameworkComplianceSummaries(ctx context.Context, req *cloudsecuritycompliancepb.ListFrameworkComplianceSummariesRequest, opts ...gax.CallOption) *FrameworkComplianceSummaryIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListFrameworkComplianceSummaries[0:len((*c.CallOptions).ListFrameworkComplianceSummaries):len((*c.CallOptions).ListFrameworkComplianceSummaries)], opts...) + it := &FrameworkComplianceSummaryIterator{} + req = proto.Clone(req).(*cloudsecuritycompliancepb.ListFrameworkComplianceSummariesRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*cloudsecuritycompliancepb.FrameworkComplianceSummary, string, error) { + resp := &cloudsecuritycompliancepb.ListFrameworkComplianceSummariesResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.monitoringClient.ListFrameworkComplianceSummaries, req, settings.GRPC, c.logger, "ListFrameworkComplianceSummaries") + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetFrameworkComplianceSummaries(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +func (c *monitoringGRPCClient) ListFindingSummaries(ctx context.Context, req *cloudsecuritycompliancepb.ListFindingSummariesRequest, opts ...gax.CallOption) *FindingSummaryIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListFindingSummaries[0:len((*c.CallOptions).ListFindingSummaries):len((*c.CallOptions).ListFindingSummaries)], opts...) + it := &FindingSummaryIterator{} + req = proto.Clone(req).(*cloudsecuritycompliancepb.ListFindingSummariesRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*cloudsecuritycompliancepb.FindingSummary, string, error) { + resp := &cloudsecuritycompliancepb.ListFindingSummariesResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.monitoringClient.ListFindingSummaries, req, settings.GRPC, c.logger, "ListFindingSummaries") + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetFindingSummaries(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +func (c *monitoringGRPCClient) FetchFrameworkComplianceReport(ctx context.Context, req *cloudsecuritycompliancepb.FetchFrameworkComplianceReportRequest, opts ...gax.CallOption) (*cloudsecuritycompliancepb.FrameworkComplianceReport, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).FetchFrameworkComplianceReport[0:len((*c.CallOptions).FetchFrameworkComplianceReport):len((*c.CallOptions).FetchFrameworkComplianceReport)], opts...) + var resp *cloudsecuritycompliancepb.FrameworkComplianceReport + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.monitoringClient.FetchFrameworkComplianceReport, req, settings.GRPC, c.logger, "FetchFrameworkComplianceReport") + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *monitoringGRPCClient) ListControlComplianceSummaries(ctx context.Context, req *cloudsecuritycompliancepb.ListControlComplianceSummariesRequest, opts ...gax.CallOption) *ControlComplianceSummaryIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListControlComplianceSummaries[0:len((*c.CallOptions).ListControlComplianceSummaries):len((*c.CallOptions).ListControlComplianceSummaries)], opts...) + it := &ControlComplianceSummaryIterator{} + req = proto.Clone(req).(*cloudsecuritycompliancepb.ListControlComplianceSummariesRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*cloudsecuritycompliancepb.ControlComplianceSummary, string, error) { + resp := &cloudsecuritycompliancepb.ListControlComplianceSummariesResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.monitoringClient.ListControlComplianceSummaries, req, settings.GRPC, c.logger, "ListControlComplianceSummaries") + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetControlComplianceSummaries(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +func (c *monitoringGRPCClient) AggregateFrameworkComplianceReport(ctx context.Context, req *cloudsecuritycompliancepb.AggregateFrameworkComplianceReportRequest, opts ...gax.CallOption) (*cloudsecuritycompliancepb.AggregateFrameworkComplianceReportResponse, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).AggregateFrameworkComplianceReport[0:len((*c.CallOptions).AggregateFrameworkComplianceReport):len((*c.CallOptions).AggregateFrameworkComplianceReport)], opts...) + var resp *cloudsecuritycompliancepb.AggregateFrameworkComplianceReportResponse + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.monitoringClient.AggregateFrameworkComplianceReport, req, settings.GRPC, c.logger, "AggregateFrameworkComplianceReport") + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *monitoringGRPCClient) GetLocation(ctx context.Context, req *locationpb.GetLocationRequest, opts ...gax.CallOption) (*locationpb.Location, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetLocation[0:len((*c.CallOptions).GetLocation):len((*c.CallOptions).GetLocation)], opts...) + var resp *locationpb.Location + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.locationsClient.GetLocation, req, settings.GRPC, c.logger, "GetLocation") + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *monitoringGRPCClient) ListLocations(ctx context.Context, req *locationpb.ListLocationsRequest, opts ...gax.CallOption) *LocationIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListLocations[0:len((*c.CallOptions).ListLocations):len((*c.CallOptions).ListLocations)], opts...) + it := &LocationIterator{} + req = proto.Clone(req).(*locationpb.ListLocationsRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*locationpb.Location, string, error) { + resp := &locationpb.ListLocationsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.locationsClient.ListLocations, req, settings.GRPC, c.logger, "ListLocations") + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetLocations(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +func (c *monitoringGRPCClient) CancelOperation(ctx context.Context, req *longrunningpb.CancelOperationRequest, opts ...gax.CallOption) error { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).CancelOperation[0:len((*c.CallOptions).CancelOperation):len((*c.CallOptions).CancelOperation)], opts...) + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + _, err = executeRPC(ctx, c.operationsClient.CancelOperation, req, settings.GRPC, c.logger, "CancelOperation") + return err + }, opts...) + return err +} + +func (c *monitoringGRPCClient) DeleteOperation(ctx context.Context, req *longrunningpb.DeleteOperationRequest, opts ...gax.CallOption) error { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).DeleteOperation[0:len((*c.CallOptions).DeleteOperation):len((*c.CallOptions).DeleteOperation)], opts...) + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + _, err = executeRPC(ctx, c.operationsClient.DeleteOperation, req, settings.GRPC, c.logger, "DeleteOperation") + return err + }, opts...) + return err +} + +func (c *monitoringGRPCClient) GetOperation(ctx context.Context, req *longrunningpb.GetOperationRequest, opts ...gax.CallOption) (*longrunningpb.Operation, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetOperation[0:len((*c.CallOptions).GetOperation):len((*c.CallOptions).GetOperation)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.operationsClient.GetOperation, req, settings.GRPC, c.logger, "GetOperation") + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *monitoringGRPCClient) ListOperations(ctx context.Context, req *longrunningpb.ListOperationsRequest, opts ...gax.CallOption) *OperationIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListOperations[0:len((*c.CallOptions).ListOperations):len((*c.CallOptions).ListOperations)], opts...) + it := &OperationIterator{} + req = proto.Clone(req).(*longrunningpb.ListOperationsRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*longrunningpb.Operation, string, error) { + resp := &longrunningpb.ListOperationsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = executeRPC(ctx, c.operationsClient.ListOperations, req, settings.GRPC, c.logger, "ListOperations") + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetOperations(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +// ListFrameworkComplianceSummaries lists the framework compliance summary for a given scope. +func (c *monitoringRESTClient) ListFrameworkComplianceSummaries(ctx context.Context, req *cloudsecuritycompliancepb.ListFrameworkComplianceSummariesRequest, opts ...gax.CallOption) *FrameworkComplianceSummaryIterator { + it := &FrameworkComplianceSummaryIterator{} + req = proto.Clone(req).(*cloudsecuritycompliancepb.ListFrameworkComplianceSummariesRequest) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + it.InternalFetch = func(pageSize int, pageToken string) ([]*cloudsecuritycompliancepb.FrameworkComplianceSummary, string, error) { + resp := &cloudsecuritycompliancepb.ListFrameworkComplianceSummariesResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, "", err + } + baseUrl.Path += fmt.Sprintf("/v1/%v/frameworkComplianceSummaries", req.GetParent()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetFilter() != "" { + params.Add("filter", fmt.Sprintf("%v", req.GetFilter())) + } + if req.GetPageSize() != 0 { + params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) + } + if req.GetPageToken() != "" { + params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := append(c.xGoogHeaders, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "ListFrameworkComplianceSummaries") + if err != nil { + return err + } + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, "", e + } + it.Response = resp + return resp.GetFrameworkComplianceSummaries(), resp.GetNextPageToken(), nil + } + + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +// ListFindingSummaries lists the finding summary by category for a given scope. +func (c *monitoringRESTClient) ListFindingSummaries(ctx context.Context, req *cloudsecuritycompliancepb.ListFindingSummariesRequest, opts ...gax.CallOption) *FindingSummaryIterator { + it := &FindingSummaryIterator{} + req = proto.Clone(req).(*cloudsecuritycompliancepb.ListFindingSummariesRequest) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + it.InternalFetch = func(pageSize int, pageToken string) ([]*cloudsecuritycompliancepb.FindingSummary, string, error) { + resp := &cloudsecuritycompliancepb.ListFindingSummariesResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, "", err + } + baseUrl.Path += fmt.Sprintf("/v1/%v/findingSummaries", req.GetParent()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetEndTime() != nil { + field, err := protojson.Marshal(req.GetEndTime()) + if err != nil { + return nil, "", err + } + params.Add("endTime", string(field[1:len(field)-1])) + } + if req.GetFilter() != "" { + params.Add("filter", fmt.Sprintf("%v", req.GetFilter())) + } + if req.GetPageSize() != 0 { + params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) + } + if req.GetPageToken() != "" { + params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := append(c.xGoogHeaders, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "ListFindingSummaries") + if err != nil { + return err + } + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, "", e + } + it.Response = resp + return resp.GetFindingSummaries(), resp.GetNextPageToken(), nil + } + + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +// FetchFrameworkComplianceReport fetches the framework compliance report for a given scope. +func (c *monitoringRESTClient) FetchFrameworkComplianceReport(ctx context.Context, req *cloudsecuritycompliancepb.FetchFrameworkComplianceReportRequest, opts ...gax.CallOption) (*cloudsecuritycompliancepb.FrameworkComplianceReport, error) { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1/%v:fetch", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetEndTime() != nil { + field, err := protojson.Marshal(req.GetEndTime()) + if err != nil { + return nil, err + } + params.Add("endTime", string(field[1:len(field)-1])) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).FetchFrameworkComplianceReport[0:len((*c.CallOptions).FetchFrameworkComplianceReport):len((*c.CallOptions).FetchFrameworkComplianceReport)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &cloudsecuritycompliancepb.FrameworkComplianceReport{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "FetchFrameworkComplianceReport") + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + +// ListControlComplianceSummaries lists the control compliance summary for a given scope. +func (c *monitoringRESTClient) ListControlComplianceSummaries(ctx context.Context, req *cloudsecuritycompliancepb.ListControlComplianceSummariesRequest, opts ...gax.CallOption) *ControlComplianceSummaryIterator { + it := &ControlComplianceSummaryIterator{} + req = proto.Clone(req).(*cloudsecuritycompliancepb.ListControlComplianceSummariesRequest) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + it.InternalFetch = func(pageSize int, pageToken string) ([]*cloudsecuritycompliancepb.ControlComplianceSummary, string, error) { + resp := &cloudsecuritycompliancepb.ListControlComplianceSummariesResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, "", err + } + baseUrl.Path += fmt.Sprintf("/v1/%v/controlComplianceSummaries", req.GetParent()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetEndTime() != nil { + field, err := protojson.Marshal(req.GetEndTime()) + if err != nil { + return nil, "", err + } + params.Add("endTime", string(field[1:len(field)-1])) + } + if req.GetFilter() != "" { + params.Add("filter", fmt.Sprintf("%v", req.GetFilter())) + } + if req.GetPageSize() != 0 { + params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) + } + if req.GetPageToken() != "" { + params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := append(c.xGoogHeaders, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "ListControlComplianceSummaries") + if err != nil { + return err + } + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, "", e + } + it.Response = resp + return resp.GetControlComplianceSummaries(), resp.GetNextPageToken(), nil + } + + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +// AggregateFrameworkComplianceReport gets the aggregated compliance report over time for a given scope. +func (c *monitoringRESTClient) AggregateFrameworkComplianceReport(ctx context.Context, req *cloudsecuritycompliancepb.AggregateFrameworkComplianceReportRequest, opts ...gax.CallOption) (*cloudsecuritycompliancepb.AggregateFrameworkComplianceReportResponse, error) { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1/%v:aggregate", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetFilter() != "" { + params.Add("filter", fmt.Sprintf("%v", req.GetFilter())) + } + if req.GetInterval().GetEndTime() != nil { + field, err := protojson.Marshal(req.GetInterval().GetEndTime()) + if err != nil { + return nil, err + } + params.Add("interval.endTime", string(field[1:len(field)-1])) + } + if req.GetInterval().GetStartTime() != nil { + field, err := protojson.Marshal(req.GetInterval().GetStartTime()) + if err != nil { + return nil, err + } + params.Add("interval.startTime", string(field[1:len(field)-1])) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).AggregateFrameworkComplianceReport[0:len((*c.CallOptions).AggregateFrameworkComplianceReport):len((*c.CallOptions).AggregateFrameworkComplianceReport)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &cloudsecuritycompliancepb.AggregateFrameworkComplianceReportResponse{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "AggregateFrameworkComplianceReport") + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + +// GetLocation gets information about a location. +func (c *monitoringRESTClient) GetLocation(ctx context.Context, req *locationpb.GetLocationRequest, opts ...gax.CallOption) (*locationpb.Location, error) { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).GetLocation[0:len((*c.CallOptions).GetLocation):len((*c.CallOptions).GetLocation)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &locationpb.Location{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "GetLocation") + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + +// ListLocations lists information about the supported locations for this service. +func (c *monitoringRESTClient) ListLocations(ctx context.Context, req *locationpb.ListLocationsRequest, opts ...gax.CallOption) *LocationIterator { + it := &LocationIterator{} + req = proto.Clone(req).(*locationpb.ListLocationsRequest) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + it.InternalFetch = func(pageSize int, pageToken string) ([]*locationpb.Location, string, error) { + resp := &locationpb.ListLocationsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, "", err + } + baseUrl.Path += fmt.Sprintf("/v1/%v/locations", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetFilter() != "" { + params.Add("filter", fmt.Sprintf("%v", req.GetFilter())) + } + if req.GetPageSize() != 0 { + params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) + } + if req.GetPageToken() != "" { + params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := append(c.xGoogHeaders, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "ListLocations") + if err != nil { + return err + } + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, "", e + } + it.Response = resp + return resp.GetLocations(), resp.GetNextPageToken(), nil + } + + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +// CancelOperation is a utility method from google.longrunning.Operations. +func (c *monitoringRESTClient) CancelOperation(ctx context.Context, req *longrunningpb.CancelOperationRequest, opts ...gax.CallOption) error { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + jsonReq, err := m.Marshal(req) + if err != nil { + return err + } + + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return err + } + baseUrl.Path += fmt.Sprintf("/v1/%v:cancel", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + return gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + _, err = executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, jsonReq, "CancelOperation") + return err + }, opts...) +} + +// DeleteOperation is a utility method from google.longrunning.Operations. +func (c *monitoringRESTClient) DeleteOperation(ctx context.Context, req *longrunningpb.DeleteOperationRequest, opts ...gax.CallOption) error { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return err + } + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + return gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("DELETE", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + _, err = executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "DeleteOperation") + return err + }, opts...) +} + +// GetOperation is a utility method from google.longrunning.Operations. +func (c *monitoringRESTClient) GetOperation(ctx context.Context, req *longrunningpb.GetOperationRequest, opts ...gax.CallOption) (*longrunningpb.Operation, error) { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).GetOperation[0:len((*c.CallOptions).GetOperation):len((*c.CallOptions).GetOperation)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &longrunningpb.Operation{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "GetOperation") + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + +// ListOperations is a utility method from google.longrunning.Operations. +func (c *monitoringRESTClient) ListOperations(ctx context.Context, req *longrunningpb.ListOperationsRequest, opts ...gax.CallOption) *OperationIterator { + it := &OperationIterator{} + req = proto.Clone(req).(*longrunningpb.ListOperationsRequest) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + it.InternalFetch = func(pageSize int, pageToken string) ([]*longrunningpb.Operation, string, error) { + resp := &longrunningpb.ListOperationsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, "", err + } + baseUrl.Path += fmt.Sprintf("/v1/%v/operations", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetFilter() != "" { + params.Add("filter", fmt.Sprintf("%v", req.GetFilter())) + } + if req.GetPageSize() != 0 { + params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) + } + if req.GetPageToken() != "" { + params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) + } + if req.GetReturnPartialSuccess() { + params.Add("returnPartialSuccess", fmt.Sprintf("%v", req.GetReturnPartialSuccess())) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := append(c.xGoogHeaders, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq.Header = headers + + buf, err := executeHTTPRequest(ctx, c.httpClient, httpReq, c.logger, nil, "ListOperations") + if err != nil { + return err + } + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, "", e + } + it.Response = resp + return resp.GetOperations(), resp.GetNextPageToken(), nil + } + + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} diff --git a/cloudsecuritycompliance/apiv1/monitoring_client_example_go123_test.go b/cloudsecuritycompliance/apiv1/monitoring_client_example_go123_test.go new file mode 100644 index 000000000000..0926644bb910 --- /dev/null +++ b/cloudsecuritycompliance/apiv1/monitoring_client_example_go123_test.go @@ -0,0 +1,158 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +//go:build go1.23 + +package cloudsecuritycompliance_test + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + cloudsecuritycompliancepb "cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" + locationpb "google.golang.org/genproto/googleapis/cloud/location" +) + +func ExampleMonitoringClient_ListControlComplianceSummaries_all() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewMonitoringClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.ListControlComplianceSummariesRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#ListControlComplianceSummariesRequest. + } + for resp, err := range c.ListControlComplianceSummaries(ctx, req).All() { + if err != nil { + // TODO: Handle error and break/return/continue. Iteration will stop after any error. + } + // TODO: Use resp. + _ = resp + } +} + +func ExampleMonitoringClient_ListFindingSummaries_all() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewMonitoringClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.ListFindingSummariesRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#ListFindingSummariesRequest. + } + for resp, err := range c.ListFindingSummaries(ctx, req).All() { + if err != nil { + // TODO: Handle error and break/return/continue. Iteration will stop after any error. + } + // TODO: Use resp. + _ = resp + } +} + +func ExampleMonitoringClient_ListFrameworkComplianceSummaries_all() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewMonitoringClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.ListFrameworkComplianceSummariesRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#ListFrameworkComplianceSummariesRequest. + } + for resp, err := range c.ListFrameworkComplianceSummaries(ctx, req).All() { + if err != nil { + // TODO: Handle error and break/return/continue. Iteration will stop after any error. + } + // TODO: Use resp. + _ = resp + } +} + +func ExampleMonitoringClient_ListLocations_all() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewMonitoringClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &locationpb.ListLocationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/google.golang.org/genproto/googleapis/cloud/location#ListLocationsRequest. + } + for resp, err := range c.ListLocations(ctx, req).All() { + if err != nil { + // TODO: Handle error and break/return/continue. Iteration will stop after any error. + } + // TODO: Use resp. + _ = resp + } +} + +func ExampleMonitoringClient_ListOperations_all() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewMonitoringClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.ListOperationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#ListOperationsRequest. + } + for resp, err := range c.ListOperations(ctx, req).All() { + if err != nil { + // TODO: Handle error and break/return/continue. Iteration will stop after any error. + } + // TODO: Use resp. + _ = resp + } +} diff --git a/cloudsecuritycompliance/apiv1/monitoring_client_example_test.go b/cloudsecuritycompliance/apiv1/monitoring_client_example_test.go new file mode 100644 index 000000000000..227a3d1a2878 --- /dev/null +++ b/cloudsecuritycompliance/apiv1/monitoring_client_example_test.go @@ -0,0 +1,392 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +package cloudsecuritycompliance_test + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + cloudsecuritycompliancepb "cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" + "google.golang.org/api/iterator" + locationpb "google.golang.org/genproto/googleapis/cloud/location" +) + +func ExampleNewMonitoringClient() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewMonitoringClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + // TODO: Use client. + _ = c +} + +func ExampleNewMonitoringRESTClient() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewMonitoringRESTClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + // TODO: Use client. + _ = c +} + +func ExampleMonitoringClient_AggregateFrameworkComplianceReport() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewMonitoringClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.AggregateFrameworkComplianceReportRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#AggregateFrameworkComplianceReportRequest. + } + resp, err := c.AggregateFrameworkComplianceReport(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleMonitoringClient_FetchFrameworkComplianceReport() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewMonitoringClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.FetchFrameworkComplianceReportRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#FetchFrameworkComplianceReportRequest. + } + resp, err := c.FetchFrameworkComplianceReport(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleMonitoringClient_ListControlComplianceSummaries() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewMonitoringClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.ListControlComplianceSummariesRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#ListControlComplianceSummariesRequest. + } + it := c.ListControlComplianceSummaries(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*cloudsecuritycompliancepb.ListControlComplianceSummariesResponse) + } +} + +func ExampleMonitoringClient_ListFindingSummaries() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewMonitoringClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.ListFindingSummariesRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#ListFindingSummariesRequest. + } + it := c.ListFindingSummaries(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*cloudsecuritycompliancepb.ListFindingSummariesResponse) + } +} + +func ExampleMonitoringClient_ListFrameworkComplianceSummaries() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewMonitoringClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.ListFrameworkComplianceSummariesRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#ListFrameworkComplianceSummariesRequest. + } + it := c.ListFrameworkComplianceSummaries(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*cloudsecuritycompliancepb.ListFrameworkComplianceSummariesResponse) + } +} + +func ExampleMonitoringClient_GetLocation() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewMonitoringClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &locationpb.GetLocationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/google.golang.org/genproto/googleapis/cloud/location#GetLocationRequest. + } + resp, err := c.GetLocation(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleMonitoringClient_ListLocations() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewMonitoringClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &locationpb.ListLocationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/google.golang.org/genproto/googleapis/cloud/location#ListLocationsRequest. + } + it := c.ListLocations(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*locationpb.ListLocationsResponse) + } +} + +func ExampleMonitoringClient_CancelOperation() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewMonitoringClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.CancelOperationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#CancelOperationRequest. + } + err = c.CancelOperation(ctx, req) + if err != nil { + // TODO: Handle error. + } +} + +func ExampleMonitoringClient_DeleteOperation() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewMonitoringClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.DeleteOperationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#DeleteOperationRequest. + } + err = c.DeleteOperation(ctx, req) + if err != nil { + // TODO: Handle error. + } +} + +func ExampleMonitoringClient_GetOperation() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewMonitoringClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.GetOperationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#GetOperationRequest. + } + resp, err := c.GetOperation(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleMonitoringClient_ListOperations() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewMonitoringClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.ListOperationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#ListOperationsRequest. + } + it := c.ListOperations(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*longrunningpb.ListOperationsResponse) + } +} diff --git a/cloudsecuritycompliance/apiv1/version.go b/cloudsecuritycompliance/apiv1/version.go new file mode 100644 index 000000000000..3607f164627c --- /dev/null +++ b/cloudsecuritycompliance/apiv1/version.go @@ -0,0 +1,23 @@ +// Copyright 2026 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 +// +// http://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. + +// Code generated by gapicgen. DO NOT EDIT. + +package cloudsecuritycompliance + +import "cloud.google.com/go/cloudsecuritycompliance/internal" + +func init() { + versionClient = internal.Version +} diff --git a/cloudsecuritycompliance/go.mod b/cloudsecuritycompliance/go.mod new file mode 100644 index 000000000000..991581500152 --- /dev/null +++ b/cloudsecuritycompliance/go.mod @@ -0,0 +1,39 @@ +module cloud.google.com/go/cloudsecuritycompliance + +go 1.24.0 + +require ( + cloud.google.com/go/longrunning v0.7.0 + github.com/googleapis/gax-go/v2 v2.16.0 + google.golang.org/api v0.258.0 + google.golang.org/genproto v0.0.0-20251222181119-0a764e51fe1b + google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b + google.golang.org/grpc v1.78.0 + google.golang.org/protobuf v1.36.11 +) + +require ( + cloud.google.com/go v0.121.6 // indirect + cloud.google.com/go/auth v0.17.0 // indirect + cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect + cloud.google.com/go/compute/metadata v0.9.0 // indirect + github.com/felixge/httpsnoop v1.0.4 // indirect + github.com/go-logr/logr v1.4.3 // indirect + github.com/go-logr/stdr v1.2.2 // indirect + github.com/google/s2a-go v0.1.9 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.7 // indirect + go.opentelemetry.io/auto/sdk v1.2.1 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 // indirect + go.opentelemetry.io/otel v1.38.0 // indirect + go.opentelemetry.io/otel/metric v1.38.0 // indirect + go.opentelemetry.io/otel/trace v1.38.0 // indirect + golang.org/x/crypto v0.46.0 // indirect + golang.org/x/net v0.48.0 // indirect + golang.org/x/oauth2 v0.34.0 // indirect + golang.org/x/sync v0.19.0 // indirect + golang.org/x/sys v0.39.0 // indirect + golang.org/x/text v0.32.0 // indirect + golang.org/x/time v0.14.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251213004720-97cd9d5aeac2 // indirect +) diff --git a/cloudsecuritycompliance/go.sum b/cloudsecuritycompliance/go.sum new file mode 100644 index 000000000000..3428fb5a5302 --- /dev/null +++ b/cloudsecuritycompliance/go.sum @@ -0,0 +1,90 @@ +cloud.google.com/go v0.121.6 h1:waZiuajrI28iAf40cWgycWNgaXPO06dupuS+sgibK6c= +cloud.google.com/go v0.121.6/go.mod h1:coChdst4Ea5vUpiALcYKXEpR1S9ZgXbhEzzMcMR66vI= +cloud.google.com/go/auth v0.17.0 h1:74yCm7hCj2rUyyAocqnFzsAYXgJhrG26XCFimrc/Kz4= +cloud.google.com/go/auth v0.17.0/go.mod h1:6wv/t5/6rOPAX4fJiRjKkJCvswLwdet7G8+UGXt7nCQ= +cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc= +cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c= +cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs= +cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10= +cloud.google.com/go/longrunning v0.7.0 h1:FV0+SYF1RIj59gyoWDRi45GiYUMM3K1qO51qoboQT1E= +cloud.google.com/go/longrunning v0.7.0/go.mod h1:ySn2yXmjbK9Ba0zsQqunhDkYi0+9rlXIwnoAf+h+TPY= +github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f h1:Y8xYupdHxryycyPlc9Y+bSQAYZnetRJ70VMVKm5CKI0= +github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f/go.mod h1:HlzOvOjVBOfTGSRXRyY0OiCS/3J1akRGQQpRO/7zyF4= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/envoyproxy/go-control-plane v0.13.5-0.20251024222203-75eaa193e329 h1:K+fnvUM0VZ7ZFJf0n4L/BRlnsb9pL/GuDG6FqaH+PwM= +github.com/envoyproxy/go-control-plane/envoy v1.35.0 h1:ixjkELDE+ru6idPxcHLj8LBVc2bFP7iBytj353BoHUo= +github.com/envoyproxy/go-control-plane/envoy v1.35.0/go.mod h1:09qwbGVuSWWAyN5t/b3iyVfz5+z8QWGrzkoqm/8SbEs= +github.com/envoyproxy/protoc-gen-validate v1.2.1 h1:DEo3O99U8j4hBFwbJfrz9VtgcDfUKS7KJ7spH3d86P8= +github.com/envoyproxy/protoc-gen-validate v1.2.1/go.mod h1:d/C80l/jxXLdfEIhX1W2TmLfsJ31lvEjwamM4DxlWXU= +github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0= +github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/enterprise-certificate-proxy v0.3.7 h1:zrn2Ee/nWmHulBx5sAVrGgAa0f2/R35S4DJwfFaUPFQ= +github.com/googleapis/enterprise-certificate-proxy v0.3.7/go.mod h1:MkHOF77EYAE7qfSuSS9PU6g4Nt4e11cnsDUowfwewLA= +github.com/googleapis/gax-go/v2 v2.16.0 h1:iHbQmKLLZrexmb0OSsNGTeSTS0HO4YvFOG8g5E4Zd0Y= +github.com/googleapis/gax-go/v2 v2.16.0/go.mod h1:o1vfQjjNZn4+dPnRdl/4ZD7S9414Y4xA+a/6Icj6l14= +github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo= +github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= +go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 h1:q4XOmH/0opmeuJtPsbFNivyl7bCt7yRBbeEm2sC/XtQ= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0/go.mod h1:snMWehoOh2wsEwnvvwtDyFCxVeDAODenXHtn5vzrKjo= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 h1:F7Jx+6hwnZ41NSFTO5q4LYDtJRXBf2PD0rNBkeB/lus= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0/go.mod h1:UHB22Z8QsdRDrnAtX4PntOl36ajSxcdUMt1sF7Y6E7Q= +go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= +go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= +go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA= +go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI= +go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E= +go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg= +go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM= +go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= +go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= +go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= +golang.org/x/crypto v0.46.0 h1:cKRW/pmt1pKAfetfu+RCEvjvZkA9RimPbh7bhFjGVBU= +golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0= +golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= +golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= +golang.org/x/oauth2 v0.34.0 h1:hqK/t4AKgbqWkdkcAeI8XLmbK+4m4G5YeQRrmiotGlw= +golang.org/x/oauth2 v0.34.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= +golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= +golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= +golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= +golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= +golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= +golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= +gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= +gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= +google.golang.org/api v0.258.0 h1:IKo1j5FBlN74fe5isA2PVozN3Y5pwNKriEgAXPOkDAc= +google.golang.org/api v0.258.0/go.mod h1:qhOMTQEZ6lUps63ZNq9jhODswwjkjYYguA7fA3TBFww= +google.golang.org/genproto v0.0.0-20251222181119-0a764e51fe1b h1:kqShdsddZrS6q+DGBCA73CzHsKDu5vW4qw78tFnbVvY= +google.golang.org/genproto v0.0.0-20251222181119-0a764e51fe1b/go.mod h1:gw1DtiPCt5uh/HV9STVEeaO00S5ATsJiJ2LsZV8lcDI= +google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b h1:uA40e2M6fYRBf0+8uN5mLlqUtV192iiksiICIBkYJ1E= +google.golang.org/genproto/googleapis/api v0.0.0-20251222181119-0a764e51fe1b/go.mod h1:Xa7le7qx2vmqB/SzWUBa7KdMjpdpAHlh5QCSnjessQk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251213004720-97cd9d5aeac2 h1:2I6GHUeJ/4shcDpoUlLs/2WPnhg7yJwvXtqcMJt9liA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251213004720-97cd9d5aeac2/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= +google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= +google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= +google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/cloudsecuritycompliance/internal/version.go b/cloudsecuritycompliance/internal/version.go new file mode 100644 index 000000000000..af6ecf6a609a --- /dev/null +++ b/cloudsecuritycompliance/internal/version.go @@ -0,0 +1,20 @@ +// Copyright 2026 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 +// +// http://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. + +// Code generated by gapicgen. DO NOT EDIT. + +package internal + +// Version is the current tagged release of the library. +const Version = "0.0.0" diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/AuditClient/CancelOperation/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/AuditClient/CancelOperation/main.go new file mode 100644 index 000000000000..9d6bca1fe93d --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/AuditClient/CancelOperation/main.go @@ -0,0 +1,51 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Audit_CancelOperation_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewAuditClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.CancelOperationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#CancelOperationRequest. + } + err = c.CancelOperation(ctx, req) + if err != nil { + // TODO: Handle error. + } +} + +// [END cloudsecuritycompliance_v1_generated_Audit_CancelOperation_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/AuditClient/CreateFrameworkAudit/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/AuditClient/CreateFrameworkAudit/main.go new file mode 100644 index 000000000000..cc01dd842218 --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/AuditClient/CreateFrameworkAudit/main.go @@ -0,0 +1,58 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Audit_CreateFrameworkAudit_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + cloudsecuritycompliancepb "cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewAuditClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.CreateFrameworkAuditRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#CreateFrameworkAuditRequest. + } + op, err := c.CreateFrameworkAudit(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END cloudsecuritycompliance_v1_generated_Audit_CreateFrameworkAudit_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/AuditClient/DeleteOperation/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/AuditClient/DeleteOperation/main.go new file mode 100644 index 000000000000..83f288d4b6f5 --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/AuditClient/DeleteOperation/main.go @@ -0,0 +1,51 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Audit_DeleteOperation_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewAuditClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.DeleteOperationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#DeleteOperationRequest. + } + err = c.DeleteOperation(ctx, req) + if err != nil { + // TODO: Handle error. + } +} + +// [END cloudsecuritycompliance_v1_generated_Audit_DeleteOperation_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/AuditClient/GenerateFrameworkAuditScopeReport/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/AuditClient/GenerateFrameworkAuditScopeReport/main.go new file mode 100644 index 000000000000..f2f859fcc076 --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/AuditClient/GenerateFrameworkAuditScopeReport/main.go @@ -0,0 +1,53 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Audit_GenerateFrameworkAuditScopeReport_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + cloudsecuritycompliancepb "cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewAuditClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.GenerateFrameworkAuditScopeReportRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#GenerateFrameworkAuditScopeReportRequest. + } + resp, err := c.GenerateFrameworkAuditScopeReport(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END cloudsecuritycompliance_v1_generated_Audit_GenerateFrameworkAuditScopeReport_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/AuditClient/GetFrameworkAudit/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/AuditClient/GetFrameworkAudit/main.go new file mode 100644 index 000000000000..6d688a291533 --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/AuditClient/GetFrameworkAudit/main.go @@ -0,0 +1,53 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Audit_GetFrameworkAudit_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + cloudsecuritycompliancepb "cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewAuditClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.GetFrameworkAuditRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#GetFrameworkAuditRequest. + } + resp, err := c.GetFrameworkAudit(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END cloudsecuritycompliance_v1_generated_Audit_GetFrameworkAudit_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/AuditClient/GetLocation/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/AuditClient/GetLocation/main.go new file mode 100644 index 000000000000..bf23a112803d --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/AuditClient/GetLocation/main.go @@ -0,0 +1,53 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Audit_GetLocation_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + locationpb "google.golang.org/genproto/googleapis/cloud/location" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewAuditClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &locationpb.GetLocationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/google.golang.org/genproto/googleapis/cloud/location#GetLocationRequest. + } + resp, err := c.GetLocation(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END cloudsecuritycompliance_v1_generated_Audit_GetLocation_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/AuditClient/GetOperation/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/AuditClient/GetOperation/main.go new file mode 100644 index 000000000000..9cb0d719a22b --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/AuditClient/GetOperation/main.go @@ -0,0 +1,53 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Audit_GetOperation_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewAuditClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.GetOperationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#GetOperationRequest. + } + resp, err := c.GetOperation(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END cloudsecuritycompliance_v1_generated_Audit_GetOperation_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/AuditClient/ListFrameworkAudits/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/AuditClient/ListFrameworkAudits/main.go new file mode 100644 index 000000000000..4d26c06c43d2 --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/AuditClient/ListFrameworkAudits/main.go @@ -0,0 +1,66 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Audit_ListFrameworkAudits_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + cloudsecuritycompliancepb "cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb" + "google.golang.org/api/iterator" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewAuditClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.ListFrameworkAuditsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#ListFrameworkAuditsRequest. + } + it := c.ListFrameworkAudits(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*cloudsecuritycompliancepb.ListFrameworkAuditsResponse) + } +} + +// [END cloudsecuritycompliance_v1_generated_Audit_ListFrameworkAudits_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/AuditClient/ListLocations/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/AuditClient/ListLocations/main.go new file mode 100644 index 000000000000..1c375217312d --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/AuditClient/ListLocations/main.go @@ -0,0 +1,66 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Audit_ListLocations_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + "google.golang.org/api/iterator" + locationpb "google.golang.org/genproto/googleapis/cloud/location" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewAuditClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &locationpb.ListLocationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/google.golang.org/genproto/googleapis/cloud/location#ListLocationsRequest. + } + it := c.ListLocations(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*locationpb.ListLocationsResponse) + } +} + +// [END cloudsecuritycompliance_v1_generated_Audit_ListLocations_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/AuditClient/ListOperations/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/AuditClient/ListOperations/main.go new file mode 100644 index 000000000000..a33b60950766 --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/AuditClient/ListOperations/main.go @@ -0,0 +1,66 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Audit_ListOperations_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" + "google.golang.org/api/iterator" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewAuditClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.ListOperationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#ListOperationsRequest. + } + it := c.ListOperations(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*longrunningpb.ListOperationsResponse) + } +} + +// [END cloudsecuritycompliance_v1_generated_Audit_ListOperations_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/CmEnrollmentClient/CalculateEffectiveCmEnrollment/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/CmEnrollmentClient/CalculateEffectiveCmEnrollment/main.go new file mode 100644 index 000000000000..d7690930388f --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/CmEnrollmentClient/CalculateEffectiveCmEnrollment/main.go @@ -0,0 +1,53 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_CmEnrollmentService_CalculateEffectiveCmEnrollment_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + cloudsecuritycompliancepb "cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewCmEnrollmentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.CalculateEffectiveCmEnrollmentRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#CalculateEffectiveCmEnrollmentRequest. + } + resp, err := c.CalculateEffectiveCmEnrollment(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END cloudsecuritycompliance_v1_generated_CmEnrollmentService_CalculateEffectiveCmEnrollment_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/CmEnrollmentClient/CancelOperation/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/CmEnrollmentClient/CancelOperation/main.go new file mode 100644 index 000000000000..bfc0cac909e0 --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/CmEnrollmentClient/CancelOperation/main.go @@ -0,0 +1,51 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_CmEnrollmentService_CancelOperation_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewCmEnrollmentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.CancelOperationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#CancelOperationRequest. + } + err = c.CancelOperation(ctx, req) + if err != nil { + // TODO: Handle error. + } +} + +// [END cloudsecuritycompliance_v1_generated_CmEnrollmentService_CancelOperation_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/CmEnrollmentClient/DeleteOperation/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/CmEnrollmentClient/DeleteOperation/main.go new file mode 100644 index 000000000000..5920c5aeed3c --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/CmEnrollmentClient/DeleteOperation/main.go @@ -0,0 +1,51 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_CmEnrollmentService_DeleteOperation_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewCmEnrollmentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.DeleteOperationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#DeleteOperationRequest. + } + err = c.DeleteOperation(ctx, req) + if err != nil { + // TODO: Handle error. + } +} + +// [END cloudsecuritycompliance_v1_generated_CmEnrollmentService_DeleteOperation_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/CmEnrollmentClient/GetLocation/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/CmEnrollmentClient/GetLocation/main.go new file mode 100644 index 000000000000..7c9c51ad7d16 --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/CmEnrollmentClient/GetLocation/main.go @@ -0,0 +1,53 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_CmEnrollmentService_GetLocation_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + locationpb "google.golang.org/genproto/googleapis/cloud/location" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewCmEnrollmentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &locationpb.GetLocationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/google.golang.org/genproto/googleapis/cloud/location#GetLocationRequest. + } + resp, err := c.GetLocation(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END cloudsecuritycompliance_v1_generated_CmEnrollmentService_GetLocation_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/CmEnrollmentClient/GetOperation/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/CmEnrollmentClient/GetOperation/main.go new file mode 100644 index 000000000000..ad38057221e2 --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/CmEnrollmentClient/GetOperation/main.go @@ -0,0 +1,53 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_CmEnrollmentService_GetOperation_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewCmEnrollmentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.GetOperationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#GetOperationRequest. + } + resp, err := c.GetOperation(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END cloudsecuritycompliance_v1_generated_CmEnrollmentService_GetOperation_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/CmEnrollmentClient/ListLocations/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/CmEnrollmentClient/ListLocations/main.go new file mode 100644 index 000000000000..f9ee8d8322c2 --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/CmEnrollmentClient/ListLocations/main.go @@ -0,0 +1,66 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_CmEnrollmentService_ListLocations_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + "google.golang.org/api/iterator" + locationpb "google.golang.org/genproto/googleapis/cloud/location" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewCmEnrollmentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &locationpb.ListLocationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/google.golang.org/genproto/googleapis/cloud/location#ListLocationsRequest. + } + it := c.ListLocations(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*locationpb.ListLocationsResponse) + } +} + +// [END cloudsecuritycompliance_v1_generated_CmEnrollmentService_ListLocations_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/CmEnrollmentClient/ListOperations/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/CmEnrollmentClient/ListOperations/main.go new file mode 100644 index 000000000000..151191101bd9 --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/CmEnrollmentClient/ListOperations/main.go @@ -0,0 +1,66 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_CmEnrollmentService_ListOperations_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" + "google.golang.org/api/iterator" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewCmEnrollmentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.ListOperationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#ListOperationsRequest. + } + it := c.ListOperations(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*longrunningpb.ListOperationsResponse) + } +} + +// [END cloudsecuritycompliance_v1_generated_CmEnrollmentService_ListOperations_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/CmEnrollmentClient/UpdateCmEnrollment/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/CmEnrollmentClient/UpdateCmEnrollment/main.go new file mode 100644 index 000000000000..a429b04c5142 --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/CmEnrollmentClient/UpdateCmEnrollment/main.go @@ -0,0 +1,53 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_CmEnrollmentService_UpdateCmEnrollment_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + cloudsecuritycompliancepb "cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewCmEnrollmentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.UpdateCmEnrollmentRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#UpdateCmEnrollmentRequest. + } + resp, err := c.UpdateCmEnrollment(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END cloudsecuritycompliance_v1_generated_CmEnrollmentService_UpdateCmEnrollment_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/CancelOperation/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/CancelOperation/main.go new file mode 100644 index 000000000000..c2437eccd222 --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/CancelOperation/main.go @@ -0,0 +1,51 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Config_CancelOperation_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewConfigClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.CancelOperationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#CancelOperationRequest. + } + err = c.CancelOperation(ctx, req) + if err != nil { + // TODO: Handle error. + } +} + +// [END cloudsecuritycompliance_v1_generated_Config_CancelOperation_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/CreateCloudControl/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/CreateCloudControl/main.go new file mode 100644 index 000000000000..990a45b14eb8 --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/CreateCloudControl/main.go @@ -0,0 +1,53 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Config_CreateCloudControl_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + cloudsecuritycompliancepb "cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewConfigClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.CreateCloudControlRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#CreateCloudControlRequest. + } + resp, err := c.CreateCloudControl(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END cloudsecuritycompliance_v1_generated_Config_CreateCloudControl_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/CreateFramework/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/CreateFramework/main.go new file mode 100644 index 000000000000..68b3bf8805d3 --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/CreateFramework/main.go @@ -0,0 +1,53 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Config_CreateFramework_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + cloudsecuritycompliancepb "cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewConfigClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.CreateFrameworkRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#CreateFrameworkRequest. + } + resp, err := c.CreateFramework(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END cloudsecuritycompliance_v1_generated_Config_CreateFramework_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/DeleteCloudControl/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/DeleteCloudControl/main.go new file mode 100644 index 000000000000..9bd012b1916a --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/DeleteCloudControl/main.go @@ -0,0 +1,51 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Config_DeleteCloudControl_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + cloudsecuritycompliancepb "cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewConfigClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.DeleteCloudControlRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#DeleteCloudControlRequest. + } + err = c.DeleteCloudControl(ctx, req) + if err != nil { + // TODO: Handle error. + } +} + +// [END cloudsecuritycompliance_v1_generated_Config_DeleteCloudControl_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/DeleteFramework/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/DeleteFramework/main.go new file mode 100644 index 000000000000..baaf8d370726 --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/DeleteFramework/main.go @@ -0,0 +1,51 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Config_DeleteFramework_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + cloudsecuritycompliancepb "cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewConfigClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.DeleteFrameworkRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#DeleteFrameworkRequest. + } + err = c.DeleteFramework(ctx, req) + if err != nil { + // TODO: Handle error. + } +} + +// [END cloudsecuritycompliance_v1_generated_Config_DeleteFramework_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/DeleteOperation/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/DeleteOperation/main.go new file mode 100644 index 000000000000..b523843b814a --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/DeleteOperation/main.go @@ -0,0 +1,51 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Config_DeleteOperation_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewConfigClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.DeleteOperationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#DeleteOperationRequest. + } + err = c.DeleteOperation(ctx, req) + if err != nil { + // TODO: Handle error. + } +} + +// [END cloudsecuritycompliance_v1_generated_Config_DeleteOperation_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/GetCloudControl/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/GetCloudControl/main.go new file mode 100644 index 000000000000..8a2f5d44f1d9 --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/GetCloudControl/main.go @@ -0,0 +1,53 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Config_GetCloudControl_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + cloudsecuritycompliancepb "cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewConfigClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.GetCloudControlRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#GetCloudControlRequest. + } + resp, err := c.GetCloudControl(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END cloudsecuritycompliance_v1_generated_Config_GetCloudControl_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/GetFramework/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/GetFramework/main.go new file mode 100644 index 000000000000..b54a5ab70ff6 --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/GetFramework/main.go @@ -0,0 +1,53 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Config_GetFramework_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + cloudsecuritycompliancepb "cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewConfigClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.GetFrameworkRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#GetFrameworkRequest. + } + resp, err := c.GetFramework(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END cloudsecuritycompliance_v1_generated_Config_GetFramework_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/GetLocation/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/GetLocation/main.go new file mode 100644 index 000000000000..8df3c1f5e8a6 --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/GetLocation/main.go @@ -0,0 +1,53 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Config_GetLocation_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + locationpb "google.golang.org/genproto/googleapis/cloud/location" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewConfigClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &locationpb.GetLocationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/google.golang.org/genproto/googleapis/cloud/location#GetLocationRequest. + } + resp, err := c.GetLocation(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END cloudsecuritycompliance_v1_generated_Config_GetLocation_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/GetOperation/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/GetOperation/main.go new file mode 100644 index 000000000000..bdfa76701a42 --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/GetOperation/main.go @@ -0,0 +1,53 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Config_GetOperation_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewConfigClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.GetOperationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#GetOperationRequest. + } + resp, err := c.GetOperation(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END cloudsecuritycompliance_v1_generated_Config_GetOperation_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/ListCloudControls/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/ListCloudControls/main.go new file mode 100644 index 000000000000..15674851eefc --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/ListCloudControls/main.go @@ -0,0 +1,66 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Config_ListCloudControls_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + cloudsecuritycompliancepb "cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb" + "google.golang.org/api/iterator" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewConfigClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.ListCloudControlsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#ListCloudControlsRequest. + } + it := c.ListCloudControls(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*cloudsecuritycompliancepb.ListCloudControlsResponse) + } +} + +// [END cloudsecuritycompliance_v1_generated_Config_ListCloudControls_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/ListFrameworks/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/ListFrameworks/main.go new file mode 100644 index 000000000000..9600dbead22f --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/ListFrameworks/main.go @@ -0,0 +1,66 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Config_ListFrameworks_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + cloudsecuritycompliancepb "cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb" + "google.golang.org/api/iterator" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewConfigClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.ListFrameworksRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#ListFrameworksRequest. + } + it := c.ListFrameworks(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*cloudsecuritycompliancepb.ListFrameworksResponse) + } +} + +// [END cloudsecuritycompliance_v1_generated_Config_ListFrameworks_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/ListLocations/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/ListLocations/main.go new file mode 100644 index 000000000000..763dbbb14b5e --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/ListLocations/main.go @@ -0,0 +1,66 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Config_ListLocations_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + "google.golang.org/api/iterator" + locationpb "google.golang.org/genproto/googleapis/cloud/location" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewConfigClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &locationpb.ListLocationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/google.golang.org/genproto/googleapis/cloud/location#ListLocationsRequest. + } + it := c.ListLocations(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*locationpb.ListLocationsResponse) + } +} + +// [END cloudsecuritycompliance_v1_generated_Config_ListLocations_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/ListOperations/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/ListOperations/main.go new file mode 100644 index 000000000000..22dc659a83db --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/ListOperations/main.go @@ -0,0 +1,66 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Config_ListOperations_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" + "google.golang.org/api/iterator" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewConfigClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.ListOperationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#ListOperationsRequest. + } + it := c.ListOperations(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*longrunningpb.ListOperationsResponse) + } +} + +// [END cloudsecuritycompliance_v1_generated_Config_ListOperations_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/UpdateCloudControl/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/UpdateCloudControl/main.go new file mode 100644 index 000000000000..9d518f6a8f7e --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/UpdateCloudControl/main.go @@ -0,0 +1,53 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Config_UpdateCloudControl_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + cloudsecuritycompliancepb "cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewConfigClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.UpdateCloudControlRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#UpdateCloudControlRequest. + } + resp, err := c.UpdateCloudControl(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END cloudsecuritycompliance_v1_generated_Config_UpdateCloudControl_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/UpdateFramework/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/UpdateFramework/main.go new file mode 100644 index 000000000000..4034a674480f --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/ConfigClient/UpdateFramework/main.go @@ -0,0 +1,53 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Config_UpdateFramework_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + cloudsecuritycompliancepb "cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewConfigClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.UpdateFrameworkRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#UpdateFrameworkRequest. + } + resp, err := c.UpdateFramework(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END cloudsecuritycompliance_v1_generated_Config_UpdateFramework_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/DeploymentClient/CancelOperation/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/DeploymentClient/CancelOperation/main.go new file mode 100644 index 000000000000..d473f7bcc19e --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/DeploymentClient/CancelOperation/main.go @@ -0,0 +1,51 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Deployment_CancelOperation_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewDeploymentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.CancelOperationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#CancelOperationRequest. + } + err = c.CancelOperation(ctx, req) + if err != nil { + // TODO: Handle error. + } +} + +// [END cloudsecuritycompliance_v1_generated_Deployment_CancelOperation_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/DeploymentClient/CreateFrameworkDeployment/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/DeploymentClient/CreateFrameworkDeployment/main.go new file mode 100644 index 000000000000..78db6cf8e510 --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/DeploymentClient/CreateFrameworkDeployment/main.go @@ -0,0 +1,58 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Deployment_CreateFrameworkDeployment_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + cloudsecuritycompliancepb "cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewDeploymentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.CreateFrameworkDeploymentRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#CreateFrameworkDeploymentRequest. + } + op, err := c.CreateFrameworkDeployment(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END cloudsecuritycompliance_v1_generated_Deployment_CreateFrameworkDeployment_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/DeploymentClient/DeleteFrameworkDeployment/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/DeploymentClient/DeleteFrameworkDeployment/main.go new file mode 100644 index 000000000000..ab7ad15634bf --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/DeploymentClient/DeleteFrameworkDeployment/main.go @@ -0,0 +1,56 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Deployment_DeleteFrameworkDeployment_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + cloudsecuritycompliancepb "cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewDeploymentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.DeleteFrameworkDeploymentRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#DeleteFrameworkDeploymentRequest. + } + op, err := c.DeleteFrameworkDeployment(ctx, req) + if err != nil { + // TODO: Handle error. + } + + err = op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } +} + +// [END cloudsecuritycompliance_v1_generated_Deployment_DeleteFrameworkDeployment_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/DeploymentClient/DeleteOperation/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/DeploymentClient/DeleteOperation/main.go new file mode 100644 index 000000000000..067a124d1054 --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/DeploymentClient/DeleteOperation/main.go @@ -0,0 +1,51 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Deployment_DeleteOperation_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewDeploymentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.DeleteOperationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#DeleteOperationRequest. + } + err = c.DeleteOperation(ctx, req) + if err != nil { + // TODO: Handle error. + } +} + +// [END cloudsecuritycompliance_v1_generated_Deployment_DeleteOperation_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/DeploymentClient/GetCloudControlDeployment/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/DeploymentClient/GetCloudControlDeployment/main.go new file mode 100644 index 000000000000..3796a79cb640 --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/DeploymentClient/GetCloudControlDeployment/main.go @@ -0,0 +1,53 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Deployment_GetCloudControlDeployment_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + cloudsecuritycompliancepb "cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewDeploymentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.GetCloudControlDeploymentRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#GetCloudControlDeploymentRequest. + } + resp, err := c.GetCloudControlDeployment(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END cloudsecuritycompliance_v1_generated_Deployment_GetCloudControlDeployment_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/DeploymentClient/GetFrameworkDeployment/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/DeploymentClient/GetFrameworkDeployment/main.go new file mode 100644 index 000000000000..b62b078a5d1e --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/DeploymentClient/GetFrameworkDeployment/main.go @@ -0,0 +1,53 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Deployment_GetFrameworkDeployment_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + cloudsecuritycompliancepb "cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewDeploymentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.GetFrameworkDeploymentRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#GetFrameworkDeploymentRequest. + } + resp, err := c.GetFrameworkDeployment(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END cloudsecuritycompliance_v1_generated_Deployment_GetFrameworkDeployment_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/DeploymentClient/GetLocation/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/DeploymentClient/GetLocation/main.go new file mode 100644 index 000000000000..b78ba93d00f0 --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/DeploymentClient/GetLocation/main.go @@ -0,0 +1,53 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Deployment_GetLocation_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + locationpb "google.golang.org/genproto/googleapis/cloud/location" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewDeploymentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &locationpb.GetLocationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/google.golang.org/genproto/googleapis/cloud/location#GetLocationRequest. + } + resp, err := c.GetLocation(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END cloudsecuritycompliance_v1_generated_Deployment_GetLocation_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/DeploymentClient/GetOperation/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/DeploymentClient/GetOperation/main.go new file mode 100644 index 000000000000..b4a463e117d5 --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/DeploymentClient/GetOperation/main.go @@ -0,0 +1,53 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Deployment_GetOperation_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewDeploymentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.GetOperationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#GetOperationRequest. + } + resp, err := c.GetOperation(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END cloudsecuritycompliance_v1_generated_Deployment_GetOperation_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/DeploymentClient/ListCloudControlDeployments/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/DeploymentClient/ListCloudControlDeployments/main.go new file mode 100644 index 000000000000..ec5fb8e606ee --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/DeploymentClient/ListCloudControlDeployments/main.go @@ -0,0 +1,66 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Deployment_ListCloudControlDeployments_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + cloudsecuritycompliancepb "cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb" + "google.golang.org/api/iterator" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewDeploymentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.ListCloudControlDeploymentsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#ListCloudControlDeploymentsRequest. + } + it := c.ListCloudControlDeployments(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*cloudsecuritycompliancepb.ListCloudControlDeploymentsResponse) + } +} + +// [END cloudsecuritycompliance_v1_generated_Deployment_ListCloudControlDeployments_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/DeploymentClient/ListFrameworkDeployments/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/DeploymentClient/ListFrameworkDeployments/main.go new file mode 100644 index 000000000000..98803cdcefa0 --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/DeploymentClient/ListFrameworkDeployments/main.go @@ -0,0 +1,66 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Deployment_ListFrameworkDeployments_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + cloudsecuritycompliancepb "cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb" + "google.golang.org/api/iterator" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewDeploymentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.ListFrameworkDeploymentsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#ListFrameworkDeploymentsRequest. + } + it := c.ListFrameworkDeployments(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*cloudsecuritycompliancepb.ListFrameworkDeploymentsResponse) + } +} + +// [END cloudsecuritycompliance_v1_generated_Deployment_ListFrameworkDeployments_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/DeploymentClient/ListLocations/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/DeploymentClient/ListLocations/main.go new file mode 100644 index 000000000000..cf50618b8f01 --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/DeploymentClient/ListLocations/main.go @@ -0,0 +1,66 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Deployment_ListLocations_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + "google.golang.org/api/iterator" + locationpb "google.golang.org/genproto/googleapis/cloud/location" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewDeploymentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &locationpb.ListLocationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/google.golang.org/genproto/googleapis/cloud/location#ListLocationsRequest. + } + it := c.ListLocations(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*locationpb.ListLocationsResponse) + } +} + +// [END cloudsecuritycompliance_v1_generated_Deployment_ListLocations_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/DeploymentClient/ListOperations/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/DeploymentClient/ListOperations/main.go new file mode 100644 index 000000000000..3914a81752e5 --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/DeploymentClient/ListOperations/main.go @@ -0,0 +1,66 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Deployment_ListOperations_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" + "google.golang.org/api/iterator" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewDeploymentClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.ListOperationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#ListOperationsRequest. + } + it := c.ListOperations(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*longrunningpb.ListOperationsResponse) + } +} + +// [END cloudsecuritycompliance_v1_generated_Deployment_ListOperations_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/MonitoringClient/AggregateFrameworkComplianceReport/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/MonitoringClient/AggregateFrameworkComplianceReport/main.go new file mode 100644 index 000000000000..071cdce541a1 --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/MonitoringClient/AggregateFrameworkComplianceReport/main.go @@ -0,0 +1,53 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Monitoring_AggregateFrameworkComplianceReport_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + cloudsecuritycompliancepb "cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewMonitoringClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.AggregateFrameworkComplianceReportRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#AggregateFrameworkComplianceReportRequest. + } + resp, err := c.AggregateFrameworkComplianceReport(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END cloudsecuritycompliance_v1_generated_Monitoring_AggregateFrameworkComplianceReport_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/MonitoringClient/CancelOperation/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/MonitoringClient/CancelOperation/main.go new file mode 100644 index 000000000000..492d317c43e3 --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/MonitoringClient/CancelOperation/main.go @@ -0,0 +1,51 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Monitoring_CancelOperation_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewMonitoringClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.CancelOperationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#CancelOperationRequest. + } + err = c.CancelOperation(ctx, req) + if err != nil { + // TODO: Handle error. + } +} + +// [END cloudsecuritycompliance_v1_generated_Monitoring_CancelOperation_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/MonitoringClient/DeleteOperation/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/MonitoringClient/DeleteOperation/main.go new file mode 100644 index 000000000000..acca6da12ccc --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/MonitoringClient/DeleteOperation/main.go @@ -0,0 +1,51 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Monitoring_DeleteOperation_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewMonitoringClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.DeleteOperationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#DeleteOperationRequest. + } + err = c.DeleteOperation(ctx, req) + if err != nil { + // TODO: Handle error. + } +} + +// [END cloudsecuritycompliance_v1_generated_Monitoring_DeleteOperation_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/MonitoringClient/FetchFrameworkComplianceReport/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/MonitoringClient/FetchFrameworkComplianceReport/main.go new file mode 100644 index 000000000000..37604d272ec9 --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/MonitoringClient/FetchFrameworkComplianceReport/main.go @@ -0,0 +1,53 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Monitoring_FetchFrameworkComplianceReport_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + cloudsecuritycompliancepb "cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewMonitoringClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.FetchFrameworkComplianceReportRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#FetchFrameworkComplianceReportRequest. + } + resp, err := c.FetchFrameworkComplianceReport(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END cloudsecuritycompliance_v1_generated_Monitoring_FetchFrameworkComplianceReport_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/MonitoringClient/GetLocation/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/MonitoringClient/GetLocation/main.go new file mode 100644 index 000000000000..fa3bc135bb90 --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/MonitoringClient/GetLocation/main.go @@ -0,0 +1,53 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Monitoring_GetLocation_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + locationpb "google.golang.org/genproto/googleapis/cloud/location" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewMonitoringClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &locationpb.GetLocationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/google.golang.org/genproto/googleapis/cloud/location#GetLocationRequest. + } + resp, err := c.GetLocation(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END cloudsecuritycompliance_v1_generated_Monitoring_GetLocation_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/MonitoringClient/GetOperation/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/MonitoringClient/GetOperation/main.go new file mode 100644 index 000000000000..6cb274094c58 --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/MonitoringClient/GetOperation/main.go @@ -0,0 +1,53 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Monitoring_GetOperation_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewMonitoringClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.GetOperationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#GetOperationRequest. + } + resp, err := c.GetOperation(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END cloudsecuritycompliance_v1_generated_Monitoring_GetOperation_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/MonitoringClient/ListControlComplianceSummaries/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/MonitoringClient/ListControlComplianceSummaries/main.go new file mode 100644 index 000000000000..496982663c14 --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/MonitoringClient/ListControlComplianceSummaries/main.go @@ -0,0 +1,66 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Monitoring_ListControlComplianceSummaries_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + cloudsecuritycompliancepb "cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb" + "google.golang.org/api/iterator" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewMonitoringClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.ListControlComplianceSummariesRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#ListControlComplianceSummariesRequest. + } + it := c.ListControlComplianceSummaries(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*cloudsecuritycompliancepb.ListControlComplianceSummariesResponse) + } +} + +// [END cloudsecuritycompliance_v1_generated_Monitoring_ListControlComplianceSummaries_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/MonitoringClient/ListFindingSummaries/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/MonitoringClient/ListFindingSummaries/main.go new file mode 100644 index 000000000000..b176f7160ba1 --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/MonitoringClient/ListFindingSummaries/main.go @@ -0,0 +1,66 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Monitoring_ListFindingSummaries_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + cloudsecuritycompliancepb "cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb" + "google.golang.org/api/iterator" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewMonitoringClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.ListFindingSummariesRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#ListFindingSummariesRequest. + } + it := c.ListFindingSummaries(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*cloudsecuritycompliancepb.ListFindingSummariesResponse) + } +} + +// [END cloudsecuritycompliance_v1_generated_Monitoring_ListFindingSummaries_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/MonitoringClient/ListFrameworkComplianceSummaries/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/MonitoringClient/ListFrameworkComplianceSummaries/main.go new file mode 100644 index 000000000000..601df9910224 --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/MonitoringClient/ListFrameworkComplianceSummaries/main.go @@ -0,0 +1,66 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Monitoring_ListFrameworkComplianceSummaries_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + cloudsecuritycompliancepb "cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb" + "google.golang.org/api/iterator" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewMonitoringClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &cloudsecuritycompliancepb.ListFrameworkComplianceSummariesRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/cloudsecuritycompliance/apiv1/cloudsecuritycompliancepb#ListFrameworkComplianceSummariesRequest. + } + it := c.ListFrameworkComplianceSummaries(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*cloudsecuritycompliancepb.ListFrameworkComplianceSummariesResponse) + } +} + +// [END cloudsecuritycompliance_v1_generated_Monitoring_ListFrameworkComplianceSummaries_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/MonitoringClient/ListLocations/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/MonitoringClient/ListLocations/main.go new file mode 100644 index 000000000000..7336539336d4 --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/MonitoringClient/ListLocations/main.go @@ -0,0 +1,66 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Monitoring_ListLocations_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + "google.golang.org/api/iterator" + locationpb "google.golang.org/genproto/googleapis/cloud/location" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewMonitoringClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &locationpb.ListLocationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/google.golang.org/genproto/googleapis/cloud/location#ListLocationsRequest. + } + it := c.ListLocations(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*locationpb.ListLocationsResponse) + } +} + +// [END cloudsecuritycompliance_v1_generated_Monitoring_ListLocations_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/MonitoringClient/ListOperations/main.go b/internal/generated/snippets/cloudsecuritycompliance/apiv1/MonitoringClient/ListOperations/main.go new file mode 100644 index 000000000000..3a6514519115 --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/MonitoringClient/ListOperations/main.go @@ -0,0 +1,66 @@ +// Copyright 2026 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. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START cloudsecuritycompliance_v1_generated_Monitoring_ListOperations_sync] + +package main + +import ( + "context" + + cloudsecuritycompliance "cloud.google.com/go/cloudsecuritycompliance/apiv1" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" + "google.golang.org/api/iterator" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := cloudsecuritycompliance.NewMonitoringClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &longrunningpb.ListOperationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/longrunning/autogen/longrunningpb#ListOperationsRequest. + } + it := c.ListOperations(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*longrunningpb.ListOperationsResponse) + } +} + +// [END cloudsecuritycompliance_v1_generated_Monitoring_ListOperations_sync] diff --git a/internal/generated/snippets/cloudsecuritycompliance/apiv1/snippet_metadata.google.cloud.cloudsecuritycompliance.v1.json b/internal/generated/snippets/cloudsecuritycompliance/apiv1/snippet_metadata.google.cloud.cloudsecuritycompliance.v1.json new file mode 100644 index 000000000000..ef080bd96469 --- /dev/null +++ b/internal/generated/snippets/cloudsecuritycompliance/apiv1/snippet_metadata.google.cloud.cloudsecuritycompliance.v1.json @@ -0,0 +1,2625 @@ +{ + "clientLibrary": { + "name": "cloud.google.com/go/cloudsecuritycompliance/apiv1", + "version": "0.0.0", + "language": "GO", + "apis": [ + { + "id": "google.cloud.cloudsecuritycompliance.v1", + "version": "v1" + } + ] + }, + "snippets": [ + { + "regionTag": "cloudsecuritycompliance_v1_generated_Audit_CancelOperation_sync", + "title": "cloudsecuritycompliance CancelOperation Sample", + "description": "CancelOperation is a utility method from google.longrunning.Operations.", + "file": "AuditClient/CancelOperation/main.go", + "language": "GO", + "clientMethod": { + "shortName": "CancelOperation", + "fullName": "google.cloud.cloudsecuritycompliance.v1.AuditClient.CancelOperation", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "longrunningpb.CancelOperationRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "client": { + "shortName": "AuditClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.AuditClient" + }, + "method": { + "shortName": "CancelOperation", + "fullName": "google.longrunning.Operations.CancelOperation", + "service": { + "shortName": "Operations", + "fullName": "google.longrunning.Operations" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 51, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Audit_CreateFrameworkAudit_sync", + "title": "cloudsecuritycompliance CreateFrameworkAudit Sample", + "description": "CreateFrameworkAudit creates an audit scope report for a framework.", + "file": "AuditClient/CreateFrameworkAudit/main.go", + "language": "GO", + "clientMethod": { + "shortName": "CreateFrameworkAudit", + "fullName": "google.cloud.cloudsecuritycompliance.v1.AuditClient.CreateFrameworkAudit", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "cloudsecuritycompliancepb.CreateFrameworkAuditRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "CreateFrameworkAuditOperation", + "client": { + "shortName": "AuditClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.AuditClient" + }, + "method": { + "shortName": "CreateFrameworkAudit", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Audit.CreateFrameworkAudit", + "service": { + "shortName": "Audit", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Audit" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 58, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Audit_DeleteOperation_sync", + "title": "cloudsecuritycompliance DeleteOperation Sample", + "description": "DeleteOperation is a utility method from google.longrunning.Operations.", + "file": "AuditClient/DeleteOperation/main.go", + "language": "GO", + "clientMethod": { + "shortName": "DeleteOperation", + "fullName": "google.cloud.cloudsecuritycompliance.v1.AuditClient.DeleteOperation", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "longrunningpb.DeleteOperationRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "client": { + "shortName": "AuditClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.AuditClient" + }, + "method": { + "shortName": "DeleteOperation", + "fullName": "google.longrunning.Operations.DeleteOperation", + "service": { + "shortName": "Operations", + "fullName": "google.longrunning.Operations" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 51, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Audit_GenerateFrameworkAuditScopeReport_sync", + "title": "cloudsecuritycompliance GenerateFrameworkAuditScopeReport Sample", + "description": "GenerateFrameworkAuditScopeReport generates an audit scope report for a framework.", + "file": "AuditClient/GenerateFrameworkAuditScopeReport/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GenerateFrameworkAuditScopeReport", + "fullName": "google.cloud.cloudsecuritycompliance.v1.AuditClient.GenerateFrameworkAuditScopeReport", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "cloudsecuritycompliancepb.GenerateFrameworkAuditScopeReportRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*cloudsecuritycompliancepb.GenerateFrameworkAuditScopeReportResponse", + "client": { + "shortName": "AuditClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.AuditClient" + }, + "method": { + "shortName": "GenerateFrameworkAuditScopeReport", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Audit.GenerateFrameworkAuditScopeReport", + "service": { + "shortName": "Audit", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Audit" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Audit_GetFrameworkAudit_sync", + "title": "cloudsecuritycompliance GetFrameworkAudit Sample", + "description": "GetFrameworkAudit gets the details for a framework audit.", + "file": "AuditClient/GetFrameworkAudit/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GetFrameworkAudit", + "fullName": "google.cloud.cloudsecuritycompliance.v1.AuditClient.GetFrameworkAudit", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "cloudsecuritycompliancepb.GetFrameworkAuditRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*cloudsecuritycompliancepb.FrameworkAudit", + "client": { + "shortName": "AuditClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.AuditClient" + }, + "method": { + "shortName": "GetFrameworkAudit", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Audit.GetFrameworkAudit", + "service": { + "shortName": "Audit", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Audit" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Audit_GetLocation_sync", + "title": "cloudsecuritycompliance GetLocation Sample", + "description": "GetLocation gets information about a location.", + "file": "AuditClient/GetLocation/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GetLocation", + "fullName": "google.cloud.cloudsecuritycompliance.v1.AuditClient.GetLocation", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "locationpb.GetLocationRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*locationpb.Location", + "client": { + "shortName": "AuditClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.AuditClient" + }, + "method": { + "shortName": "GetLocation", + "fullName": "google.cloud.location.Locations.GetLocation", + "service": { + "shortName": "Locations", + "fullName": "google.cloud.location.Locations" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Audit_GetOperation_sync", + "title": "cloudsecuritycompliance GetOperation Sample", + "description": "GetOperation is a utility method from google.longrunning.Operations.", + "file": "AuditClient/GetOperation/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GetOperation", + "fullName": "google.cloud.cloudsecuritycompliance.v1.AuditClient.GetOperation", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "longrunningpb.GetOperationRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*longrunningpb.Operation", + "client": { + "shortName": "AuditClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.AuditClient" + }, + "method": { + "shortName": "GetOperation", + "fullName": "google.longrunning.Operations.GetOperation", + "service": { + "shortName": "Operations", + "fullName": "google.longrunning.Operations" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Audit_ListFrameworkAudits_sync", + "title": "cloudsecuritycompliance ListFrameworkAudits Sample", + "description": "ListFrameworkAudits lists the framework audits for a given organization, folder, or project.", + "file": "AuditClient/ListFrameworkAudits/main.go", + "language": "GO", + "clientMethod": { + "shortName": "ListFrameworkAudits", + "fullName": "google.cloud.cloudsecuritycompliance.v1.AuditClient.ListFrameworkAudits", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "cloudsecuritycompliancepb.ListFrameworkAuditsRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "FrameworkAuditIterator", + "client": { + "shortName": "AuditClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.AuditClient" + }, + "method": { + "shortName": "ListFrameworkAudits", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Audit.ListFrameworkAudits", + "service": { + "shortName": "Audit", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Audit" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 66, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Audit_ListLocations_sync", + "title": "cloudsecuritycompliance ListLocations Sample", + "description": "ListLocations lists information about the supported locations for this service.", + "file": "AuditClient/ListLocations/main.go", + "language": "GO", + "clientMethod": { + "shortName": "ListLocations", + "fullName": "google.cloud.cloudsecuritycompliance.v1.AuditClient.ListLocations", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "locationpb.ListLocationsRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "LocationIterator", + "client": { + "shortName": "AuditClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.AuditClient" + }, + "method": { + "shortName": "ListLocations", + "fullName": "google.cloud.location.Locations.ListLocations", + "service": { + "shortName": "Locations", + "fullName": "google.cloud.location.Locations" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 66, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Audit_ListOperations_sync", + "title": "cloudsecuritycompliance ListOperations Sample", + "description": "ListOperations is a utility method from google.longrunning.Operations.", + "file": "AuditClient/ListOperations/main.go", + "language": "GO", + "clientMethod": { + "shortName": "ListOperations", + "fullName": "google.cloud.cloudsecuritycompliance.v1.AuditClient.ListOperations", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "longrunningpb.ListOperationsRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "OperationIterator", + "client": { + "shortName": "AuditClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.AuditClient" + }, + "method": { + "shortName": "ListOperations", + "fullName": "google.longrunning.Operations.ListOperations", + "service": { + "shortName": "Operations", + "fullName": "google.longrunning.Operations" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 66, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_CmEnrollmentService_CalculateEffectiveCmEnrollment_sync", + "title": "cloudsecuritycompliance CalculateEffectiveCmEnrollment Sample", + "description": "CalculateEffectiveCmEnrollment calculates the effective Compliance Manager enrollment for a resource.\nAn effective enrollment is either a direct enrollment of a\nresource (if it exists), or an enrollment of the closest parent of a\nresource that's enrolled in Compliance Manager.", + "file": "CmEnrollmentClient/CalculateEffectiveCmEnrollment/main.go", + "language": "GO", + "clientMethod": { + "shortName": "CalculateEffectiveCmEnrollment", + "fullName": "google.cloud.cloudsecuritycompliance.v1.CmEnrollmentClient.CalculateEffectiveCmEnrollment", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "cloudsecuritycompliancepb.CalculateEffectiveCmEnrollmentRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*cloudsecuritycompliancepb.CalculateEffectiveCmEnrollmentResponse", + "client": { + "shortName": "CmEnrollmentClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.CmEnrollmentClient" + }, + "method": { + "shortName": "CalculateEffectiveCmEnrollment", + "fullName": "google.cloud.cloudsecuritycompliance.v1.CmEnrollmentService.CalculateEffectiveCmEnrollment", + "service": { + "shortName": "CmEnrollmentService", + "fullName": "google.cloud.cloudsecuritycompliance.v1.CmEnrollmentService" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_CmEnrollmentService_CancelOperation_sync", + "title": "cloudsecuritycompliance CancelOperation Sample", + "description": "CancelOperation is a utility method from google.longrunning.Operations.", + "file": "CmEnrollmentClient/CancelOperation/main.go", + "language": "GO", + "clientMethod": { + "shortName": "CancelOperation", + "fullName": "google.cloud.cloudsecuritycompliance.v1.CmEnrollmentClient.CancelOperation", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "longrunningpb.CancelOperationRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "client": { + "shortName": "CmEnrollmentClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.CmEnrollmentClient" + }, + "method": { + "shortName": "CancelOperation", + "fullName": "google.longrunning.Operations.CancelOperation", + "service": { + "shortName": "Operations", + "fullName": "google.longrunning.Operations" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 51, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_CmEnrollmentService_DeleteOperation_sync", + "title": "cloudsecuritycompliance DeleteOperation Sample", + "description": "DeleteOperation is a utility method from google.longrunning.Operations.", + "file": "CmEnrollmentClient/DeleteOperation/main.go", + "language": "GO", + "clientMethod": { + "shortName": "DeleteOperation", + "fullName": "google.cloud.cloudsecuritycompliance.v1.CmEnrollmentClient.DeleteOperation", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "longrunningpb.DeleteOperationRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "client": { + "shortName": "CmEnrollmentClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.CmEnrollmentClient" + }, + "method": { + "shortName": "DeleteOperation", + "fullName": "google.longrunning.Operations.DeleteOperation", + "service": { + "shortName": "Operations", + "fullName": "google.longrunning.Operations" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 51, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_CmEnrollmentService_GetLocation_sync", + "title": "cloudsecuritycompliance GetLocation Sample", + "description": "GetLocation gets information about a location.", + "file": "CmEnrollmentClient/GetLocation/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GetLocation", + "fullName": "google.cloud.cloudsecuritycompliance.v1.CmEnrollmentClient.GetLocation", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "locationpb.GetLocationRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*locationpb.Location", + "client": { + "shortName": "CmEnrollmentClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.CmEnrollmentClient" + }, + "method": { + "shortName": "GetLocation", + "fullName": "google.cloud.location.Locations.GetLocation", + "service": { + "shortName": "Locations", + "fullName": "google.cloud.location.Locations" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_CmEnrollmentService_GetOperation_sync", + "title": "cloudsecuritycompliance GetOperation Sample", + "description": "GetOperation is a utility method from google.longrunning.Operations.", + "file": "CmEnrollmentClient/GetOperation/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GetOperation", + "fullName": "google.cloud.cloudsecuritycompliance.v1.CmEnrollmentClient.GetOperation", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "longrunningpb.GetOperationRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*longrunningpb.Operation", + "client": { + "shortName": "CmEnrollmentClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.CmEnrollmentClient" + }, + "method": { + "shortName": "GetOperation", + "fullName": "google.longrunning.Operations.GetOperation", + "service": { + "shortName": "Operations", + "fullName": "google.longrunning.Operations" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_CmEnrollmentService_ListLocations_sync", + "title": "cloudsecuritycompliance ListLocations Sample", + "description": "ListLocations lists information about the supported locations for this service.", + "file": "CmEnrollmentClient/ListLocations/main.go", + "language": "GO", + "clientMethod": { + "shortName": "ListLocations", + "fullName": "google.cloud.cloudsecuritycompliance.v1.CmEnrollmentClient.ListLocations", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "locationpb.ListLocationsRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "LocationIterator", + "client": { + "shortName": "CmEnrollmentClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.CmEnrollmentClient" + }, + "method": { + "shortName": "ListLocations", + "fullName": "google.cloud.location.Locations.ListLocations", + "service": { + "shortName": "Locations", + "fullName": "google.cloud.location.Locations" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 66, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_CmEnrollmentService_ListOperations_sync", + "title": "cloudsecuritycompliance ListOperations Sample", + "description": "ListOperations is a utility method from google.longrunning.Operations.", + "file": "CmEnrollmentClient/ListOperations/main.go", + "language": "GO", + "clientMethod": { + "shortName": "ListOperations", + "fullName": "google.cloud.cloudsecuritycompliance.v1.CmEnrollmentClient.ListOperations", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "longrunningpb.ListOperationsRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "OperationIterator", + "client": { + "shortName": "CmEnrollmentClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.CmEnrollmentClient" + }, + "method": { + "shortName": "ListOperations", + "fullName": "google.longrunning.Operations.ListOperations", + "service": { + "shortName": "Operations", + "fullName": "google.longrunning.Operations" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 66, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_CmEnrollmentService_UpdateCmEnrollment_sync", + "title": "cloudsecuritycompliance UpdateCmEnrollment Sample", + "description": "UpdateCmEnrollment updates the Compliance Manager enrollment for a resource to facilitate\nan audit.\nUse this method to enroll a resource in Compliance Manager or to\ncreate or update feature-specific configurations.", + "file": "CmEnrollmentClient/UpdateCmEnrollment/main.go", + "language": "GO", + "clientMethod": { + "shortName": "UpdateCmEnrollment", + "fullName": "google.cloud.cloudsecuritycompliance.v1.CmEnrollmentClient.UpdateCmEnrollment", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "cloudsecuritycompliancepb.UpdateCmEnrollmentRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*cloudsecuritycompliancepb.CmEnrollment", + "client": { + "shortName": "CmEnrollmentClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.CmEnrollmentClient" + }, + "method": { + "shortName": "UpdateCmEnrollment", + "fullName": "google.cloud.cloudsecuritycompliance.v1.CmEnrollmentService.UpdateCmEnrollment", + "service": { + "shortName": "CmEnrollmentService", + "fullName": "google.cloud.cloudsecuritycompliance.v1.CmEnrollmentService" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Config_CancelOperation_sync", + "title": "cloudsecuritycompliance CancelOperation Sample", + "description": "CancelOperation is a utility method from google.longrunning.Operations.", + "file": "ConfigClient/CancelOperation/main.go", + "language": "GO", + "clientMethod": { + "shortName": "CancelOperation", + "fullName": "google.cloud.cloudsecuritycompliance.v1.ConfigClient.CancelOperation", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "longrunningpb.CancelOperationRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "client": { + "shortName": "ConfigClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.ConfigClient" + }, + "method": { + "shortName": "CancelOperation", + "fullName": "google.longrunning.Operations.CancelOperation", + "service": { + "shortName": "Operations", + "fullName": "google.longrunning.Operations" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 51, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Config_CreateCloudControl_sync", + "title": "cloudsecuritycompliance CreateCloudControl Sample", + "description": "CreateCloudControl creates a custom cloud control in a given parent\nresource.\nYou can't create built-in cloud controls because those are managed by\nGoogle.", + "file": "ConfigClient/CreateCloudControl/main.go", + "language": "GO", + "clientMethod": { + "shortName": "CreateCloudControl", + "fullName": "google.cloud.cloudsecuritycompliance.v1.ConfigClient.CreateCloudControl", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "cloudsecuritycompliancepb.CreateCloudControlRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*cloudsecuritycompliancepb.CloudControl", + "client": { + "shortName": "ConfigClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.ConfigClient" + }, + "method": { + "shortName": "CreateCloudControl", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Config.CreateCloudControl", + "service": { + "shortName": "Config", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Config" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Config_CreateFramework_sync", + "title": "cloudsecuritycompliance CreateFramework Sample", + "description": "CreateFramework creates a custom framework in a given parent resource.\nYou can't create built-in frameworks because those are managed by\nGoogle.", + "file": "ConfigClient/CreateFramework/main.go", + "language": "GO", + "clientMethod": { + "shortName": "CreateFramework", + "fullName": "google.cloud.cloudsecuritycompliance.v1.ConfigClient.CreateFramework", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "cloudsecuritycompliancepb.CreateFrameworkRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*cloudsecuritycompliancepb.Framework", + "client": { + "shortName": "ConfigClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.ConfigClient" + }, + "method": { + "shortName": "CreateFramework", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Config.CreateFramework", + "service": { + "shortName": "Config", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Config" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Config_DeleteCloudControl_sync", + "title": "cloudsecuritycompliance DeleteCloudControl Sample", + "description": "DeleteCloudControl deletes a custom cloud control, including all its\nmajor and minor revisions. Consider the following: \n\n- You can't delete built-in cloud controls. You can only delete cloud\ncontrols with type `CUSTOM`.\n- You can't delete cloud controls if any of the versions are referenced\nby a framework.\n- You can't restore a deleted cloud control. This action is permanent.", + "file": "ConfigClient/DeleteCloudControl/main.go", + "language": "GO", + "clientMethod": { + "shortName": "DeleteCloudControl", + "fullName": "google.cloud.cloudsecuritycompliance.v1.ConfigClient.DeleteCloudControl", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "cloudsecuritycompliancepb.DeleteCloudControlRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "client": { + "shortName": "ConfigClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.ConfigClient" + }, + "method": { + "shortName": "DeleteCloudControl", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Config.DeleteCloudControl", + "service": { + "shortName": "Config", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Config" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 51, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Config_DeleteFramework_sync", + "title": "cloudsecuritycompliance DeleteFramework Sample", + "description": "DeleteFramework deletes a custom framework, including all its major and\nminor revisions. Consider the following: \n\n- You can't delete built-in frameworks. You can only delete frameworks\nwith type `CUSTOM`.\n- You can't delete frameworks that are deployed to a resource.\n- You can't restore a deleted framework. This action is permanent.", + "file": "ConfigClient/DeleteFramework/main.go", + "language": "GO", + "clientMethod": { + "shortName": "DeleteFramework", + "fullName": "google.cloud.cloudsecuritycompliance.v1.ConfigClient.DeleteFramework", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "cloudsecuritycompliancepb.DeleteFrameworkRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "client": { + "shortName": "ConfigClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.ConfigClient" + }, + "method": { + "shortName": "DeleteFramework", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Config.DeleteFramework", + "service": { + "shortName": "Config", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Config" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 51, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Config_DeleteOperation_sync", + "title": "cloudsecuritycompliance DeleteOperation Sample", + "description": "DeleteOperation is a utility method from google.longrunning.Operations.", + "file": "ConfigClient/DeleteOperation/main.go", + "language": "GO", + "clientMethod": { + "shortName": "DeleteOperation", + "fullName": "google.cloud.cloudsecuritycompliance.v1.ConfigClient.DeleteOperation", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "longrunningpb.DeleteOperationRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "client": { + "shortName": "ConfigClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.ConfigClient" + }, + "method": { + "shortName": "DeleteOperation", + "fullName": "google.longrunning.Operations.DeleteOperation", + "service": { + "shortName": "Operations", + "fullName": "google.longrunning.Operations" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 51, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Config_GetCloudControl_sync", + "title": "cloudsecuritycompliance GetCloudControl Sample", + "description": "GetCloudControl gets details about a cloud control.\nThis method retrieves the latest major version of a cloud control that\nyou identify by name.\n\nBy default, the latest major version of the cloud control is returned.\nTo retrieve a specific major version, include `major_revision_id` in\nthe request.", + "file": "ConfigClient/GetCloudControl/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GetCloudControl", + "fullName": "google.cloud.cloudsecuritycompliance.v1.ConfigClient.GetCloudControl", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "cloudsecuritycompliancepb.GetCloudControlRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*cloudsecuritycompliancepb.CloudControl", + "client": { + "shortName": "ConfigClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.ConfigClient" + }, + "method": { + "shortName": "GetCloudControl", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Config.GetCloudControl", + "service": { + "shortName": "Config", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Config" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Config_GetFramework_sync", + "title": "cloudsecuritycompliance GetFramework Sample", + "description": "GetFramework gets details about a framework.\nThis method retrieves the latest major version of the framework.\n\nTo retrieve a specific major version, include `major_revision_id` in\nthe request.", + "file": "ConfigClient/GetFramework/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GetFramework", + "fullName": "google.cloud.cloudsecuritycompliance.v1.ConfigClient.GetFramework", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "cloudsecuritycompliancepb.GetFrameworkRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*cloudsecuritycompliancepb.Framework", + "client": { + "shortName": "ConfigClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.ConfigClient" + }, + "method": { + "shortName": "GetFramework", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Config.GetFramework", + "service": { + "shortName": "Config", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Config" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Config_GetLocation_sync", + "title": "cloudsecuritycompliance GetLocation Sample", + "description": "GetLocation gets information about a location.", + "file": "ConfigClient/GetLocation/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GetLocation", + "fullName": "google.cloud.cloudsecuritycompliance.v1.ConfigClient.GetLocation", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "locationpb.GetLocationRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*locationpb.Location", + "client": { + "shortName": "ConfigClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.ConfigClient" + }, + "method": { + "shortName": "GetLocation", + "fullName": "google.cloud.location.Locations.GetLocation", + "service": { + "shortName": "Locations", + "fullName": "google.cloud.location.Locations" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Config_GetOperation_sync", + "title": "cloudsecuritycompliance GetOperation Sample", + "description": "GetOperation is a utility method from google.longrunning.Operations.", + "file": "ConfigClient/GetOperation/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GetOperation", + "fullName": "google.cloud.cloudsecuritycompliance.v1.ConfigClient.GetOperation", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "longrunningpb.GetOperationRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*longrunningpb.Operation", + "client": { + "shortName": "ConfigClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.ConfigClient" + }, + "method": { + "shortName": "GetOperation", + "fullName": "google.longrunning.Operations.GetOperation", + "service": { + "shortName": "Operations", + "fullName": "google.longrunning.Operations" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Config_ListCloudControls_sync", + "title": "cloudsecuritycompliance ListCloudControls Sample", + "description": "ListCloudControls lists the cloud controls (both built-in and custom) that are available\nin a given parent resource. The latest major version of each cloud control\nis returned.\nThis method supports pagination.", + "file": "ConfigClient/ListCloudControls/main.go", + "language": "GO", + "clientMethod": { + "shortName": "ListCloudControls", + "fullName": "google.cloud.cloudsecuritycompliance.v1.ConfigClient.ListCloudControls", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "cloudsecuritycompliancepb.ListCloudControlsRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "CloudControlIterator", + "client": { + "shortName": "ConfigClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.ConfigClient" + }, + "method": { + "shortName": "ListCloudControls", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Config.ListCloudControls", + "service": { + "shortName": "Config", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Config" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 66, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Config_ListFrameworks_sync", + "title": "cloudsecuritycompliance ListFrameworks Sample", + "description": "ListFrameworks lists the frameworks (both built-in and custom) that are available within\nthe parent resource. The latest major version of each framework is\nreturned.\nThis method supports pagination.", + "file": "ConfigClient/ListFrameworks/main.go", + "language": "GO", + "clientMethod": { + "shortName": "ListFrameworks", + "fullName": "google.cloud.cloudsecuritycompliance.v1.ConfigClient.ListFrameworks", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "cloudsecuritycompliancepb.ListFrameworksRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "FrameworkIterator", + "client": { + "shortName": "ConfigClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.ConfigClient" + }, + "method": { + "shortName": "ListFrameworks", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Config.ListFrameworks", + "service": { + "shortName": "Config", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Config" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 66, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Config_ListLocations_sync", + "title": "cloudsecuritycompliance ListLocations Sample", + "description": "ListLocations lists information about the supported locations for this service.", + "file": "ConfigClient/ListLocations/main.go", + "language": "GO", + "clientMethod": { + "shortName": "ListLocations", + "fullName": "google.cloud.cloudsecuritycompliance.v1.ConfigClient.ListLocations", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "locationpb.ListLocationsRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "LocationIterator", + "client": { + "shortName": "ConfigClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.ConfigClient" + }, + "method": { + "shortName": "ListLocations", + "fullName": "google.cloud.location.Locations.ListLocations", + "service": { + "shortName": "Locations", + "fullName": "google.cloud.location.Locations" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 66, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Config_ListOperations_sync", + "title": "cloudsecuritycompliance ListOperations Sample", + "description": "ListOperations is a utility method from google.longrunning.Operations.", + "file": "ConfigClient/ListOperations/main.go", + "language": "GO", + "clientMethod": { + "shortName": "ListOperations", + "fullName": "google.cloud.cloudsecuritycompliance.v1.ConfigClient.ListOperations", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "longrunningpb.ListOperationsRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "OperationIterator", + "client": { + "shortName": "ConfigClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.ConfigClient" + }, + "method": { + "shortName": "ListOperations", + "fullName": "google.longrunning.Operations.ListOperations", + "service": { + "shortName": "Operations", + "fullName": "google.longrunning.Operations" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 66, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Config_UpdateCloudControl_sync", + "title": "cloudsecuritycompliance UpdateCloudControl Sample", + "description": "UpdateCloudControl updates a custom cloud control.\nThis method allows for partial updates of a cloud control. Use the\n`update_mask` to specify which fields to update. Consider the following: \n\n- If you provide an `update_mask`, only the fields that are specified\nin the mask are updated.\n- If you don't provide an `update_mask`, all the fields that are present\nin the request's `cloud_control` body are used to overwrite the existing\nresource.\n\nYou can only update cloud controls with the `CUSTOM` type.\nA successful update creates a new version of the cloud control.", + "file": "ConfigClient/UpdateCloudControl/main.go", + "language": "GO", + "clientMethod": { + "shortName": "UpdateCloudControl", + "fullName": "google.cloud.cloudsecuritycompliance.v1.ConfigClient.UpdateCloudControl", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "cloudsecuritycompliancepb.UpdateCloudControlRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*cloudsecuritycompliancepb.CloudControl", + "client": { + "shortName": "ConfigClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.ConfigClient" + }, + "method": { + "shortName": "UpdateCloudControl", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Config.UpdateCloudControl", + "service": { + "shortName": "Config", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Config" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Config_UpdateFramework_sync", + "title": "cloudsecuritycompliance UpdateFramework Sample", + "description": "UpdateFramework updates a custom framework.\nThis method allows for partial updates of a framework. Use the\n`update_mask` to specify which fields to update. Consider the following: \n\n- If you provide an `update_mask`, only the fields that are specified\nin the mask are updated.\n- If you don't provide an `update_mask`, all the fields that are present\nin the request's `framework` body are used to overwrite the existing\nresource.\n\nYou can only update frameworks with the `CUSTOM` type.\nA successful update creates a new version of the framework.", + "file": "ConfigClient/UpdateFramework/main.go", + "language": "GO", + "clientMethod": { + "shortName": "UpdateFramework", + "fullName": "google.cloud.cloudsecuritycompliance.v1.ConfigClient.UpdateFramework", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "cloudsecuritycompliancepb.UpdateFrameworkRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*cloudsecuritycompliancepb.Framework", + "client": { + "shortName": "ConfigClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.ConfigClient" + }, + "method": { + "shortName": "UpdateFramework", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Config.UpdateFramework", + "service": { + "shortName": "Config", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Config" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Deployment_CancelOperation_sync", + "title": "cloudsecuritycompliance CancelOperation Sample", + "description": "CancelOperation is a utility method from google.longrunning.Operations.", + "file": "DeploymentClient/CancelOperation/main.go", + "language": "GO", + "clientMethod": { + "shortName": "CancelOperation", + "fullName": "google.cloud.cloudsecuritycompliance.v1.DeploymentClient.CancelOperation", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "longrunningpb.CancelOperationRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "client": { + "shortName": "DeploymentClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.DeploymentClient" + }, + "method": { + "shortName": "CancelOperation", + "fullName": "google.longrunning.Operations.CancelOperation", + "service": { + "shortName": "Operations", + "fullName": "google.longrunning.Operations" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 51, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Deployment_CreateFrameworkDeployment_sync", + "title": "cloudsecuritycompliance CreateFrameworkDeployment Sample", + "description": "CreateFrameworkDeployment creates a framework deployment in a given parent resource. A\nframework deployment lets you assign a particular framework version to an\norganization, folder, or project so that you can control and monitor\nthose resources using the framework's cloud controls.", + "file": "DeploymentClient/CreateFrameworkDeployment/main.go", + "language": "GO", + "clientMethod": { + "shortName": "CreateFrameworkDeployment", + "fullName": "google.cloud.cloudsecuritycompliance.v1.DeploymentClient.CreateFrameworkDeployment", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "cloudsecuritycompliancepb.CreateFrameworkDeploymentRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "CreateFrameworkDeploymentOperation", + "client": { + "shortName": "DeploymentClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.DeploymentClient" + }, + "method": { + "shortName": "CreateFrameworkDeployment", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Deployment.CreateFrameworkDeployment", + "service": { + "shortName": "Deployment", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Deployment" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 58, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Deployment_DeleteFrameworkDeployment_sync", + "title": "cloudsecuritycompliance DeleteFrameworkDeployment Sample", + "description": "DeleteFrameworkDeployment deletes a framework deployment.", + "file": "DeploymentClient/DeleteFrameworkDeployment/main.go", + "language": "GO", + "clientMethod": { + "shortName": "DeleteFrameworkDeployment", + "fullName": "google.cloud.cloudsecuritycompliance.v1.DeploymentClient.DeleteFrameworkDeployment", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "cloudsecuritycompliancepb.DeleteFrameworkDeploymentRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "DeleteFrameworkDeploymentOperation", + "client": { + "shortName": "DeploymentClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.DeploymentClient" + }, + "method": { + "shortName": "DeleteFrameworkDeployment", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Deployment.DeleteFrameworkDeployment", + "service": { + "shortName": "Deployment", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Deployment" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 56, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Deployment_DeleteOperation_sync", + "title": "cloudsecuritycompliance DeleteOperation Sample", + "description": "DeleteOperation is a utility method from google.longrunning.Operations.", + "file": "DeploymentClient/DeleteOperation/main.go", + "language": "GO", + "clientMethod": { + "shortName": "DeleteOperation", + "fullName": "google.cloud.cloudsecuritycompliance.v1.DeploymentClient.DeleteOperation", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "longrunningpb.DeleteOperationRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "client": { + "shortName": "DeploymentClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.DeploymentClient" + }, + "method": { + "shortName": "DeleteOperation", + "fullName": "google.longrunning.Operations.DeleteOperation", + "service": { + "shortName": "Operations", + "fullName": "google.longrunning.Operations" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 51, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Deployment_GetCloudControlDeployment_sync", + "title": "cloudsecuritycompliance GetCloudControlDeployment Sample", + "description": "GetCloudControlDeployment gets details about a cloud control deployment.", + "file": "DeploymentClient/GetCloudControlDeployment/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GetCloudControlDeployment", + "fullName": "google.cloud.cloudsecuritycompliance.v1.DeploymentClient.GetCloudControlDeployment", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "cloudsecuritycompliancepb.GetCloudControlDeploymentRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*cloudsecuritycompliancepb.CloudControlDeployment", + "client": { + "shortName": "DeploymentClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.DeploymentClient" + }, + "method": { + "shortName": "GetCloudControlDeployment", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Deployment.GetCloudControlDeployment", + "service": { + "shortName": "Deployment", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Deployment" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Deployment_GetFrameworkDeployment_sync", + "title": "cloudsecuritycompliance GetFrameworkDeployment Sample", + "description": "GetFrameworkDeployment gets details about a framework deployment.", + "file": "DeploymentClient/GetFrameworkDeployment/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GetFrameworkDeployment", + "fullName": "google.cloud.cloudsecuritycompliance.v1.DeploymentClient.GetFrameworkDeployment", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "cloudsecuritycompliancepb.GetFrameworkDeploymentRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*cloudsecuritycompliancepb.FrameworkDeployment", + "client": { + "shortName": "DeploymentClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.DeploymentClient" + }, + "method": { + "shortName": "GetFrameworkDeployment", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Deployment.GetFrameworkDeployment", + "service": { + "shortName": "Deployment", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Deployment" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Deployment_GetLocation_sync", + "title": "cloudsecuritycompliance GetLocation Sample", + "description": "GetLocation gets information about a location.", + "file": "DeploymentClient/GetLocation/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GetLocation", + "fullName": "google.cloud.cloudsecuritycompliance.v1.DeploymentClient.GetLocation", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "locationpb.GetLocationRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*locationpb.Location", + "client": { + "shortName": "DeploymentClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.DeploymentClient" + }, + "method": { + "shortName": "GetLocation", + "fullName": "google.cloud.location.Locations.GetLocation", + "service": { + "shortName": "Locations", + "fullName": "google.cloud.location.Locations" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Deployment_GetOperation_sync", + "title": "cloudsecuritycompliance GetOperation Sample", + "description": "GetOperation is a utility method from google.longrunning.Operations.", + "file": "DeploymentClient/GetOperation/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GetOperation", + "fullName": "google.cloud.cloudsecuritycompliance.v1.DeploymentClient.GetOperation", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "longrunningpb.GetOperationRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*longrunningpb.Operation", + "client": { + "shortName": "DeploymentClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.DeploymentClient" + }, + "method": { + "shortName": "GetOperation", + "fullName": "google.longrunning.Operations.GetOperation", + "service": { + "shortName": "Operations", + "fullName": "google.longrunning.Operations" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Deployment_ListCloudControlDeployments_sync", + "title": "cloudsecuritycompliance ListCloudControlDeployments Sample", + "description": "ListCloudControlDeployments lists the cloud conrol deployments in a given parent resource.", + "file": "DeploymentClient/ListCloudControlDeployments/main.go", + "language": "GO", + "clientMethod": { + "shortName": "ListCloudControlDeployments", + "fullName": "google.cloud.cloudsecuritycompliance.v1.DeploymentClient.ListCloudControlDeployments", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "cloudsecuritycompliancepb.ListCloudControlDeploymentsRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "CloudControlDeploymentIterator", + "client": { + "shortName": "DeploymentClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.DeploymentClient" + }, + "method": { + "shortName": "ListCloudControlDeployments", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Deployment.ListCloudControlDeployments", + "service": { + "shortName": "Deployment", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Deployment" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 66, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Deployment_ListFrameworkDeployments_sync", + "title": "cloudsecuritycompliance ListFrameworkDeployments Sample", + "description": "ListFrameworkDeployments lists the framework deployments in a given parent resource.", + "file": "DeploymentClient/ListFrameworkDeployments/main.go", + "language": "GO", + "clientMethod": { + "shortName": "ListFrameworkDeployments", + "fullName": "google.cloud.cloudsecuritycompliance.v1.DeploymentClient.ListFrameworkDeployments", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "cloudsecuritycompliancepb.ListFrameworkDeploymentsRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "FrameworkDeploymentIterator", + "client": { + "shortName": "DeploymentClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.DeploymentClient" + }, + "method": { + "shortName": "ListFrameworkDeployments", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Deployment.ListFrameworkDeployments", + "service": { + "shortName": "Deployment", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Deployment" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 66, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Deployment_ListLocations_sync", + "title": "cloudsecuritycompliance ListLocations Sample", + "description": "ListLocations lists information about the supported locations for this service.", + "file": "DeploymentClient/ListLocations/main.go", + "language": "GO", + "clientMethod": { + "shortName": "ListLocations", + "fullName": "google.cloud.cloudsecuritycompliance.v1.DeploymentClient.ListLocations", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "locationpb.ListLocationsRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "LocationIterator", + "client": { + "shortName": "DeploymentClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.DeploymentClient" + }, + "method": { + "shortName": "ListLocations", + "fullName": "google.cloud.location.Locations.ListLocations", + "service": { + "shortName": "Locations", + "fullName": "google.cloud.location.Locations" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 66, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Deployment_ListOperations_sync", + "title": "cloudsecuritycompliance ListOperations Sample", + "description": "ListOperations is a utility method from google.longrunning.Operations.", + "file": "DeploymentClient/ListOperations/main.go", + "language": "GO", + "clientMethod": { + "shortName": "ListOperations", + "fullName": "google.cloud.cloudsecuritycompliance.v1.DeploymentClient.ListOperations", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "longrunningpb.ListOperationsRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "OperationIterator", + "client": { + "shortName": "DeploymentClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.DeploymentClient" + }, + "method": { + "shortName": "ListOperations", + "fullName": "google.longrunning.Operations.ListOperations", + "service": { + "shortName": "Operations", + "fullName": "google.longrunning.Operations" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 66, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Monitoring_AggregateFrameworkComplianceReport_sync", + "title": "cloudsecuritycompliance AggregateFrameworkComplianceReport Sample", + "description": "AggregateFrameworkComplianceReport gets the aggregated compliance report over time for a given scope.", + "file": "MonitoringClient/AggregateFrameworkComplianceReport/main.go", + "language": "GO", + "clientMethod": { + "shortName": "AggregateFrameworkComplianceReport", + "fullName": "google.cloud.cloudsecuritycompliance.v1.MonitoringClient.AggregateFrameworkComplianceReport", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "cloudsecuritycompliancepb.AggregateFrameworkComplianceReportRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*cloudsecuritycompliancepb.AggregateFrameworkComplianceReportResponse", + "client": { + "shortName": "MonitoringClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.MonitoringClient" + }, + "method": { + "shortName": "AggregateFrameworkComplianceReport", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Monitoring.AggregateFrameworkComplianceReport", + "service": { + "shortName": "Monitoring", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Monitoring" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Monitoring_CancelOperation_sync", + "title": "cloudsecuritycompliance CancelOperation Sample", + "description": "CancelOperation is a utility method from google.longrunning.Operations.", + "file": "MonitoringClient/CancelOperation/main.go", + "language": "GO", + "clientMethod": { + "shortName": "CancelOperation", + "fullName": "google.cloud.cloudsecuritycompliance.v1.MonitoringClient.CancelOperation", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "longrunningpb.CancelOperationRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "client": { + "shortName": "MonitoringClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.MonitoringClient" + }, + "method": { + "shortName": "CancelOperation", + "fullName": "google.longrunning.Operations.CancelOperation", + "service": { + "shortName": "Operations", + "fullName": "google.longrunning.Operations" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 51, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Monitoring_DeleteOperation_sync", + "title": "cloudsecuritycompliance DeleteOperation Sample", + "description": "DeleteOperation is a utility method from google.longrunning.Operations.", + "file": "MonitoringClient/DeleteOperation/main.go", + "language": "GO", + "clientMethod": { + "shortName": "DeleteOperation", + "fullName": "google.cloud.cloudsecuritycompliance.v1.MonitoringClient.DeleteOperation", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "longrunningpb.DeleteOperationRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "client": { + "shortName": "MonitoringClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.MonitoringClient" + }, + "method": { + "shortName": "DeleteOperation", + "fullName": "google.longrunning.Operations.DeleteOperation", + "service": { + "shortName": "Operations", + "fullName": "google.longrunning.Operations" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 51, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Monitoring_FetchFrameworkComplianceReport_sync", + "title": "cloudsecuritycompliance FetchFrameworkComplianceReport Sample", + "description": "FetchFrameworkComplianceReport fetches the framework compliance report for a given scope.", + "file": "MonitoringClient/FetchFrameworkComplianceReport/main.go", + "language": "GO", + "clientMethod": { + "shortName": "FetchFrameworkComplianceReport", + "fullName": "google.cloud.cloudsecuritycompliance.v1.MonitoringClient.FetchFrameworkComplianceReport", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "cloudsecuritycompliancepb.FetchFrameworkComplianceReportRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*cloudsecuritycompliancepb.FrameworkComplianceReport", + "client": { + "shortName": "MonitoringClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.MonitoringClient" + }, + "method": { + "shortName": "FetchFrameworkComplianceReport", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Monitoring.FetchFrameworkComplianceReport", + "service": { + "shortName": "Monitoring", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Monitoring" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Monitoring_GetLocation_sync", + "title": "cloudsecuritycompliance GetLocation Sample", + "description": "GetLocation gets information about a location.", + "file": "MonitoringClient/GetLocation/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GetLocation", + "fullName": "google.cloud.cloudsecuritycompliance.v1.MonitoringClient.GetLocation", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "locationpb.GetLocationRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*locationpb.Location", + "client": { + "shortName": "MonitoringClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.MonitoringClient" + }, + "method": { + "shortName": "GetLocation", + "fullName": "google.cloud.location.Locations.GetLocation", + "service": { + "shortName": "Locations", + "fullName": "google.cloud.location.Locations" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Monitoring_GetOperation_sync", + "title": "cloudsecuritycompliance GetOperation Sample", + "description": "GetOperation is a utility method from google.longrunning.Operations.", + "file": "MonitoringClient/GetOperation/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GetOperation", + "fullName": "google.cloud.cloudsecuritycompliance.v1.MonitoringClient.GetOperation", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "longrunningpb.GetOperationRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*longrunningpb.Operation", + "client": { + "shortName": "MonitoringClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.MonitoringClient" + }, + "method": { + "shortName": "GetOperation", + "fullName": "google.longrunning.Operations.GetOperation", + "service": { + "shortName": "Operations", + "fullName": "google.longrunning.Operations" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Monitoring_ListControlComplianceSummaries_sync", + "title": "cloudsecuritycompliance ListControlComplianceSummaries Sample", + "description": "ListControlComplianceSummaries lists the control compliance summary for a given scope.", + "file": "MonitoringClient/ListControlComplianceSummaries/main.go", + "language": "GO", + "clientMethod": { + "shortName": "ListControlComplianceSummaries", + "fullName": "google.cloud.cloudsecuritycompliance.v1.MonitoringClient.ListControlComplianceSummaries", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "cloudsecuritycompliancepb.ListControlComplianceSummariesRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "ControlComplianceSummaryIterator", + "client": { + "shortName": "MonitoringClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.MonitoringClient" + }, + "method": { + "shortName": "ListControlComplianceSummaries", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Monitoring.ListControlComplianceSummaries", + "service": { + "shortName": "Monitoring", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Monitoring" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 66, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Monitoring_ListFindingSummaries_sync", + "title": "cloudsecuritycompliance ListFindingSummaries Sample", + "description": "ListFindingSummaries lists the finding summary by category for a given scope.", + "file": "MonitoringClient/ListFindingSummaries/main.go", + "language": "GO", + "clientMethod": { + "shortName": "ListFindingSummaries", + "fullName": "google.cloud.cloudsecuritycompliance.v1.MonitoringClient.ListFindingSummaries", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "cloudsecuritycompliancepb.ListFindingSummariesRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "FindingSummaryIterator", + "client": { + "shortName": "MonitoringClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.MonitoringClient" + }, + "method": { + "shortName": "ListFindingSummaries", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Monitoring.ListFindingSummaries", + "service": { + "shortName": "Monitoring", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Monitoring" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 66, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Monitoring_ListFrameworkComplianceSummaries_sync", + "title": "cloudsecuritycompliance ListFrameworkComplianceSummaries Sample", + "description": "ListFrameworkComplianceSummaries lists the framework compliance summary for a given scope.", + "file": "MonitoringClient/ListFrameworkComplianceSummaries/main.go", + "language": "GO", + "clientMethod": { + "shortName": "ListFrameworkComplianceSummaries", + "fullName": "google.cloud.cloudsecuritycompliance.v1.MonitoringClient.ListFrameworkComplianceSummaries", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "cloudsecuritycompliancepb.ListFrameworkComplianceSummariesRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "FrameworkComplianceSummaryIterator", + "client": { + "shortName": "MonitoringClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.MonitoringClient" + }, + "method": { + "shortName": "ListFrameworkComplianceSummaries", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Monitoring.ListFrameworkComplianceSummaries", + "service": { + "shortName": "Monitoring", + "fullName": "google.cloud.cloudsecuritycompliance.v1.Monitoring" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 66, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Monitoring_ListLocations_sync", + "title": "cloudsecuritycompliance ListLocations Sample", + "description": "ListLocations lists information about the supported locations for this service.", + "file": "MonitoringClient/ListLocations/main.go", + "language": "GO", + "clientMethod": { + "shortName": "ListLocations", + "fullName": "google.cloud.cloudsecuritycompliance.v1.MonitoringClient.ListLocations", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "locationpb.ListLocationsRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "LocationIterator", + "client": { + "shortName": "MonitoringClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.MonitoringClient" + }, + "method": { + "shortName": "ListLocations", + "fullName": "google.cloud.location.Locations.ListLocations", + "service": { + "shortName": "Locations", + "fullName": "google.cloud.location.Locations" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 66, + "type": "FULL" + } + ] + }, + { + "regionTag": "cloudsecuritycompliance_v1_generated_Monitoring_ListOperations_sync", + "title": "cloudsecuritycompliance ListOperations Sample", + "description": "ListOperations is a utility method from google.longrunning.Operations.", + "file": "MonitoringClient/ListOperations/main.go", + "language": "GO", + "clientMethod": { + "shortName": "ListOperations", + "fullName": "google.cloud.cloudsecuritycompliance.v1.MonitoringClient.ListOperations", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "longrunningpb.ListOperationsRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "OperationIterator", + "client": { + "shortName": "MonitoringClient", + "fullName": "google.cloud.cloudsecuritycompliance.v1.MonitoringClient" + }, + "method": { + "shortName": "ListOperations", + "fullName": "google.longrunning.Operations.ListOperations", + "service": { + "shortName": "Operations", + "fullName": "google.longrunning.Operations" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 66, + "type": "FULL" + } + ] + } + ] +} \ No newline at end of file diff --git a/internal/generated/snippets/go.mod b/internal/generated/snippets/go.mod index 349479e4173e..ad79cb81d40f 100644 --- a/internal/generated/snippets/go.mod +++ b/internal/generated/snippets/go.mod @@ -580,3 +580,5 @@ replace cloud.google.com/go/vectorsearch => ../../../vectorsearch replace cloud.google.com/go/hypercomputecluster => ../../../hypercomputecluster replace cloud.google.com/go/apiregistry => ../../../apiregistry + +replace cloud.google.com/go/cloudsecuritycompliance => ../../../cloudsecuritycompliance