diff --git a/bigquery/analyticshub/apiv1/analytics_hub_client.go b/bigquery/analyticshub/apiv1/analytics_hub_client.go index ca345e8c206e..15c7bd3253b0 100755 --- a/bigquery/analyticshub/apiv1/analytics_hub_client.go +++ b/bigquery/analyticshub/apiv1/analytics_hub_client.go @@ -28,6 +28,9 @@ import ( analyticshubpb "cloud.google.com/go/bigquery/analyticshub/apiv1/analyticshubpb" iampb "cloud.google.com/go/iam/apiv1/iampb" + "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/googleapi" "google.golang.org/api/iterator" @@ -45,21 +48,28 @@ var newClientHook clientHook // CallOptions contains the retry settings for each method of Client. type CallOptions struct { - ListDataExchanges []gax.CallOption - ListOrgDataExchanges []gax.CallOption - GetDataExchange []gax.CallOption - CreateDataExchange []gax.CallOption - UpdateDataExchange []gax.CallOption - DeleteDataExchange []gax.CallOption - ListListings []gax.CallOption - GetListing []gax.CallOption - CreateListing []gax.CallOption - UpdateListing []gax.CallOption - DeleteListing []gax.CallOption - SubscribeListing []gax.CallOption - GetIamPolicy []gax.CallOption - SetIamPolicy []gax.CallOption - TestIamPermissions []gax.CallOption + ListDataExchanges []gax.CallOption + ListOrgDataExchanges []gax.CallOption + GetDataExchange []gax.CallOption + CreateDataExchange []gax.CallOption + UpdateDataExchange []gax.CallOption + DeleteDataExchange []gax.CallOption + ListListings []gax.CallOption + GetListing []gax.CallOption + CreateListing []gax.CallOption + UpdateListing []gax.CallOption + DeleteListing []gax.CallOption + SubscribeListing []gax.CallOption + SubscribeDataExchange []gax.CallOption + RefreshSubscription []gax.CallOption + GetSubscription []gax.CallOption + ListSubscriptions []gax.CallOption + ListSharedResourceSubscriptions []gax.CallOption + RevokeSubscription []gax.CallOption + DeleteSubscription []gax.CallOption + GetIamPolicy []gax.CallOption + SetIamPolicy []gax.CallOption + TestIamPermissions []gax.CallOption } func defaultGRPCClientOptions() []option.ClientOption { @@ -232,6 +242,97 @@ func defaultCallOptions() *CallOptions { }) }), }, + SubscribeDataExchange: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.DeadlineExceeded, + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 60000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + RefreshSubscription: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.DeadlineExceeded, + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 60000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + GetSubscription: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.DeadlineExceeded, + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 60000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + ListSubscriptions: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.DeadlineExceeded, + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 60000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + ListSharedResourceSubscriptions: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.DeadlineExceeded, + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 60000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + RevokeSubscription: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.DeadlineExceeded, + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 60000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + DeleteSubscription: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.DeadlineExceeded, + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 60000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, GetIamPolicy: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { @@ -420,6 +521,90 @@ func defaultRESTCallOptions() *CallOptions { http.StatusServiceUnavailable) }), }, + SubscribeDataExchange: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 60000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusGatewayTimeout, + http.StatusServiceUnavailable) + }), + }, + RefreshSubscription: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 60000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusGatewayTimeout, + http.StatusServiceUnavailable) + }), + }, + GetSubscription: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 60000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusGatewayTimeout, + http.StatusServiceUnavailable) + }), + }, + ListSubscriptions: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 60000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusGatewayTimeout, + http.StatusServiceUnavailable) + }), + }, + ListSharedResourceSubscriptions: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 60000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusGatewayTimeout, + http.StatusServiceUnavailable) + }), + }, + RevokeSubscription: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 60000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusGatewayTimeout, + http.StatusServiceUnavailable) + }), + }, + DeleteSubscription: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 60000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusGatewayTimeout, + http.StatusServiceUnavailable) + }), + }, GetIamPolicy: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { @@ -476,6 +661,16 @@ type internalClient interface { UpdateListing(context.Context, *analyticshubpb.UpdateListingRequest, ...gax.CallOption) (*analyticshubpb.Listing, error) DeleteListing(context.Context, *analyticshubpb.DeleteListingRequest, ...gax.CallOption) error SubscribeListing(context.Context, *analyticshubpb.SubscribeListingRequest, ...gax.CallOption) (*analyticshubpb.SubscribeListingResponse, error) + SubscribeDataExchange(context.Context, *analyticshubpb.SubscribeDataExchangeRequest, ...gax.CallOption) (*SubscribeDataExchangeOperation, error) + SubscribeDataExchangeOperation(name string) *SubscribeDataExchangeOperation + RefreshSubscription(context.Context, *analyticshubpb.RefreshSubscriptionRequest, ...gax.CallOption) (*RefreshSubscriptionOperation, error) + RefreshSubscriptionOperation(name string) *RefreshSubscriptionOperation + GetSubscription(context.Context, *analyticshubpb.GetSubscriptionRequest, ...gax.CallOption) (*analyticshubpb.Subscription, error) + ListSubscriptions(context.Context, *analyticshubpb.ListSubscriptionsRequest, ...gax.CallOption) *SubscriptionIterator + ListSharedResourceSubscriptions(context.Context, *analyticshubpb.ListSharedResourceSubscriptionsRequest, ...gax.CallOption) *SubscriptionIterator + RevokeSubscription(context.Context, *analyticshubpb.RevokeSubscriptionRequest, ...gax.CallOption) (*analyticshubpb.RevokeSubscriptionResponse, error) + DeleteSubscription(context.Context, *analyticshubpb.DeleteSubscriptionRequest, ...gax.CallOption) (*DeleteSubscriptionOperation, error) + DeleteSubscriptionOperation(name string) *DeleteSubscriptionOperation GetIamPolicy(context.Context, *iampb.GetIamPolicyRequest, ...gax.CallOption) (*iampb.Policy, error) SetIamPolicy(context.Context, *iampb.SetIamPolicyRequest, ...gax.CallOption) (*iampb.Policy, error) TestIamPermissions(context.Context, *iampb.TestIamPermissionsRequest, ...gax.CallOption) (*iampb.TestIamPermissionsResponse, error) @@ -496,6 +691,11 @@ type Client struct { // The call options for this service. CallOptions *CallOptions + + // 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. @@ -587,6 +787,62 @@ func (c *Client) SubscribeListing(ctx context.Context, req *analyticshubpb.Subsc return c.internalClient.SubscribeListing(ctx, req, opts...) } +// SubscribeDataExchange creates a Subscription to a Data Exchange. This is a long-running operation +// as it will create one or more linked datasets. +func (c *Client) SubscribeDataExchange(ctx context.Context, req *analyticshubpb.SubscribeDataExchangeRequest, opts ...gax.CallOption) (*SubscribeDataExchangeOperation, error) { + return c.internalClient.SubscribeDataExchange(ctx, req, opts...) +} + +// SubscribeDataExchangeOperation returns a new SubscribeDataExchangeOperation from a given name. +// The name must be that of a previously created SubscribeDataExchangeOperation, possibly from a different process. +func (c *Client) SubscribeDataExchangeOperation(name string) *SubscribeDataExchangeOperation { + return c.internalClient.SubscribeDataExchangeOperation(name) +} + +// RefreshSubscription refreshes a Subscription to a Data Exchange. A Data Exchange can become +// stale when a publisher adds or removes data. This is a long-running +// operation as it may create many linked datasets. +func (c *Client) RefreshSubscription(ctx context.Context, req *analyticshubpb.RefreshSubscriptionRequest, opts ...gax.CallOption) (*RefreshSubscriptionOperation, error) { + return c.internalClient.RefreshSubscription(ctx, req, opts...) +} + +// RefreshSubscriptionOperation returns a new RefreshSubscriptionOperation from a given name. +// The name must be that of a previously created RefreshSubscriptionOperation, possibly from a different process. +func (c *Client) RefreshSubscriptionOperation(name string) *RefreshSubscriptionOperation { + return c.internalClient.RefreshSubscriptionOperation(name) +} + +// GetSubscription gets the details of a Subscription. +func (c *Client) GetSubscription(ctx context.Context, req *analyticshubpb.GetSubscriptionRequest, opts ...gax.CallOption) (*analyticshubpb.Subscription, error) { + return c.internalClient.GetSubscription(ctx, req, opts...) +} + +// ListSubscriptions lists all subscriptions in a given project and location. +func (c *Client) ListSubscriptions(ctx context.Context, req *analyticshubpb.ListSubscriptionsRequest, opts ...gax.CallOption) *SubscriptionIterator { + return c.internalClient.ListSubscriptions(ctx, req, opts...) +} + +// ListSharedResourceSubscriptions lists all subscriptions on a given Data Exchange or Listing. +func (c *Client) ListSharedResourceSubscriptions(ctx context.Context, req *analyticshubpb.ListSharedResourceSubscriptionsRequest, opts ...gax.CallOption) *SubscriptionIterator { + return c.internalClient.ListSharedResourceSubscriptions(ctx, req, opts...) +} + +// RevokeSubscription revokes a given subscription. +func (c *Client) RevokeSubscription(ctx context.Context, req *analyticshubpb.RevokeSubscriptionRequest, opts ...gax.CallOption) (*analyticshubpb.RevokeSubscriptionResponse, error) { + return c.internalClient.RevokeSubscription(ctx, req, opts...) +} + +// DeleteSubscription deletes a subscription. +func (c *Client) DeleteSubscription(ctx context.Context, req *analyticshubpb.DeleteSubscriptionRequest, opts ...gax.CallOption) (*DeleteSubscriptionOperation, error) { + return c.internalClient.DeleteSubscription(ctx, req, opts...) +} + +// DeleteSubscriptionOperation returns a new DeleteSubscriptionOperation from a given name. +// The name must be that of a previously created DeleteSubscriptionOperation, possibly from a different process. +func (c *Client) DeleteSubscriptionOperation(name string) *DeleteSubscriptionOperation { + return c.internalClient.DeleteSubscriptionOperation(name) +} + // GetIamPolicy gets the IAM policy. func (c *Client) GetIamPolicy(ctx context.Context, req *iampb.GetIamPolicyRequest, opts ...gax.CallOption) (*iampb.Policy, error) { return c.internalClient.GetIamPolicy(ctx, req, opts...) @@ -615,6 +871,11 @@ type gRPCClient struct { // The gRPC API client. client analyticshubpb.AnalyticsHubServiceClient + // 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-* metadata to be sent with each request. xGoogHeaders []string } @@ -653,6 +914,17 @@ func NewClient(ctx context.Context, opts ...option.ClientOption) (*Client, error 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 } @@ -687,6 +959,11 @@ type restClient struct { // 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 @@ -717,6 +994,16 @@ func NewRESTClient(ctx context.Context, opts ...option.ClientOption) (*Client, e } 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 &Client{internalClient: c, CallOptions: callOpts}, nil } @@ -1044,52 +1331,56 @@ func (c *gRPCClient) SubscribeListing(ctx context.Context, req *analyticshubpb.S return resp, nil } -func (c *gRPCClient) GetIamPolicy(ctx context.Context, req *iampb.GetIamPolicyRequest, opts ...gax.CallOption) (*iampb.Policy, error) { - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "resource", url.QueryEscape(req.GetResource()))} +func (c *gRPCClient) SubscribeDataExchange(ctx context.Context, req *analyticshubpb.SubscribeDataExchangeRequest, opts ...gax.CallOption) (*SubscribeDataExchangeOperation, 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).GetIamPolicy[0:len((*c.CallOptions).GetIamPolicy):len((*c.CallOptions).GetIamPolicy)], opts...) - var resp *iampb.Policy + opts = append((*c.CallOptions).SubscribeDataExchange[0:len((*c.CallOptions).SubscribeDataExchange):len((*c.CallOptions).SubscribeDataExchange)], opts...) + var resp *longrunningpb.Operation err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { var err error - resp, err = c.client.GetIamPolicy(ctx, req, settings.GRPC...) + resp, err = c.client.SubscribeDataExchange(ctx, req, settings.GRPC...) return err }, opts...) if err != nil { return nil, err } - return resp, nil + return &SubscribeDataExchangeOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil } -func (c *gRPCClient) SetIamPolicy(ctx context.Context, req *iampb.SetIamPolicyRequest, opts ...gax.CallOption) (*iampb.Policy, error) { - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "resource", url.QueryEscape(req.GetResource()))} +func (c *gRPCClient) RefreshSubscription(ctx context.Context, req *analyticshubpb.RefreshSubscriptionRequest, opts ...gax.CallOption) (*RefreshSubscriptionOperation, 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).SetIamPolicy[0:len((*c.CallOptions).SetIamPolicy):len((*c.CallOptions).SetIamPolicy)], opts...) - var resp *iampb.Policy + opts = append((*c.CallOptions).RefreshSubscription[0:len((*c.CallOptions).RefreshSubscription):len((*c.CallOptions).RefreshSubscription)], opts...) + var resp *longrunningpb.Operation err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { var err error - resp, err = c.client.SetIamPolicy(ctx, req, settings.GRPC...) + resp, err = c.client.RefreshSubscription(ctx, req, settings.GRPC...) return err }, opts...) if err != nil { return nil, err } - return resp, nil + return &RefreshSubscriptionOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil } -func (c *gRPCClient) TestIamPermissions(ctx context.Context, req *iampb.TestIamPermissionsRequest, opts ...gax.CallOption) (*iampb.TestIamPermissionsResponse, error) { - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "resource", url.QueryEscape(req.GetResource()))} +func (c *gRPCClient) GetSubscription(ctx context.Context, req *analyticshubpb.GetSubscriptionRequest, opts ...gax.CallOption) (*analyticshubpb.Subscription, 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).TestIamPermissions[0:len((*c.CallOptions).TestIamPermissions):len((*c.CallOptions).TestIamPermissions)], opts...) - var resp *iampb.TestIamPermissionsResponse + opts = append((*c.CallOptions).GetSubscription[0:len((*c.CallOptions).GetSubscription):len((*c.CallOptions).GetSubscription)], opts...) + var resp *analyticshubpb.Subscription err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { var err error - resp, err = c.client.TestIamPermissions(ctx, req, settings.GRPC...) + resp, err = c.client.GetSubscription(ctx, req, settings.GRPC...) return err }, opts...) if err != nil { @@ -1098,13 +1389,16 @@ func (c *gRPCClient) TestIamPermissions(ctx context.Context, req *iampb.TestIamP return resp, nil } -// ListDataExchanges lists all data exchanges in a given project and location. -func (c *restClient) ListDataExchanges(ctx context.Context, req *analyticshubpb.ListDataExchangesRequest, opts ...gax.CallOption) *DataExchangeIterator { - it := &DataExchangeIterator{} - req = proto.Clone(req).(*analyticshubpb.ListDataExchangesRequest) - unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} - it.InternalFetch = func(pageSize int, pageToken string) ([]*analyticshubpb.DataExchange, string, error) { - resp := &analyticshubpb.ListDataExchangesResponse{} +func (c *gRPCClient) ListSubscriptions(ctx context.Context, req *analyticshubpb.ListSubscriptionsRequest, opts ...gax.CallOption) *SubscriptionIterator { + 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).ListSubscriptions[0:len((*c.CallOptions).ListSubscriptions):len((*c.CallOptions).ListSubscriptions)], opts...) + it := &SubscriptionIterator{} + req = proto.Clone(req).(*analyticshubpb.ListSubscriptionsRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*analyticshubpb.Subscription, string, error) { + resp := &analyticshubpb.ListSubscriptionsResponse{} if pageToken != "" { req.PageToken = pageToken } @@ -1113,30 +1407,211 @@ func (c *restClient) ListDataExchanges(ctx context.Context, req *analyticshubpb. } else if pageSize != 0 { req.PageSize = int32(pageSize) } - baseUrl, err := url.Parse(c.endpoint) + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.ListSubscriptions(ctx, req, settings.GRPC...) + return err + }, opts...) if err != nil { return nil, "", err } - baseUrl.Path += fmt.Sprintf("/v1/%v/dataExchanges", req.GetParent()) - params := url.Values{} - if req.GetPageSize() != 0 { - params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) - } - if req.GetPageToken() != "" { - params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) + it.Response = resp + return resp.GetSubscriptions(), 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 + } - baseUrl.RawQuery = params.Encode() + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() - // 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) + return it +} + +func (c *gRPCClient) ListSharedResourceSubscriptions(ctx context.Context, req *analyticshubpb.ListSharedResourceSubscriptionsRequest, opts ...gax.CallOption) *SubscriptionIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "resource", url.QueryEscape(req.GetResource()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListSharedResourceSubscriptions[0:len((*c.CallOptions).ListSharedResourceSubscriptions):len((*c.CallOptions).ListSharedResourceSubscriptions)], opts...) + it := &SubscriptionIterator{} + req = proto.Clone(req).(*analyticshubpb.ListSharedResourceSubscriptionsRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*analyticshubpb.Subscription, string, error) { + resp := &analyticshubpb.ListSharedResourceSubscriptionsResponse{} + 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 = c.client.ListSharedResourceSubscriptions(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetSharedResourceSubscriptions(), 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 *gRPCClient) RevokeSubscription(ctx context.Context, req *analyticshubpb.RevokeSubscriptionRequest, opts ...gax.CallOption) (*analyticshubpb.RevokeSubscriptionResponse, 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).RevokeSubscription[0:len((*c.CallOptions).RevokeSubscription):len((*c.CallOptions).RevokeSubscription)], opts...) + var resp *analyticshubpb.RevokeSubscriptionResponse + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.RevokeSubscription(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) DeleteSubscription(ctx context.Context, req *analyticshubpb.DeleteSubscriptionRequest, opts ...gax.CallOption) (*DeleteSubscriptionOperation, 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).DeleteSubscription[0:len((*c.CallOptions).DeleteSubscription):len((*c.CallOptions).DeleteSubscription)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.DeleteSubscription(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return &DeleteSubscriptionOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil +} + +func (c *gRPCClient) GetIamPolicy(ctx context.Context, req *iampb.GetIamPolicyRequest, opts ...gax.CallOption) (*iampb.Policy, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "resource", url.QueryEscape(req.GetResource()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetIamPolicy[0:len((*c.CallOptions).GetIamPolicy):len((*c.CallOptions).GetIamPolicy)], opts...) + var resp *iampb.Policy + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.GetIamPolicy(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) SetIamPolicy(ctx context.Context, req *iampb.SetIamPolicyRequest, opts ...gax.CallOption) (*iampb.Policy, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "resource", url.QueryEscape(req.GetResource()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).SetIamPolicy[0:len((*c.CallOptions).SetIamPolicy):len((*c.CallOptions).SetIamPolicy)], opts...) + var resp *iampb.Policy + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.SetIamPolicy(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) TestIamPermissions(ctx context.Context, req *iampb.TestIamPermissionsRequest, opts ...gax.CallOption) (*iampb.TestIamPermissionsResponse, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "resource", url.QueryEscape(req.GetResource()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).TestIamPermissions[0:len((*c.CallOptions).TestIamPermissions):len((*c.CallOptions).TestIamPermissions)], opts...) + var resp *iampb.TestIamPermissionsResponse + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.TestIamPermissions(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +// ListDataExchanges lists all data exchanges in a given project and location. +func (c *restClient) ListDataExchanges(ctx context.Context, req *analyticshubpb.ListDataExchangesRequest, opts ...gax.CallOption) *DataExchangeIterator { + it := &DataExchangeIterator{} + req = proto.Clone(req).(*analyticshubpb.ListDataExchangesRequest) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + it.InternalFetch = func(pageSize int, pageToken string) ([]*analyticshubpb.DataExchange, string, error) { + resp := &analyticshubpb.ListDataExchangesResponse{} + 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/dataExchanges", req.GetParent()) + + params := url.Values{} + 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 } @@ -1893,8 +2368,9 @@ func (c *restClient) SubscribeListing(ctx context.Context, req *analyticshubpb.S return resp, nil } -// GetIamPolicy gets the IAM policy. -func (c *restClient) GetIamPolicy(ctx context.Context, req *iampb.GetIamPolicyRequest, opts ...gax.CallOption) (*iampb.Policy, error) { +// SubscribeDataExchange creates a Subscription to a Data Exchange. This is a long-running operation +// as it will create one or more linked datasets. +func (c *restClient) SubscribeDataExchange(ctx context.Context, req *analyticshubpb.SubscribeDataExchangeRequest, opts ...gax.CallOption) (*SubscribeDataExchangeOperation, error) { m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} jsonReq, err := m.Marshal(req) if err != nil { @@ -1905,17 +2381,16 @@ func (c *restClient) GetIamPolicy(ctx context.Context, req *iampb.GetIamPolicyRe if err != nil { return nil, err } - baseUrl.Path += fmt.Sprintf("/v1/%v:getIamPolicy", req.GetResource()) + baseUrl.Path += fmt.Sprintf("/v1/%v:subscribe", req.GetName()) // Build HTTP headers from client and context metadata. - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "resource", url.QueryEscape(req.GetResource()))} + 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).GetIamPolicy[0:len((*c.CallOptions).GetIamPolicy):len((*c.CallOptions).GetIamPolicy)], opts...) unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} - resp := &iampb.Policy{} + resp := &longrunningpb.Operation{} e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { if settings.Path != "" { baseUrl.Path = settings.Path @@ -1951,11 +2426,18 @@ func (c *restClient) GetIamPolicy(ctx context.Context, req *iampb.GetIamPolicyRe if e != nil { return nil, e } - return resp, nil + + override := fmt.Sprintf("/v1/%s", resp.GetName()) + return &SubscribeDataExchangeOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + pollPath: override, + }, nil } -// SetIamPolicy sets the IAM policy. -func (c *restClient) SetIamPolicy(ctx context.Context, req *iampb.SetIamPolicyRequest, opts ...gax.CallOption) (*iampb.Policy, error) { +// RefreshSubscription refreshes a Subscription to a Data Exchange. A Data Exchange can become +// stale when a publisher adds or removes data. This is a long-running +// operation as it may create many linked datasets. +func (c *restClient) RefreshSubscription(ctx context.Context, req *analyticshubpb.RefreshSubscriptionRequest, opts ...gax.CallOption) (*RefreshSubscriptionOperation, error) { m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} jsonReq, err := m.Marshal(req) if err != nil { @@ -1966,17 +2448,16 @@ func (c *restClient) SetIamPolicy(ctx context.Context, req *iampb.SetIamPolicyRe if err != nil { return nil, err } - baseUrl.Path += fmt.Sprintf("/v1/%v:setIamPolicy", req.GetResource()) + baseUrl.Path += fmt.Sprintf("/v1/%v:refresh", req.GetName()) // Build HTTP headers from client and context metadata. - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "resource", url.QueryEscape(req.GetResource()))} + 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).SetIamPolicy[0:len((*c.CallOptions).SetIamPolicy):len((*c.CallOptions).SetIamPolicy)], opts...) unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} - resp := &iampb.Policy{} + resp := &longrunningpb.Operation{} e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { if settings.Path != "" { baseUrl.Path = settings.Path @@ -2012,37 +2493,36 @@ func (c *restClient) SetIamPolicy(ctx context.Context, req *iampb.SetIamPolicyRe if e != nil { return nil, e } - return resp, nil -} -// TestIamPermissions returns the permissions that a caller has. -func (c *restClient) TestIamPermissions(ctx context.Context, req *iampb.TestIamPermissionsRequest, opts ...gax.CallOption) (*iampb.TestIamPermissionsResponse, error) { - m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} - jsonReq, err := m.Marshal(req) - if err != nil { - return nil, err - } + override := fmt.Sprintf("/v1/%s", resp.GetName()) + return &RefreshSubscriptionOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + pollPath: override, + }, nil +} +// GetSubscription gets the details of a Subscription. +func (c *restClient) GetSubscription(ctx context.Context, req *analyticshubpb.GetSubscriptionRequest, opts ...gax.CallOption) (*analyticshubpb.Subscription, error) { baseUrl, err := url.Parse(c.endpoint) if err != nil { return nil, err } - baseUrl.Path += fmt.Sprintf("/v1/%v:testIamPermissions", req.GetResource()) + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) // Build HTTP headers from client and context metadata. - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "resource", url.QueryEscape(req.GetResource()))} + 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).TestIamPermissions[0:len((*c.CallOptions).TestIamPermissions):len((*c.CallOptions).TestIamPermissions)], opts...) + opts = append((*c.CallOptions).GetSubscription[0:len((*c.CallOptions).GetSubscription):len((*c.CallOptions).GetSubscription)], opts...) unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} - resp := &iampb.TestIamPermissionsResponse{} + resp := &analyticshubpb.Subscription{} 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)) + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) if err != nil { return err } @@ -2076,36 +2556,756 @@ func (c *restClient) TestIamPermissions(ctx context.Context, req *iampb.TestIamP return resp, nil } -// DataExchangeIterator manages a stream of *analyticshubpb.DataExchange. -type DataExchangeIterator struct { - items []*analyticshubpb.DataExchange - pageInfo *iterator.PageInfo - nextFunc func() error +// ListSubscriptions lists all subscriptions in a given project and location. +func (c *restClient) ListSubscriptions(ctx context.Context, req *analyticshubpb.ListSubscriptionsRequest, opts ...gax.CallOption) *SubscriptionIterator { + it := &SubscriptionIterator{} + req = proto.Clone(req).(*analyticshubpb.ListSubscriptionsRequest) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + it.InternalFetch = func(pageSize int, pageToken string) ([]*analyticshubpb.Subscription, string, error) { + resp := &analyticshubpb.ListSubscriptionsResponse{} + 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/subscriptions", req.GetParent()) - // 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{} + params := url.Values{} + 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())) + } - // 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 []*analyticshubpb.DataExchange, nextPageToken string, err error) -} + baseUrl.RawQuery = params.Encode() -// PageInfo supports pagination. See the google.golang.org/api/iterator package for details. -func (it *DataExchangeIterator) PageInfo() *iterator.PageInfo { - return it.pageInfo -} + // 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 -// 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 *DataExchangeIterator) Next() (*analyticshubpb.DataExchange, error) { - var item *analyticshubpb.DataExchange - if err := it.nextFunc(); err != nil { + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + 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.GetSubscriptions(), 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 +} + +// ListSharedResourceSubscriptions lists all subscriptions on a given Data Exchange or Listing. +func (c *restClient) ListSharedResourceSubscriptions(ctx context.Context, req *analyticshubpb.ListSharedResourceSubscriptionsRequest, opts ...gax.CallOption) *SubscriptionIterator { + it := &SubscriptionIterator{} + req = proto.Clone(req).(*analyticshubpb.ListSharedResourceSubscriptionsRequest) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + it.InternalFetch = func(pageSize int, pageToken string) ([]*analyticshubpb.Subscription, string, error) { + resp := &analyticshubpb.ListSharedResourceSubscriptionsResponse{} + 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:listSubscriptions", req.GetResource()) + + params := url.Values{} + if req.GetIncludeDeletedSubscriptions() { + params.Add("includeDeletedSubscriptions", fmt.Sprintf("%v", req.GetIncludeDeletedSubscriptions())) + } + 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 + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + 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.GetSharedResourceSubscriptions(), 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 +} + +// RevokeSubscription revokes a given subscription. +func (c *restClient) RevokeSubscription(ctx context.Context, req *analyticshubpb.RevokeSubscriptionRequest, opts ...gax.CallOption) (*analyticshubpb.RevokeSubscriptionResponse, 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:revoke", req.GetName()) + + // 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).RevokeSubscription[0:len((*c.CallOptions).RevokeSubscription):len((*c.CallOptions).RevokeSubscription)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &analyticshubpb.RevokeSubscriptionResponse{} + 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 + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + 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 +} + +// DeleteSubscription deletes a subscription. +func (c *restClient) DeleteSubscription(ctx context.Context, req *analyticshubpb.DeleteSubscriptionRequest, opts ...gax.CallOption) (*DeleteSubscriptionOperation, error) { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) + + // 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 + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + 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 &DeleteSubscriptionOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + pollPath: override, + }, nil +} + +// GetIamPolicy gets the IAM policy. +func (c *restClient) GetIamPolicy(ctx context.Context, req *iampb.GetIamPolicyRequest, opts ...gax.CallOption) (*iampb.Policy, 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:getIamPolicy", req.GetResource()) + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "resource", url.QueryEscape(req.GetResource()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).GetIamPolicy[0:len((*c.CallOptions).GetIamPolicy):len((*c.CallOptions).GetIamPolicy)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &iampb.Policy{} + 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 + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + 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 +} + +// SetIamPolicy sets the IAM policy. +func (c *restClient) SetIamPolicy(ctx context.Context, req *iampb.SetIamPolicyRequest, opts ...gax.CallOption) (*iampb.Policy, 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:setIamPolicy", req.GetResource()) + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "resource", url.QueryEscape(req.GetResource()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).SetIamPolicy[0:len((*c.CallOptions).SetIamPolicy):len((*c.CallOptions).SetIamPolicy)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &iampb.Policy{} + 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 + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + 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 +} + +// TestIamPermissions returns the permissions that a caller has. +func (c *restClient) TestIamPermissions(ctx context.Context, req *iampb.TestIamPermissionsRequest, opts ...gax.CallOption) (*iampb.TestIamPermissionsResponse, 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:testIamPermissions", req.GetResource()) + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "resource", url.QueryEscape(req.GetResource()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).TestIamPermissions[0:len((*c.CallOptions).TestIamPermissions):len((*c.CallOptions).TestIamPermissions)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &iampb.TestIamPermissionsResponse{} + 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 + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + 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 +} + +// DeleteSubscriptionOperation manages a long-running operation from DeleteSubscription. +type DeleteSubscriptionOperation struct { + lro *longrunning.Operation + pollPath string +} + +// DeleteSubscriptionOperation returns a new DeleteSubscriptionOperation from a given name. +// The name must be that of a previously created DeleteSubscriptionOperation, possibly from a different process. +func (c *gRPCClient) DeleteSubscriptionOperation(name string) *DeleteSubscriptionOperation { + return &DeleteSubscriptionOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + } +} + +// DeleteSubscriptionOperation returns a new DeleteSubscriptionOperation from a given name. +// The name must be that of a previously created DeleteSubscriptionOperation, possibly from a different process. +func (c *restClient) DeleteSubscriptionOperation(name string) *DeleteSubscriptionOperation { + override := fmt.Sprintf("/v1/%s", name) + return &DeleteSubscriptionOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + pollPath: override, + } +} + +// 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 *DeleteSubscriptionOperation) 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 *DeleteSubscriptionOperation) 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 *DeleteSubscriptionOperation) Metadata() (*analyticshubpb.OperationMetadata, error) { + var meta analyticshubpb.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 *DeleteSubscriptionOperation) 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 *DeleteSubscriptionOperation) Name() string { + return op.lro.Name() +} + +// RefreshSubscriptionOperation manages a long-running operation from RefreshSubscription. +type RefreshSubscriptionOperation struct { + lro *longrunning.Operation + pollPath string +} + +// RefreshSubscriptionOperation returns a new RefreshSubscriptionOperation from a given name. +// The name must be that of a previously created RefreshSubscriptionOperation, possibly from a different process. +func (c *gRPCClient) RefreshSubscriptionOperation(name string) *RefreshSubscriptionOperation { + return &RefreshSubscriptionOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + } +} + +// RefreshSubscriptionOperation returns a new RefreshSubscriptionOperation from a given name. +// The name must be that of a previously created RefreshSubscriptionOperation, possibly from a different process. +func (c *restClient) RefreshSubscriptionOperation(name string) *RefreshSubscriptionOperation { + override := fmt.Sprintf("/v1/%s", name) + return &RefreshSubscriptionOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + pollPath: override, + } +} + +// 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 *RefreshSubscriptionOperation) Wait(ctx context.Context, opts ...gax.CallOption) (*analyticshubpb.RefreshSubscriptionResponse, error) { + opts = append([]gax.CallOption{gax.WithPath(op.pollPath)}, opts...) + var resp analyticshubpb.RefreshSubscriptionResponse + 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 *RefreshSubscriptionOperation) Poll(ctx context.Context, opts ...gax.CallOption) (*analyticshubpb.RefreshSubscriptionResponse, error) { + opts = append([]gax.CallOption{gax.WithPath(op.pollPath)}, opts...) + var resp analyticshubpb.RefreshSubscriptionResponse + 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 *RefreshSubscriptionOperation) Metadata() (*analyticshubpb.OperationMetadata, error) { + var meta analyticshubpb.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 *RefreshSubscriptionOperation) 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 *RefreshSubscriptionOperation) Name() string { + return op.lro.Name() +} + +// SubscribeDataExchangeOperation manages a long-running operation from SubscribeDataExchange. +type SubscribeDataExchangeOperation struct { + lro *longrunning.Operation + pollPath string +} + +// SubscribeDataExchangeOperation returns a new SubscribeDataExchangeOperation from a given name. +// The name must be that of a previously created SubscribeDataExchangeOperation, possibly from a different process. +func (c *gRPCClient) SubscribeDataExchangeOperation(name string) *SubscribeDataExchangeOperation { + return &SubscribeDataExchangeOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + } +} + +// SubscribeDataExchangeOperation returns a new SubscribeDataExchangeOperation from a given name. +// The name must be that of a previously created SubscribeDataExchangeOperation, possibly from a different process. +func (c *restClient) SubscribeDataExchangeOperation(name string) *SubscribeDataExchangeOperation { + override := fmt.Sprintf("/v1/%s", name) + return &SubscribeDataExchangeOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + pollPath: override, + } +} + +// 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 *SubscribeDataExchangeOperation) Wait(ctx context.Context, opts ...gax.CallOption) (*analyticshubpb.SubscribeDataExchangeResponse, error) { + opts = append([]gax.CallOption{gax.WithPath(op.pollPath)}, opts...) + var resp analyticshubpb.SubscribeDataExchangeResponse + 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 *SubscribeDataExchangeOperation) Poll(ctx context.Context, opts ...gax.CallOption) (*analyticshubpb.SubscribeDataExchangeResponse, error) { + opts = append([]gax.CallOption{gax.WithPath(op.pollPath)}, opts...) + var resp analyticshubpb.SubscribeDataExchangeResponse + 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 *SubscribeDataExchangeOperation) Metadata() (*analyticshubpb.OperationMetadata, error) { + var meta analyticshubpb.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 *SubscribeDataExchangeOperation) 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 *SubscribeDataExchangeOperation) Name() string { + return op.lro.Name() +} + +// DataExchangeIterator manages a stream of *analyticshubpb.DataExchange. +type DataExchangeIterator struct { + items []*analyticshubpb.DataExchange + 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 []*analyticshubpb.DataExchange, nextPageToken string, err error) +} + +// PageInfo supports pagination. See the google.golang.org/api/iterator package for details. +func (it *DataExchangeIterator) 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 *DataExchangeIterator) Next() (*analyticshubpb.DataExchange, error) { + var item *analyticshubpb.DataExchange + if err := it.nextFunc(); err != nil { return item, err } item = it.items[0] @@ -2169,3 +3369,50 @@ func (it *ListingIterator) takeBuf() interface{} { it.items = nil return b } + +// SubscriptionIterator manages a stream of *analyticshubpb.Subscription. +type SubscriptionIterator struct { + items []*analyticshubpb.Subscription + 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 []*analyticshubpb.Subscription, nextPageToken string, err error) +} + +// PageInfo supports pagination. See the google.golang.org/api/iterator package for details. +func (it *SubscriptionIterator) 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 *SubscriptionIterator) Next() (*analyticshubpb.Subscription, error) { + var item *analyticshubpb.Subscription + if err := it.nextFunc(); err != nil { + return item, err + } + item = it.items[0] + it.items = it.items[1:] + return item, nil +} + +func (it *SubscriptionIterator) bufLen() int { + return len(it.items) +} + +func (it *SubscriptionIterator) takeBuf() interface{} { + b := it.items + it.items = nil + return b +} diff --git a/bigquery/analyticshub/apiv1/analytics_hub_client_example_test.go b/bigquery/analyticshub/apiv1/analytics_hub_client_example_test.go index 631210adcf4d..60ddb0a0e7bc 100644 --- a/bigquery/analyticshub/apiv1/analytics_hub_client_example_test.go +++ b/bigquery/analyticshub/apiv1/analytics_hub_client_example_test.go @@ -373,6 +373,206 @@ func ExampleClient_SubscribeListing() { _ = resp } +func ExampleClient_SubscribeDataExchange() { + 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 := analyticshub.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &analyticshubpb.SubscribeDataExchangeRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/bigquery/analyticshub/apiv1/analyticshubpb#SubscribeDataExchangeRequest. + } + op, err := c.SubscribeDataExchange(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_RefreshSubscription() { + 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 := analyticshub.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &analyticshubpb.RefreshSubscriptionRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/bigquery/analyticshub/apiv1/analyticshubpb#RefreshSubscriptionRequest. + } + op, err := c.RefreshSubscription(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_GetSubscription() { + 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 := analyticshub.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &analyticshubpb.GetSubscriptionRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/bigquery/analyticshub/apiv1/analyticshubpb#GetSubscriptionRequest. + } + resp, err := c.GetSubscription(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_ListSubscriptions() { + 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 := analyticshub.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &analyticshubpb.ListSubscriptionsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/bigquery/analyticshub/apiv1/analyticshubpb#ListSubscriptionsRequest. + } + it := c.ListSubscriptions(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + } +} + +func ExampleClient_ListSharedResourceSubscriptions() { + 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 := analyticshub.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &analyticshubpb.ListSharedResourceSubscriptionsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/bigquery/analyticshub/apiv1/analyticshubpb#ListSharedResourceSubscriptionsRequest. + } + it := c.ListSharedResourceSubscriptions(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + } +} + +func ExampleClient_RevokeSubscription() { + 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 := analyticshub.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &analyticshubpb.RevokeSubscriptionRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/bigquery/analyticshub/apiv1/analyticshubpb#RevokeSubscriptionRequest. + } + resp, err := c.RevokeSubscription(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_DeleteSubscription() { + 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 := analyticshub.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &analyticshubpb.DeleteSubscriptionRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/bigquery/analyticshub/apiv1/analyticshubpb#DeleteSubscriptionRequest. + } + op, err := c.DeleteSubscription(ctx, req) + if err != nil { + // TODO: Handle error. + } + + err = op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } +} + func ExampleClient_GetIamPolicy() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. diff --git a/bigquery/analyticshub/apiv1/analyticshubpb/analyticshub.pb.go b/bigquery/analyticshub/apiv1/analyticshubpb/analyticshub.pb.go index c2ba29403528..408507e075cb 100755 --- a/bigquery/analyticshub/apiv1/analyticshubpb/analyticshub.pb.go +++ b/bigquery/analyticshub/apiv1/analyticshubpb/analyticshub.pb.go @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -26,6 +26,7 @@ import ( sync "sync" iampb "cloud.google.com/go/iam/apiv1/iampb" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" @@ -34,6 +35,7 @@ import ( protoimpl "google.golang.org/protobuf/runtime/protoimpl" emptypb "google.golang.org/protobuf/types/known/emptypb" fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" ) @@ -91,7 +93,7 @@ func (x Listing_State) Number() protoreflect.EnumNumber { // Deprecated: Use Listing_State.Descriptor instead. func (Listing_State) EnumDescriptor() ([]byte, []int) { - return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{5, 0} + return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{6, 0} } // Listing categories. @@ -192,7 +194,66 @@ func (x Listing_Category) Number() protoreflect.EnumNumber { // Deprecated: Use Listing_Category.Descriptor instead. func (Listing_Category) EnumDescriptor() ([]byte, []int) { - return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{5, 1} + return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{6, 1} +} + +// State of the subscription. +type Subscription_State int32 + +const ( + // Default value. This value is unused. + Subscription_STATE_UNSPECIFIED Subscription_State = 0 + // This subscription is active and the data is accessible. + Subscription_STATE_ACTIVE Subscription_State = 1 + // The data referenced by this subscription is out of date and should be + // refreshed. This can happen when a data provider adds or removes datasets. + Subscription_STATE_STALE Subscription_State = 2 + // This subscription has been cancelled or revoked and the data is no longer + // accessible. + Subscription_STATE_INACTIVE Subscription_State = 3 +) + +// Enum value maps for Subscription_State. +var ( + Subscription_State_name = map[int32]string{ + 0: "STATE_UNSPECIFIED", + 1: "STATE_ACTIVE", + 2: "STATE_STALE", + 3: "STATE_INACTIVE", + } + Subscription_State_value = map[string]int32{ + "STATE_UNSPECIFIED": 0, + "STATE_ACTIVE": 1, + "STATE_STALE": 2, + "STATE_INACTIVE": 3, + } +) + +func (x Subscription_State) Enum() *Subscription_State { + p := new(Subscription_State) + *p = x + return p +} + +func (x Subscription_State) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Subscription_State) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_enumTypes[2].Descriptor() +} + +func (Subscription_State) Type() protoreflect.EnumType { + return &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_enumTypes[2] +} + +func (x Subscription_State) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Subscription_State.Descriptor instead. +func (Subscription_State) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{7, 0} } // A data exchange is a container that lets you share data. Along with the @@ -206,31 +267,32 @@ type DataExchange struct { // Output only. The resource name of the data exchange. // e.g. `projects/myproject/locations/US/dataExchanges/123`. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Required. Human-readable display name of the data exchange. The display name must - // contain only Unicode letters, numbers (0-9), underscores (_), dashes (-), - // spaces ( ), ampersands (&) and must not start or end with spaces. - // Default value is an empty string. - // Max length: 63 bytes. + // Required. Human-readable display name of the data exchange. The display + // name must contain only Unicode letters, numbers (0-9), underscores (_), + // dashes (-), spaces ( ), ampersands (&) and must not start or end with + // spaces. Default value is an empty string. Max length: 63 bytes. DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - // Optional. Description of the data exchange. The description must not contain Unicode - // non-characters as well as C0 and C1 control codes except tabs (HT), - // new lines (LF), carriage returns (CR), and page breaks (FF). + // Optional. Description of the data exchange. The description must not + // contain Unicode non-characters as well as C0 and C1 control codes except + // tabs (HT), new lines (LF), carriage returns (CR), and page breaks (FF). // Default value is an empty string. // Max length: 2000 bytes. Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - // Optional. Email or URL of the primary point of contact of the data exchange. - // Max Length: 1000 bytes. + // Optional. Email or URL of the primary point of contact of the data + // exchange. Max Length: 1000 bytes. PrimaryContact string `protobuf:"bytes,4,opt,name=primary_contact,json=primaryContact,proto3" json:"primary_contact,omitempty"` // Optional. Documentation describing the data exchange. Documentation string `protobuf:"bytes,5,opt,name=documentation,proto3" json:"documentation,omitempty"` // Output only. Number of listings contained in the data exchange. ListingCount int32 `protobuf:"varint,6,opt,name=listing_count,json=listingCount,proto3" json:"listing_count,omitempty"` - // Optional. Base64 encoded image representing the data exchange. Max Size: 3.0MiB - // Expected image dimensions are 512x512 pixels, however the API only - // performs validation on size of the encoded data. - // Note: For byte fields, the content of the fields are base64-encoded (which - // increases the size of the data by 33-36%) when using JSON on the wire. + // Optional. Base64 encoded image representing the data exchange. Max + // Size: 3.0MiB Expected image dimensions are 512x512 pixels, however the API + // only performs validation on size of the encoded data. Note: For byte + // fields, the content of the fields are base64-encoded (which increases the + // size of the data by 33-36%) when using JSON on the wire. Icon []byte `protobuf:"bytes,7,opt,name=icon,proto3" json:"icon,omitempty"` + // Optional. Configurable data sharing environment option for a data exchange. + SharingEnvironmentConfig *SharingEnvironmentConfig `protobuf:"bytes,8,opt,name=sharing_environment_config,json=sharingEnvironmentConfig,proto3" json:"sharing_environment_config,omitempty"` } func (x *DataExchange) Reset() { @@ -314,6 +376,97 @@ func (x *DataExchange) GetIcon() []byte { return nil } +func (x *DataExchange) GetSharingEnvironmentConfig() *SharingEnvironmentConfig { + if x != nil { + return x.SharingEnvironmentConfig + } + return nil +} + +// Sharing environment is a behavior model for sharing data within a +// data exchange. This option is configurable for a data exchange. +type SharingEnvironmentConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Environment: + // *SharingEnvironmentConfig_DefaultExchangeConfig_ + // *SharingEnvironmentConfig_DcrExchangeConfig_ + Environment isSharingEnvironmentConfig_Environment `protobuf_oneof:"environment"` +} + +func (x *SharingEnvironmentConfig) Reset() { + *x = SharingEnvironmentConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SharingEnvironmentConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SharingEnvironmentConfig) ProtoMessage() {} + +func (x *SharingEnvironmentConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SharingEnvironmentConfig.ProtoReflect.Descriptor instead. +func (*SharingEnvironmentConfig) Descriptor() ([]byte, []int) { + return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{1} +} + +func (m *SharingEnvironmentConfig) GetEnvironment() isSharingEnvironmentConfig_Environment { + if m != nil { + return m.Environment + } + return nil +} + +func (x *SharingEnvironmentConfig) GetDefaultExchangeConfig() *SharingEnvironmentConfig_DefaultExchangeConfig { + if x, ok := x.GetEnvironment().(*SharingEnvironmentConfig_DefaultExchangeConfig_); ok { + return x.DefaultExchangeConfig + } + return nil +} + +func (x *SharingEnvironmentConfig) GetDcrExchangeConfig() *SharingEnvironmentConfig_DcrExchangeConfig { + if x, ok := x.GetEnvironment().(*SharingEnvironmentConfig_DcrExchangeConfig_); ok { + return x.DcrExchangeConfig + } + return nil +} + +type isSharingEnvironmentConfig_Environment interface { + isSharingEnvironmentConfig_Environment() +} + +type SharingEnvironmentConfig_DefaultExchangeConfig_ struct { + // Default Analytics Hub data exchange, used for secured data sharing. + DefaultExchangeConfig *SharingEnvironmentConfig_DefaultExchangeConfig `protobuf:"bytes,1,opt,name=default_exchange_config,json=defaultExchangeConfig,proto3,oneof"` +} + +type SharingEnvironmentConfig_DcrExchangeConfig_ struct { + // Data Clean Room (DCR), used for privacy-safe and secured data sharing. + DcrExchangeConfig *SharingEnvironmentConfig_DcrExchangeConfig `protobuf:"bytes,2,opt,name=dcr_exchange_config,json=dcrExchangeConfig,proto3,oneof"` +} + +func (*SharingEnvironmentConfig_DefaultExchangeConfig_) isSharingEnvironmentConfig_Environment() {} + +func (*SharingEnvironmentConfig_DcrExchangeConfig_) isSharingEnvironmentConfig_Environment() {} + // Contains details of the data provider. type DataProvider struct { state protoimpl.MessageState @@ -330,7 +483,7 @@ type DataProvider struct { func (x *DataProvider) Reset() { *x = DataProvider{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[1] + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -343,7 +496,7 @@ func (x *DataProvider) String() string { func (*DataProvider) ProtoMessage() {} func (x *DataProvider) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[1] + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -356,7 +509,7 @@ func (x *DataProvider) ProtoReflect() protoreflect.Message { // Deprecated: Use DataProvider.ProtoReflect.Descriptor instead. func (*DataProvider) Descriptor() ([]byte, []int) { - return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{1} + return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{2} } func (x *DataProvider) GetName() string { @@ -389,7 +542,7 @@ type Publisher struct { func (x *Publisher) Reset() { *x = Publisher{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[2] + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -402,7 +555,7 @@ func (x *Publisher) String() string { func (*Publisher) ProtoMessage() {} func (x *Publisher) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[2] + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -415,7 +568,7 @@ func (x *Publisher) ProtoReflect() protoreflect.Message { // Deprecated: Use Publisher.ProtoReflect.Descriptor instead. func (*Publisher) Descriptor() ([]byte, []int) { - return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{2} + return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{3} } func (x *Publisher) GetName() string { @@ -449,7 +602,7 @@ type DestinationDatasetReference struct { func (x *DestinationDatasetReference) Reset() { *x = DestinationDatasetReference{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[3] + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -462,7 +615,7 @@ func (x *DestinationDatasetReference) String() string { func (*DestinationDatasetReference) ProtoMessage() {} func (x *DestinationDatasetReference) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[3] + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -475,7 +628,7 @@ func (x *DestinationDatasetReference) ProtoReflect() protoreflect.Message { // Deprecated: Use DestinationDatasetReference.ProtoReflect.Descriptor instead. func (*DestinationDatasetReference) Descriptor() ([]byte, []int) { - return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{3} + return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{4} } func (x *DestinationDatasetReference) GetDatasetId() string { @@ -519,7 +672,7 @@ type DestinationDataset struct { func (x *DestinationDataset) Reset() { *x = DestinationDataset{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[4] + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -532,7 +685,7 @@ func (x *DestinationDataset) String() string { func (*DestinationDataset) ProtoMessage() {} func (x *DestinationDataset) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[4] + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -545,7 +698,7 @@ func (x *DestinationDataset) ProtoReflect() protoreflect.Message { // Deprecated: Use DestinationDataset.ProtoReflect.Descriptor instead. func (*DestinationDataset) Descriptor() ([]byte, []int) { - return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{4} + return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{5} } func (x *DestinationDataset) GetDatasetReference() *DestinationDatasetReference { @@ -600,17 +753,15 @@ type Listing struct { // Output only. The resource name of the listing. // e.g. `projects/myproject/locations/US/dataExchanges/123/listings/456` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Required. Human-readable display name of the listing. The display name must contain - // only Unicode letters, numbers (0-9), underscores (_), dashes (-), spaces - // ( ), ampersands (&) and can't start or end with spaces. - // Default value is an empty string. - // Max length: 63 bytes. + // Required. Human-readable display name of the listing. The display name must + // contain only Unicode letters, numbers (0-9), underscores (_), dashes (-), + // spaces ( ), ampersands (&) and can't start or end with spaces. Default + // value is an empty string. Max length: 63 bytes. DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - // Optional. Short description of the listing. The description must not contain - // Unicode non-characters and C0 and C1 control codes except tabs (HT), - // new lines (LF), carriage returns (CR), and page breaks (FF). - // Default value is an empty string. - // Max length: 2000 bytes. + // Optional. Short description of the listing. The description must not + // contain Unicode non-characters and C0 and C1 control codes except tabs + // (HT), new lines (LF), carriage returns (CR), and page breaks (FF). Default + // value is an empty string. Max length: 2000 bytes. Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` // Optional. Email or URL of the primary point of contact of the listing. // Max Length: 1000 bytes. @@ -636,12 +787,15 @@ type Listing struct { // Subscribers can use this reference to request access. // Max Length: 1000 bytes. RequestAccess string `protobuf:"bytes,12,opt,name=request_access,json=requestAccess,proto3" json:"request_access,omitempty"` + // Optional. If set, restricted export configuration will be propagated and + // enforced on the linked dataset. + RestrictedExportConfig *Listing_RestrictedExportConfig `protobuf:"bytes,13,opt,name=restricted_export_config,json=restrictedExportConfig,proto3" json:"restricted_export_config,omitempty"` } func (x *Listing) Reset() { *x = Listing{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[5] + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -654,7 +808,7 @@ func (x *Listing) String() string { func (*Listing) ProtoMessage() {} func (x *Listing) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[5] + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -667,7 +821,7 @@ func (x *Listing) ProtoReflect() protoreflect.Message { // Deprecated: Use Listing.ProtoReflect.Descriptor instead. func (*Listing) Descriptor() ([]byte, []int) { - return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{5} + return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{6} } func (m *Listing) GetSource() isListing_Source { @@ -761,6 +915,13 @@ func (x *Listing) GetRequestAccess() string { return "" } +func (x *Listing) GetRestrictedExportConfig() *Listing_RestrictedExportConfig { + if x != nil { + return x.RestrictedExportConfig + } + return nil +} + type isListing_Source interface { isListing_Source() } @@ -772,6 +933,172 @@ type Listing_BigqueryDataset struct { func (*Listing_BigqueryDataset) isListing_Source() {} +// A subscription represents a subscribers' access to a particular set of +// published data. It contains references to associated listings, +// data exchanges, and linked datasets. +type Subscription struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to ResourceName: + // *Subscription_Listing + // *Subscription_DataExchange + ResourceName isSubscription_ResourceName `protobuf_oneof:"resource_name"` + // Output only. The resource name of the subscription. + // e.g. `projects/myproject/locations/US/subscriptions/123`. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Output only. Timestamp when the subscription was created. + CreationTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=creation_time,json=creationTime,proto3" json:"creation_time,omitempty"` + // Output only. Timestamp when the subscription was last modified. + LastModifyTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=last_modify_time,json=lastModifyTime,proto3" json:"last_modify_time,omitempty"` + // Output only. Organization of the project this subscription belongs to. + OrganizationId string `protobuf:"bytes,4,opt,name=organization_id,json=organizationId,proto3" json:"organization_id,omitempty"` + // Output only. Display name of the project of this subscription. + OrganizationDisplayName string `protobuf:"bytes,10,opt,name=organization_display_name,json=organizationDisplayName,proto3" json:"organization_display_name,omitempty"` + // Output only. Current state of the subscription. + State Subscription_State `protobuf:"varint,7,opt,name=state,proto3,enum=google.cloud.bigquery.analyticshub.v1.Subscription_State" json:"state,omitempty"` + // Output only. Map of listing resource names to associated linked resource, + // e.g. projects/123/locations/US/dataExchanges/456/listings/789 + // -> + // projects/123/datasets/my_dataset + // + // For listing-level subscriptions, this is a map of size 1. + // Only contains values if state == STATE_ACTIVE. + LinkedDatasetMap map[string]*Subscription_LinkedResource `protobuf:"bytes,8,rep,name=linked_dataset_map,json=linkedDatasetMap,proto3" json:"linked_dataset_map,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // Output only. Email of the subscriber. + SubscriberContact string `protobuf:"bytes,9,opt,name=subscriber_contact,json=subscriberContact,proto3" json:"subscriber_contact,omitempty"` +} + +func (x *Subscription) Reset() { + *x = Subscription{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Subscription) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Subscription) ProtoMessage() {} + +func (x *Subscription) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Subscription.ProtoReflect.Descriptor instead. +func (*Subscription) Descriptor() ([]byte, []int) { + return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{7} +} + +func (m *Subscription) GetResourceName() isSubscription_ResourceName { + if m != nil { + return m.ResourceName + } + return nil +} + +func (x *Subscription) GetListing() string { + if x, ok := x.GetResourceName().(*Subscription_Listing); ok { + return x.Listing + } + return "" +} + +func (x *Subscription) GetDataExchange() string { + if x, ok := x.GetResourceName().(*Subscription_DataExchange); ok { + return x.DataExchange + } + return "" +} + +func (x *Subscription) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Subscription) GetCreationTime() *timestamppb.Timestamp { + if x != nil { + return x.CreationTime + } + return nil +} + +func (x *Subscription) GetLastModifyTime() *timestamppb.Timestamp { + if x != nil { + return x.LastModifyTime + } + return nil +} + +func (x *Subscription) GetOrganizationId() string { + if x != nil { + return x.OrganizationId + } + return "" +} + +func (x *Subscription) GetOrganizationDisplayName() string { + if x != nil { + return x.OrganizationDisplayName + } + return "" +} + +func (x *Subscription) GetState() Subscription_State { + if x != nil { + return x.State + } + return Subscription_STATE_UNSPECIFIED +} + +func (x *Subscription) GetLinkedDatasetMap() map[string]*Subscription_LinkedResource { + if x != nil { + return x.LinkedDatasetMap + } + return nil +} + +func (x *Subscription) GetSubscriberContact() string { + if x != nil { + return x.SubscriberContact + } + return "" +} + +type isSubscription_ResourceName interface { + isSubscription_ResourceName() +} + +type Subscription_Listing struct { + // Output only. Resource name of the source Listing. + // e.g. projects/123/locations/US/dataExchanges/456/listings/789 + Listing string `protobuf:"bytes,5,opt,name=listing,proto3,oneof"` +} + +type Subscription_DataExchange struct { + // Output only. Resource name of the source Data Exchange. + // e.g. projects/123/locations/US/dataExchanges/456 + DataExchange string `protobuf:"bytes,6,opt,name=data_exchange,json=dataExchange,proto3,oneof"` +} + +func (*Subscription_Listing) isSubscription_ResourceName() {} + +func (*Subscription_DataExchange) isSubscription_ResourceName() {} + // Message for requesting the list of data exchanges. type ListDataExchangesRequest struct { state protoimpl.MessageState @@ -792,7 +1119,7 @@ type ListDataExchangesRequest struct { func (x *ListDataExchangesRequest) Reset() { *x = ListDataExchangesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[6] + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -805,7 +1132,7 @@ func (x *ListDataExchangesRequest) String() string { func (*ListDataExchangesRequest) ProtoMessage() {} func (x *ListDataExchangesRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[6] + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -818,7 +1145,7 @@ func (x *ListDataExchangesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListDataExchangesRequest.ProtoReflect.Descriptor instead. func (*ListDataExchangesRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{6} + return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{8} } func (x *ListDataExchangesRequest) GetParent() string { @@ -857,7 +1184,7 @@ type ListDataExchangesResponse struct { func (x *ListDataExchangesResponse) Reset() { *x = ListDataExchangesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[7] + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -870,7 +1197,7 @@ func (x *ListDataExchangesResponse) String() string { func (*ListDataExchangesResponse) ProtoMessage() {} func (x *ListDataExchangesResponse) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[7] + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -883,7 +1210,7 @@ func (x *ListDataExchangesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListDataExchangesResponse.ProtoReflect.Descriptor instead. func (*ListDataExchangesResponse) Descriptor() ([]byte, []int) { - return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{7} + return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{9} } func (x *ListDataExchangesResponse) GetDataExchanges() []*DataExchange { @@ -907,8 +1234,8 @@ type ListOrgDataExchangesRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. The organization resource path of the projects containing DataExchanges. - // e.g. `organizations/myorg/locations/US`. + // Required. The organization resource path of the projects containing + // DataExchanges. e.g. `organizations/myorg/locations/US`. Organization string `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` // The maximum number of results to return in a single response page. Leverage // the page tokens to iterate through the entire collection. @@ -921,7 +1248,7 @@ type ListOrgDataExchangesRequest struct { func (x *ListOrgDataExchangesRequest) Reset() { *x = ListOrgDataExchangesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[8] + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -934,7 +1261,7 @@ func (x *ListOrgDataExchangesRequest) String() string { func (*ListOrgDataExchangesRequest) ProtoMessage() {} func (x *ListOrgDataExchangesRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[8] + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -947,7 +1274,7 @@ func (x *ListOrgDataExchangesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListOrgDataExchangesRequest.ProtoReflect.Descriptor instead. func (*ListOrgDataExchangesRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{8} + return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{10} } func (x *ListOrgDataExchangesRequest) GetOrganization() string { @@ -987,7 +1314,7 @@ type ListOrgDataExchangesResponse struct { func (x *ListOrgDataExchangesResponse) Reset() { *x = ListOrgDataExchangesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[9] + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1000,7 +1327,7 @@ func (x *ListOrgDataExchangesResponse) String() string { func (*ListOrgDataExchangesResponse) ProtoMessage() {} func (x *ListOrgDataExchangesResponse) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[9] + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1013,7 +1340,7 @@ func (x *ListOrgDataExchangesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListOrgDataExchangesResponse.ProtoReflect.Descriptor instead. func (*ListOrgDataExchangesResponse) Descriptor() ([]byte, []int) { - return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{9} + return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{11} } func (x *ListOrgDataExchangesResponse) GetDataExchanges() []*DataExchange { @@ -1044,7 +1371,7 @@ type GetDataExchangeRequest struct { func (x *GetDataExchangeRequest) Reset() { *x = GetDataExchangeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[10] + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1057,7 +1384,7 @@ func (x *GetDataExchangeRequest) String() string { func (*GetDataExchangeRequest) ProtoMessage() {} func (x *GetDataExchangeRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[10] + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1070,7 +1397,7 @@ func (x *GetDataExchangeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetDataExchangeRequest.ProtoReflect.Descriptor instead. func (*GetDataExchangeRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{10} + return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{12} } func (x *GetDataExchangeRequest) GetName() string { @@ -1102,7 +1429,7 @@ type CreateDataExchangeRequest struct { func (x *CreateDataExchangeRequest) Reset() { *x = CreateDataExchangeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[11] + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1115,7 +1442,7 @@ func (x *CreateDataExchangeRequest) String() string { func (*CreateDataExchangeRequest) ProtoMessage() {} func (x *CreateDataExchangeRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[11] + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1128,7 +1455,7 @@ func (x *CreateDataExchangeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateDataExchangeRequest.ProtoReflect.Descriptor instead. func (*CreateDataExchangeRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{11} + return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{13} } func (x *CreateDataExchangeRequest) GetParent() string { @@ -1169,7 +1496,7 @@ type UpdateDataExchangeRequest struct { func (x *UpdateDataExchangeRequest) Reset() { *x = UpdateDataExchangeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[12] + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1182,7 +1509,7 @@ func (x *UpdateDataExchangeRequest) String() string { func (*UpdateDataExchangeRequest) ProtoMessage() {} func (x *UpdateDataExchangeRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[12] + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1195,7 +1522,7 @@ func (x *UpdateDataExchangeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateDataExchangeRequest.ProtoReflect.Descriptor instead. func (*UpdateDataExchangeRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{12} + return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{14} } func (x *UpdateDataExchangeRequest) GetUpdateMask() *fieldmaskpb.FieldMask { @@ -1218,15 +1545,15 @@ type DeleteDataExchangeRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. The full name of the data exchange resource that you want to delete. - // For example, `projects/myproject/locations/US/dataExchanges/123`. + // Required. The full name of the data exchange resource that you want to + // delete. For example, `projects/myproject/locations/US/dataExchanges/123`. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } func (x *DeleteDataExchangeRequest) Reset() { *x = DeleteDataExchangeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[13] + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1239,7 +1566,7 @@ func (x *DeleteDataExchangeRequest) String() string { func (*DeleteDataExchangeRequest) ProtoMessage() {} func (x *DeleteDataExchangeRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[13] + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1252,7 +1579,7 @@ func (x *DeleteDataExchangeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteDataExchangeRequest.ProtoReflect.Descriptor instead. func (*DeleteDataExchangeRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{13} + return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{15} } func (x *DeleteDataExchangeRequest) GetName() string { @@ -1282,7 +1609,7 @@ type ListListingsRequest struct { func (x *ListListingsRequest) Reset() { *x = ListListingsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[14] + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1295,7 +1622,7 @@ func (x *ListListingsRequest) String() string { func (*ListListingsRequest) ProtoMessage() {} func (x *ListListingsRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[14] + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1308,7 +1635,7 @@ func (x *ListListingsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListListingsRequest.ProtoReflect.Descriptor instead. func (*ListListingsRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{14} + return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{16} } func (x *ListListingsRequest) GetParent() string { @@ -1347,7 +1674,7 @@ type ListListingsResponse struct { func (x *ListListingsResponse) Reset() { *x = ListListingsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[15] + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1360,7 +1687,7 @@ func (x *ListListingsResponse) String() string { func (*ListListingsResponse) ProtoMessage() {} func (x *ListListingsResponse) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[15] + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1373,7 +1700,7 @@ func (x *ListListingsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListListingsResponse.ProtoReflect.Descriptor instead. func (*ListListingsResponse) Descriptor() ([]byte, []int) { - return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{15} + return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{17} } func (x *ListListingsResponse) GetListings() []*Listing { @@ -1404,7 +1731,7 @@ type GetListingRequest struct { func (x *GetListingRequest) Reset() { *x = GetListingRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[16] + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1417,7 +1744,7 @@ func (x *GetListingRequest) String() string { func (*GetListingRequest) ProtoMessage() {} func (x *GetListingRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[16] + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1430,7 +1757,7 @@ func (x *GetListingRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetListingRequest.ProtoReflect.Descriptor instead. func (*GetListingRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{16} + return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{18} } func (x *GetListingRequest) GetName() string { @@ -1462,7 +1789,7 @@ type CreateListingRequest struct { func (x *CreateListingRequest) Reset() { *x = CreateListingRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[17] + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1475,7 +1802,7 @@ func (x *CreateListingRequest) String() string { func (*CreateListingRequest) ProtoMessage() {} func (x *CreateListingRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[17] + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1488,7 +1815,7 @@ func (x *CreateListingRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateListingRequest.ProtoReflect.Descriptor instead. func (*CreateListingRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{17} + return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{19} } func (x *CreateListingRequest) GetParent() string { @@ -1518,9 +1845,9 @@ type UpdateListingRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. Field mask specifies the fields to update in the listing resource. The - // fields specified in the `updateMask` are relative to the resource and are - // not a full request. + // Required. Field mask specifies the fields to update in the listing + // resource. The fields specified in the `updateMask` are relative to the + // resource and are not a full request. UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,1,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` // Required. The listing to update. Listing *Listing `protobuf:"bytes,2,opt,name=listing,proto3" json:"listing,omitempty"` @@ -1529,7 +1856,7 @@ type UpdateListingRequest struct { func (x *UpdateListingRequest) Reset() { *x = UpdateListingRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[18] + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1542,7 +1869,7 @@ func (x *UpdateListingRequest) String() string { func (*UpdateListingRequest) ProtoMessage() {} func (x *UpdateListingRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[18] + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1555,7 +1882,7 @@ func (x *UpdateListingRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateListingRequest.ProtoReflect.Descriptor instead. func (*UpdateListingRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{18} + return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{20} } func (x *UpdateListingRequest) GetUpdateMask() *fieldmaskpb.FieldMask { @@ -1586,7 +1913,7 @@ type DeleteListingRequest struct { func (x *DeleteListingRequest) Reset() { *x = DeleteListingRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[19] + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1599,7 +1926,7 @@ func (x *DeleteListingRequest) String() string { func (*DeleteListingRequest) ProtoMessage() {} func (x *DeleteListingRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[19] + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1612,7 +1939,7 @@ func (x *DeleteListingRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteListingRequest.ProtoReflect.Descriptor instead. func (*DeleteListingRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{19} + return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{21} } func (x *DeleteListingRequest) GetName() string { @@ -1641,7 +1968,7 @@ type SubscribeListingRequest struct { func (x *SubscribeListingRequest) Reset() { *x = SubscribeListingRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[20] + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1654,7 +1981,7 @@ func (x *SubscribeListingRequest) String() string { func (*SubscribeListingRequest) ProtoMessage() {} func (x *SubscribeListingRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[20] + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1667,7 +1994,7 @@ func (x *SubscribeListingRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscribeListingRequest.ProtoReflect.Descriptor instead. func (*SubscribeListingRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{20} + return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{22} } func (m *SubscribeListingRequest) GetDestination() isSubscribeListingRequest_Destination { @@ -1707,12 +2034,15 @@ type SubscribeListingResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Subscription object created from this subscribe action. + Subscription *Subscription `protobuf:"bytes,1,opt,name=subscription,proto3" json:"subscription,omitempty"` } func (x *SubscribeListingResponse) Reset() { *x = SubscribeListingResponse{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[21] + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1725,7 +2055,7 @@ func (x *SubscribeListingResponse) String() string { func (*SubscribeListingResponse) ProtoMessage() {} func (x *SubscribeListingResponse) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[21] + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1738,43 +2068,122 @@ func (x *SubscribeListingResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscribeListingResponse.ProtoReflect.Descriptor instead. func (*SubscribeListingResponse) Descriptor() ([]byte, []int) { - return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{21} + return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{23} } -// A reference to a shared dataset. It is an existing BigQuery dataset with a -// collection of objects such as tables and views that you want to share -// with subscribers. -// When subscriber's subscribe to a listing, Analytics Hub creates a linked -// dataset in -// the subscriber's project. A Linked dataset is an opaque, read-only BigQuery -// dataset that serves as a _symbolic link_ to a shared dataset. -type Listing_BigQueryDatasetSource struct { +func (x *SubscribeListingResponse) GetSubscription() *Subscription { + if x != nil { + return x.Subscription + } + return nil +} + +// Message for subscribing to a Data Exchange. +type SubscribeDataExchangeRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Resource name of the dataset source for this listing. - // e.g. `projects/myproject/datasets/123` - Dataset string `protobuf:"bytes,1,opt,name=dataset,proto3" json:"dataset,omitempty"` + // Required. Resource name of the Data Exchange. + // e.g. `projects/publisherproject/locations/US/dataExchanges/123` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Required. The parent resource path of the Subscription. + // e.g. `projects/subscriberproject/locations/US` + Destination string `protobuf:"bytes,2,opt,name=destination,proto3" json:"destination,omitempty"` + // Required. Name of the subscription to create. + // e.g. `subscription1` + Subscription string `protobuf:"bytes,4,opt,name=subscription,proto3" json:"subscription,omitempty"` + // Email of the subscriber. + SubscriberContact string `protobuf:"bytes,3,opt,name=subscriber_contact,json=subscriberContact,proto3" json:"subscriber_contact,omitempty"` +} + +func (x *SubscribeDataExchangeRequest) Reset() { + *x = SubscribeDataExchangeRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (x *Listing_BigQueryDatasetSource) Reset() { - *x = Listing_BigQueryDatasetSource{} +func (x *SubscribeDataExchangeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SubscribeDataExchangeRequest) ProtoMessage() {} + +func (x *SubscribeDataExchangeRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[24] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SubscribeDataExchangeRequest.ProtoReflect.Descriptor instead. +func (*SubscribeDataExchangeRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{24} +} + +func (x *SubscribeDataExchangeRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *SubscribeDataExchangeRequest) GetDestination() string { + if x != nil { + return x.Destination + } + return "" +} + +func (x *SubscribeDataExchangeRequest) GetSubscription() string { + if x != nil { + return x.Subscription + } + return "" +} + +func (x *SubscribeDataExchangeRequest) GetSubscriberContact() string { + if x != nil { + return x.SubscriberContact + } + return "" +} + +// Message for response when you subscribe to a Data Exchange. +type SubscribeDataExchangeResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Subscription object created from this subscribe action. + Subscription *Subscription `protobuf:"bytes,1,opt,name=subscription,proto3" json:"subscription,omitempty"` +} + +func (x *SubscribeDataExchangeResponse) Reset() { + *x = SubscribeDataExchangeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[23] + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Listing_BigQueryDatasetSource) String() string { +func (x *SubscribeDataExchangeResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Listing_BigQueryDatasetSource) ProtoMessage() {} +func (*SubscribeDataExchangeResponse) ProtoMessage() {} -func (x *Listing_BigQueryDatasetSource) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[23] +func (x *SubscribeDataExchangeResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1785,379 +2194,1577 @@ func (x *Listing_BigQueryDatasetSource) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Listing_BigQueryDatasetSource.ProtoReflect.Descriptor instead. -func (*Listing_BigQueryDatasetSource) Descriptor() ([]byte, []int) { - return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{5, 0} +// Deprecated: Use SubscribeDataExchangeResponse.ProtoReflect.Descriptor instead. +func (*SubscribeDataExchangeResponse) Descriptor() ([]byte, []int) { + return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{25} } -func (x *Listing_BigQueryDatasetSource) GetDataset() string { +func (x *SubscribeDataExchangeResponse) GetSubscription() *Subscription { if x != nil { - return x.Dataset + return x.Subscription + } + return nil +} + +// Message for refreshing a subscription. +type RefreshSubscriptionRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Resource name of the Subscription to refresh. + // e.g. `projects/subscriberproject/locations/US/subscriptions/123` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *RefreshSubscriptionRequest) Reset() { + *x = RefreshSubscriptionRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RefreshSubscriptionRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RefreshSubscriptionRequest) ProtoMessage() {} + +func (x *RefreshSubscriptionRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[26] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RefreshSubscriptionRequest.ProtoReflect.Descriptor instead. +func (*RefreshSubscriptionRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{26} +} + +func (x *RefreshSubscriptionRequest) GetName() string { + if x != nil { + return x.Name } return "" } -var File_google_cloud_bigquery_analyticshub_v1_analyticshub_proto protoreflect.FileDescriptor +// Message for response when you refresh a subscription. +type RefreshSubscriptionResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -var file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDesc = []byte{ - 0x0a, 0x38, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x62, - 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, - 0x73, 0x68, 0x75, 0x62, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, - 0x73, 0x68, 0x75, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x25, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, - 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 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, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x69, 0x61, 0x6d, - 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x61, 0x6d, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x69, 0x61, 0x6d, - 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 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, 0x1a, - 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, - 0x88, 0x03, 0x0a, 0x0c, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 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, 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, 0x02, 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, 0x2c, 0x0a, 0x0f, 0x70, 0x72, 0x69, 0x6d, - 0x61, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x43, - 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x29, 0x0a, 0x0d, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, - 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, - 0x41, 0x01, 0x52, 0x0d, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x28, 0x0a, 0x0d, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0c, 0x6c, - 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x69, - 0x63, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x04, - 0x69, 0x63, 0x6f, 0x6e, 0x3a, 0x74, 0xea, 0x41, 0x71, 0x0a, 0x28, 0x61, 0x6e, 0x61, 0x6c, 0x79, - 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, - 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x12, 0x45, 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, 0x64, 0x61, 0x74, - 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, - 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x7d, 0x22, 0x55, 0x0a, 0x0c, 0x44, 0x61, - 0x74, 0x61, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x0f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x63, - 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, - 0x01, 0x52, 0x0e, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, - 0x74, 0x22, 0x52, 0x0a, 0x09, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x12, 0x17, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, - 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x0f, 0x70, 0x72, 0x69, 0x6d, 0x61, - 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x43, 0x6f, - 0x6e, 0x74, 0x61, 0x63, 0x74, 0x22, 0x65, 0x0a, 0x1b, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, - 0x65, 0x6e, 0x63, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x64, - 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, - 0x02, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x22, 0xd7, 0x03, 0x0a, - 0x12, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, - 0x73, 0x65, 0x74, 0x12, 0x74, 0x0a, 0x11, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x5f, 0x72, - 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, - 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, - 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, - 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x10, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, - 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x46, 0x0a, 0x0d, 0x66, 0x72, 0x69, - 0x65, 0x6e, 0x64, 0x6c, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x03, - 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x6c, 0x79, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x43, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x62, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, - 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x44, - 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, - 0x74, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0xe0, - 0x41, 0x01, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1f, 0x0a, 0x08, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, - 0x02, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, - 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xb8, 0x0c, 0x0a, 0x07, 0x4c, 0x69, 0x73, 0x74, 0x69, - 0x6e, 0x67, 0x12, 0x76, 0x0a, 0x10, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x64, - 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, - 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, - 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x42, 0x69, 0x67, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x53, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, 0x52, 0x0f, 0x62, 0x69, 0x67, 0x71, 0x75, - 0x65, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 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, 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, 0x02, 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, 0x2c, 0x0a, 0x0f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x63, 0x6f, - 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, - 0x52, 0x0e, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, - 0x12, 0x29, 0x0a, 0x0d, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x64, 0x6f, - 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4f, 0x0a, 0x05, 0x73, - 0x74, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, - 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, - 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x17, 0x0a, 0x04, - 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, - 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x5d, 0x0a, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x72, - 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, - 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, - 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x12, 0x5c, 0x0a, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, - 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, - 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 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, 0x53, 0x0a, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, - 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, - 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x75, - 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x41, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x1a, 0x57, 0x0a, 0x15, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, - 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x3e, 0x0a, 0x07, - 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x24, 0xfa, - 0x41, 0x21, 0x0a, 0x1f, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, - 0x73, 0x65, 0x74, 0x52, 0x07, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x22, 0x2a, 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, 0x0a, 0x0a, 0x06, - 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x01, 0x22, 0xb7, 0x04, 0x0a, 0x08, 0x43, 0x61, 0x74, - 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, - 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x13, 0x0a, 0x0f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x4f, 0x54, 0x48, 0x45, - 0x52, 0x53, 0x10, 0x01, 0x12, 0x26, 0x0a, 0x22, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, - 0x5f, 0x41, 0x44, 0x56, 0x45, 0x52, 0x54, 0x49, 0x53, 0x49, 0x4e, 0x47, 0x5f, 0x41, 0x4e, 0x44, - 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, - 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x52, 0x43, - 0x45, 0x10, 0x03, 0x12, 0x24, 0x0a, 0x20, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, - 0x43, 0x4c, 0x49, 0x4d, 0x41, 0x54, 0x45, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x45, 0x4e, 0x56, 0x49, - 0x52, 0x4f, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x04, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x41, 0x54, - 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x44, 0x45, 0x4d, 0x4f, 0x47, 0x52, 0x41, 0x50, 0x48, 0x49, - 0x43, 0x53, 0x10, 0x05, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, - 0x5f, 0x45, 0x43, 0x4f, 0x4e, 0x4f, 0x4d, 0x49, 0x43, 0x53, 0x10, 0x06, 0x12, 0x16, 0x0a, 0x12, - 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x45, 0x44, 0x55, 0x43, 0x41, 0x54, 0x49, - 0x4f, 0x4e, 0x10, 0x07, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, - 0x5f, 0x45, 0x4e, 0x45, 0x52, 0x47, 0x59, 0x10, 0x08, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x41, 0x54, - 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x46, 0x49, 0x4e, 0x41, 0x4e, 0x43, 0x49, 0x41, 0x4c, 0x10, - 0x09, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x47, 0x41, - 0x4d, 0x49, 0x4e, 0x47, 0x10, 0x0a, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, - 0x52, 0x59, 0x5f, 0x47, 0x45, 0x4f, 0x53, 0x50, 0x41, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x0b, 0x12, - 0x28, 0x0a, 0x24, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x48, 0x45, 0x41, 0x4c, - 0x54, 0x48, 0x43, 0x41, 0x52, 0x45, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x4c, 0x49, 0x46, 0x45, 0x5f, - 0x53, 0x43, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x0c, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x41, 0x54, - 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x10, 0x0d, 0x12, 0x1a, 0x0a, - 0x16, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, - 0x5f, 0x53, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x10, 0x0e, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x41, 0x54, - 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x52, 0x45, 0x54, 0x41, 0x49, 0x4c, 0x10, 0x0f, 0x12, 0x13, - 0x0a, 0x0f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x53, 0x50, 0x4f, 0x52, 0x54, - 0x53, 0x10, 0x10, 0x12, 0x21, 0x0a, 0x1d, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, - 0x53, 0x43, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x52, 0x45, 0x53, 0x45, - 0x41, 0x52, 0x43, 0x48, 0x10, 0x11, 0x12, 0x29, 0x0a, 0x25, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, - 0x52, 0x59, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x4c, 0x4f, 0x47, 0x49, 0x53, 0x54, 0x49, 0x43, 0x53, 0x10, - 0x12, 0x12, 0x1f, 0x0a, 0x1b, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x54, 0x52, - 0x41, 0x56, 0x45, 0x4c, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x54, 0x4f, 0x55, 0x52, 0x49, 0x53, 0x4d, - 0x10, 0x13, 0x3a, 0x82, 0x01, 0xea, 0x41, 0x7f, 0x0a, 0x23, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, - 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, - 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x58, 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, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x7d, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x7b, 0x6c, - 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x7d, 0x42, 0x08, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x22, 0x99, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, - 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, - 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, - 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, - 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x9f, 0x01, - 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x0e, 0x64, - 0x61, 0x74, 0x61, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, - 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, - 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 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, - 0x82, 0x01, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x44, 0x61, 0x74, 0x61, 0x45, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x27, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, - 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, - 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xa2, 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, - 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, - 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, - 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x52, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 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, 0x5e, 0x0a, 0x16, 0x47, 0x65, 0x74, - 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x30, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2a, 0x0a, 0x28, 0x61, 0x6e, 0x61, 0x6c, 0x79, - 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, - 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xec, 0x01, 0x0a, 0x19, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, - 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x2d, 0x0a, 0x10, 0x64, 0x61, - 0x74, 0x61, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x45, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x64, 0x12, 0x5d, 0x0a, 0x0d, 0x64, 0x61, 0x74, - 0x61, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, - 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, 0x64, 0x61, 0x74, 0x61, - 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0xbc, 0x01, 0x0a, 0x19, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 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, 0x02, 0x52, 0x0a, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x5d, 0x0a, 0x0d, 0x64, 0x61, 0x74, 0x61, - 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, - 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, - 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x45, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x61, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x30, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2a, 0x0a, 0x28, 0x61, 0x6e, 0x61, 0x6c, - 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, - 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x9b, 0x01, 0x0a, 0x13, 0x4c, - 0x69, 0x73, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x48, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x30, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2a, 0x0a, 0x28, 0x61, 0x6e, 0x61, 0x6c, - 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, - 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, - 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, - 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, - 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x8a, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, - 0x74, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x4a, 0x0a, 0x08, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, - 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x69, 0x6e, 0x67, 0x52, 0x08, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 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, 0x54, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4c, 0x69, 0x73, 0x74, - 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x25, - 0x0a, 0x23, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x69, - 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xd3, 0x01, 0x0a, 0x14, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x48, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x30, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2a, 0x0a, 0x28, 0x61, 0x6e, - 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x22, - 0x0a, 0x0a, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, - 0x49, 0x64, 0x12, 0x4d, 0x0a, 0x07, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, - 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x69, 0x6e, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, - 0x67, 0x22, 0xa7, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, - 0x69, 0x6e, 0x67, 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, 0x02, - 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x4d, 0x0a, 0x07, - 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, - 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, - 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x42, 0x03, 0xe0, - 0x41, 0x02, 0x52, 0x07, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x22, 0x57, 0x0a, 0x14, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x2b, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x25, 0x0a, 0x23, 0x61, 0x6e, 0x61, 0x6c, 0x79, - 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, - 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xd7, 0x01, 0x0a, 0x17, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, - 0x62, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x6c, 0x0a, 0x13, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, - 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, - 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x48, 0x00, 0x52, 0x12, 0x64, 0x65, 0x73, 0x74, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x12, 0x3f, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0xe0, 0x41, - 0x02, 0xfa, 0x41, 0x25, 0x0a, 0x23, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, - 0x75, 0x62, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x42, - 0x0d, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x1a, - 0x0a, 0x18, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x69, - 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xde, 0x1b, 0x0a, 0x13, 0x41, - 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x48, 0x75, 0x62, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x12, 0xda, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x45, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, - 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, - 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, - 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x42, 0xda, 0x41, 0x06, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x12, 0x31, 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, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, - 0xf4, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x44, 0x61, 0x74, 0x61, 0x45, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + // The refreshed subscription resource. + Subscription *Subscription `protobuf:"bytes,1,opt,name=subscription,proto3" json:"subscription,omitempty"` +} + +func (x *RefreshSubscriptionResponse) Reset() { + *x = RefreshSubscriptionResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RefreshSubscriptionResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RefreshSubscriptionResponse) ProtoMessage() {} + +func (x *RefreshSubscriptionResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[27] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RefreshSubscriptionResponse.ProtoReflect.Descriptor instead. +func (*RefreshSubscriptionResponse) Descriptor() ([]byte, []int) { + return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{27} +} + +func (x *RefreshSubscriptionResponse) GetSubscription() *Subscription { + if x != nil { + return x.Subscription + } + return nil +} + +// Message for getting a subscription. +type GetSubscriptionRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Resource name of the subscription. + // e.g. projects/123/locations/US/subscriptions/456 + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *GetSubscriptionRequest) Reset() { + *x = GetSubscriptionRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetSubscriptionRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetSubscriptionRequest) ProtoMessage() {} + +func (x *GetSubscriptionRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[28] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetSubscriptionRequest.ProtoReflect.Descriptor instead. +func (*GetSubscriptionRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{28} +} + +func (x *GetSubscriptionRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// Message for listing subscriptions. +type ListSubscriptionsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The parent resource path of the subscription. + // e.g. projects/myproject/locations/US + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // The filter expression may be used to filter by Data Exchange or Listing. + Filter string `protobuf:"bytes,2,opt,name=filter,proto3" json:"filter,omitempty"` + // The maximum number of results to return in a single response page. + PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + // Page token, returned by a previous call. + PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` +} + +func (x *ListSubscriptionsRequest) Reset() { + *x = ListSubscriptionsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListSubscriptionsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListSubscriptionsRequest) ProtoMessage() {} + +func (x *ListSubscriptionsRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[29] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListSubscriptionsRequest.ProtoReflect.Descriptor instead. +func (*ListSubscriptionsRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{29} +} + +func (x *ListSubscriptionsRequest) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +func (x *ListSubscriptionsRequest) GetFilter() string { + if x != nil { + return x.Filter + } + return "" +} + +func (x *ListSubscriptionsRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *ListSubscriptionsRequest) GetPageToken() string { + if x != nil { + return x.PageToken + } + return "" +} + +// Message for response to the listing of subscriptions. +type ListSubscriptionsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The list of subscriptions. + Subscriptions []*Subscription `protobuf:"bytes,1,rep,name=subscriptions,proto3" json:"subscriptions,omitempty"` + // Next page token. + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` +} + +func (x *ListSubscriptionsResponse) Reset() { + *x = ListSubscriptionsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListSubscriptionsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListSubscriptionsResponse) ProtoMessage() {} + +func (x *ListSubscriptionsResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[30] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListSubscriptionsResponse.ProtoReflect.Descriptor instead. +func (*ListSubscriptionsResponse) Descriptor() ([]byte, []int) { + return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{30} +} + +func (x *ListSubscriptionsResponse) GetSubscriptions() []*Subscription { + if x != nil { + return x.Subscriptions + } + return nil +} + +func (x *ListSubscriptionsResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken + } + return "" +} + +// Message for listing subscriptions of a shared resource. +type ListSharedResourceSubscriptionsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Resource name of the requested target. This resource may be + // either a Listing or a DataExchange. e.g. + // projects/123/locations/US/dataExchanges/456 OR e.g. + // projects/123/locations/US/dataExchanges/456/listings/789 + Resource string `protobuf:"bytes,1,opt,name=resource,proto3" json:"resource,omitempty"` + // If selected, includes deleted subscriptions in the response + // (up to 63 days after deletion). + IncludeDeletedSubscriptions bool `protobuf:"varint,2,opt,name=include_deleted_subscriptions,json=includeDeletedSubscriptions,proto3" json:"include_deleted_subscriptions,omitempty"` + // The maximum number of results to return in a single response page. + PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + // Page token, returned by a previous call. + PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` +} + +func (x *ListSharedResourceSubscriptionsRequest) Reset() { + *x = ListSharedResourceSubscriptionsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListSharedResourceSubscriptionsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListSharedResourceSubscriptionsRequest) ProtoMessage() {} + +func (x *ListSharedResourceSubscriptionsRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[31] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListSharedResourceSubscriptionsRequest.ProtoReflect.Descriptor instead. +func (*ListSharedResourceSubscriptionsRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{31} +} + +func (x *ListSharedResourceSubscriptionsRequest) GetResource() string { + if x != nil { + return x.Resource + } + return "" +} + +func (x *ListSharedResourceSubscriptionsRequest) GetIncludeDeletedSubscriptions() bool { + if x != nil { + return x.IncludeDeletedSubscriptions + } + return false +} + +func (x *ListSharedResourceSubscriptionsRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *ListSharedResourceSubscriptionsRequest) GetPageToken() string { + if x != nil { + return x.PageToken + } + return "" +} + +// Message for response to the listing of shared resource subscriptions. +type ListSharedResourceSubscriptionsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The list of subscriptions. + SharedResourceSubscriptions []*Subscription `protobuf:"bytes,1,rep,name=shared_resource_subscriptions,json=sharedResourceSubscriptions,proto3" json:"shared_resource_subscriptions,omitempty"` + // Next page token. + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` +} + +func (x *ListSharedResourceSubscriptionsResponse) Reset() { + *x = ListSharedResourceSubscriptionsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListSharedResourceSubscriptionsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListSharedResourceSubscriptionsResponse) ProtoMessage() {} + +func (x *ListSharedResourceSubscriptionsResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[32] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListSharedResourceSubscriptionsResponse.ProtoReflect.Descriptor instead. +func (*ListSharedResourceSubscriptionsResponse) Descriptor() ([]byte, []int) { + return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{32} +} + +func (x *ListSharedResourceSubscriptionsResponse) GetSharedResourceSubscriptions() []*Subscription { + if x != nil { + return x.SharedResourceSubscriptions + } + return nil +} + +func (x *ListSharedResourceSubscriptionsResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken + } + return "" +} + +// Message for revoking a subscription. +type RevokeSubscriptionRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Resource name of the subscription to revoke. + // e.g. projects/123/locations/US/subscriptions/456 + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *RevokeSubscriptionRequest) Reset() { + *x = RevokeSubscriptionRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RevokeSubscriptionRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RevokeSubscriptionRequest) ProtoMessage() {} + +func (x *RevokeSubscriptionRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[33] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RevokeSubscriptionRequest.ProtoReflect.Descriptor instead. +func (*RevokeSubscriptionRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{33} +} + +func (x *RevokeSubscriptionRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// Message for response when you revoke a subscription. +type RevokeSubscriptionResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *RevokeSubscriptionResponse) Reset() { + *x = RevokeSubscriptionResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RevokeSubscriptionResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RevokeSubscriptionResponse) ProtoMessage() {} + +func (x *RevokeSubscriptionResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[34] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RevokeSubscriptionResponse.ProtoReflect.Descriptor instead. +func (*RevokeSubscriptionResponse) Descriptor() ([]byte, []int) { + return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{34} +} + +// Message for deleting a subscription. +type DeleteSubscriptionRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Resource name of the subscription to delete. + // e.g. projects/123/locations/US/subscriptions/456 + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *DeleteSubscriptionRequest) Reset() { + *x = DeleteSubscriptionRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteSubscriptionRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteSubscriptionRequest) ProtoMessage() {} + +func (x *DeleteSubscriptionRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[35] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteSubscriptionRequest.ProtoReflect.Descriptor instead. +func (*DeleteSubscriptionRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{35} +} + +func (x *DeleteSubscriptionRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// Represents the metadata of a long-running operation in Analytics Hub. +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. Server-defined resource path for the target of the operation. + Target string `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` + // Output only. Name of the verb executed by the operation. + Verb string `protobuf:"bytes,4,opt,name=verb,proto3" json:"verb,omitempty"` + // Output only. 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 cancellation + // of the operation. Operations that have successfully been cancelled + // have [Operation.error][] value with a + // [google.rpc.Status.code][google.rpc.Status.code] of 1, corresponding to + // `Code.CANCELLED`. + RequestedCancellation bool `protobuf:"varint,6,opt,name=requested_cancellation,json=requestedCancellation,proto3" json:"requested_cancellation,omitempty"` + // Output only. API version 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{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[36] + 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_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[36] + if protoimpl.UnsafeEnabled && 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_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{36} +} + +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 "" +} + +// Default Analytics Hub data exchange, used for secured data sharing. +type SharingEnvironmentConfig_DefaultExchangeConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *SharingEnvironmentConfig_DefaultExchangeConfig) Reset() { + *x = SharingEnvironmentConfig_DefaultExchangeConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SharingEnvironmentConfig_DefaultExchangeConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SharingEnvironmentConfig_DefaultExchangeConfig) ProtoMessage() {} + +func (x *SharingEnvironmentConfig_DefaultExchangeConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[37] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SharingEnvironmentConfig_DefaultExchangeConfig.ProtoReflect.Descriptor instead. +func (*SharingEnvironmentConfig_DefaultExchangeConfig) Descriptor() ([]byte, []int) { + return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{1, 0} +} + +// Data Clean Room (DCR), used for privacy-safe and secured data sharing. +type SharingEnvironmentConfig_DcrExchangeConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *SharingEnvironmentConfig_DcrExchangeConfig) Reset() { + *x = SharingEnvironmentConfig_DcrExchangeConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SharingEnvironmentConfig_DcrExchangeConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SharingEnvironmentConfig_DcrExchangeConfig) ProtoMessage() {} + +func (x *SharingEnvironmentConfig_DcrExchangeConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[38] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SharingEnvironmentConfig_DcrExchangeConfig.ProtoReflect.Descriptor instead. +func (*SharingEnvironmentConfig_DcrExchangeConfig) Descriptor() ([]byte, []int) { + return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{1, 1} +} + +// A reference to a shared dataset. It is an existing BigQuery dataset with a +// collection of objects such as tables and views that you want to share +// with subscribers. +// When subscriber's subscribe to a listing, Analytics Hub creates a linked +// dataset in +// the subscriber's project. A Linked dataset is an opaque, read-only BigQuery +// dataset that serves as a _symbolic link_ to a shared dataset. +type Listing_BigQueryDatasetSource struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Resource name of the dataset source for this listing. + // e.g. `projects/myproject/datasets/123` + Dataset string `protobuf:"bytes,1,opt,name=dataset,proto3" json:"dataset,omitempty"` +} + +func (x *Listing_BigQueryDatasetSource) Reset() { + *x = Listing_BigQueryDatasetSource{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Listing_BigQueryDatasetSource) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Listing_BigQueryDatasetSource) ProtoMessage() {} + +func (x *Listing_BigQueryDatasetSource) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[40] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Listing_BigQueryDatasetSource.ProtoReflect.Descriptor instead. +func (*Listing_BigQueryDatasetSource) Descriptor() ([]byte, []int) { + return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{6, 0} +} + +func (x *Listing_BigQueryDatasetSource) GetDataset() string { + if x != nil { + return x.Dataset + } + return "" +} + +// Restricted export config, used to configure restricted export on linked +// dataset. +type Listing_RestrictedExportConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Optional. If true, enable restricted export. + Enabled bool `protobuf:"varint,3,opt,name=enabled,proto3" json:"enabled,omitempty"` + // Output only. If true, restrict direct table access(read + // api/tabledata.list) on linked table. + RestrictDirectTableAccess bool `protobuf:"varint,1,opt,name=restrict_direct_table_access,json=restrictDirectTableAccess,proto3" json:"restrict_direct_table_access,omitempty"` + // Optional. If true, restrict export of query result derived from + // restricted linked dataset table. + RestrictQueryResult bool `protobuf:"varint,2,opt,name=restrict_query_result,json=restrictQueryResult,proto3" json:"restrict_query_result,omitempty"` +} + +func (x *Listing_RestrictedExportConfig) Reset() { + *x = Listing_RestrictedExportConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Listing_RestrictedExportConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Listing_RestrictedExportConfig) ProtoMessage() {} + +func (x *Listing_RestrictedExportConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[41] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Listing_RestrictedExportConfig.ProtoReflect.Descriptor instead. +func (*Listing_RestrictedExportConfig) Descriptor() ([]byte, []int) { + return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{6, 1} +} + +func (x *Listing_RestrictedExportConfig) GetEnabled() bool { + if x != nil { + return x.Enabled + } + return false +} + +func (x *Listing_RestrictedExportConfig) GetRestrictDirectTableAccess() bool { + if x != nil { + return x.RestrictDirectTableAccess + } + return false +} + +func (x *Listing_RestrictedExportConfig) GetRestrictQueryResult() bool { + if x != nil { + return x.RestrictQueryResult + } + return false +} + +// Reference to a linked resource tracked by this Subscription. +type Subscription_LinkedResource struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Reference: + // *Subscription_LinkedResource_LinkedDataset + Reference isSubscription_LinkedResource_Reference `protobuf_oneof:"reference"` +} + +func (x *Subscription_LinkedResource) Reset() { + *x = Subscription_LinkedResource{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Subscription_LinkedResource) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Subscription_LinkedResource) ProtoMessage() {} + +func (x *Subscription_LinkedResource) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[42] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Subscription_LinkedResource.ProtoReflect.Descriptor instead. +func (*Subscription_LinkedResource) Descriptor() ([]byte, []int) { + return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP(), []int{7, 0} +} + +func (m *Subscription_LinkedResource) GetReference() isSubscription_LinkedResource_Reference { + if m != nil { + return m.Reference + } + return nil +} + +func (x *Subscription_LinkedResource) GetLinkedDataset() string { + if x, ok := x.GetReference().(*Subscription_LinkedResource_LinkedDataset); ok { + return x.LinkedDataset + } + return "" +} + +type isSubscription_LinkedResource_Reference interface { + isSubscription_LinkedResource_Reference() +} + +type Subscription_LinkedResource_LinkedDataset struct { + // Output only. Name of the linked dataset, e.g. + // projects/subscriberproject/datasets/linked_dataset + LinkedDataset string `protobuf:"bytes,1,opt,name=linked_dataset,json=linkedDataset,proto3,oneof"` +} + +func (*Subscription_LinkedResource_LinkedDataset) isSubscription_LinkedResource_Reference() {} + +var File_google_cloud_bigquery_analyticshub_v1_analyticshub_proto protoreflect.FileDescriptor + +var file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDesc = []byte{ + 0x0a, 0x38, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x62, + 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, + 0x73, 0x68, 0x75, 0x62, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, + 0x73, 0x68, 0x75, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x25, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 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, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x69, 0x61, 0x6d, + 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x61, 0x6d, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x69, 0x61, 0x6d, + 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 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, 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, 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, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8d, 0x04, 0x0a, 0x0c, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 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, + 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, 0x02, 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, 0x2c, + 0x0a, 0x0f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x70, 0x72, + 0x69, 0x6d, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x29, 0x0a, 0x0d, + 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, + 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0d, 0x6c, 0x69, 0x73, 0x74, 0x69, + 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, + 0xe0, 0x41, 0x03, 0x52, 0x0c, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x17, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x82, 0x01, 0x0a, 0x1a, 0x73, + 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, + 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, + 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, + 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x45, + 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x18, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x45, 0x6e, + 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x3a, + 0x74, 0xea, 0x41, 0x71, 0x0a, 0x28, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, + 0x75, 0x62, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x45, + 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, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x7d, 0x22, 0xef, 0x02, 0x0a, 0x18, 0x53, 0x68, 0x61, 0x72, 0x69, 0x6e, + 0x67, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x8f, 0x01, 0x0a, 0x17, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x65, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x55, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, + 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x68, 0x61, + 0x72, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x45, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x15, 0x64, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x83, 0x01, 0x0a, 0x13, 0x64, 0x63, 0x72, 0x5f, 0x65, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x51, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, + 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x69, + 0x6e, 0x67, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x44, 0x63, 0x72, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x11, 0x64, 0x63, 0x72, 0x45, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x17, 0x0a, 0x15, 0x44, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x1a, 0x13, 0x0a, 0x11, 0x44, 0x63, 0x72, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x0d, 0x0a, 0x0b, 0x65, 0x6e, 0x76, 0x69, + 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x55, 0x0a, 0x0c, 0x44, 0x61, 0x74, 0x61, 0x50, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x2c, 0x0a, 0x0f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, + 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x22, 0x52, + 0x0a, 0x09, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x0f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x0e, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x61, + 0x63, 0x74, 0x22, 0x65, 0x0a, 0x1b, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x64, 0x61, 0x74, 0x61, + 0x73, 0x65, 0x74, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x22, 0xd7, 0x03, 0x0a, 0x12, 0x44, 0x65, + 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, + 0x12, 0x74, 0x0a, 0x11, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, + 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, + 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, + 0x03, 0xe0, 0x41, 0x02, 0x52, 0x10, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x52, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x46, 0x0a, 0x0d, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, + 0x6c, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, + 0x52, 0x0c, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x6c, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x43, + 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x62, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, + 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x74, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x2e, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, + 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1f, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x22, 0xf8, 0x0e, 0x0a, 0x07, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x12, + 0x76, 0x0a, 0x10, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x64, 0x61, 0x74, 0x61, + 0x73, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, + 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, + 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, 0x52, 0x0f, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 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, 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, 0x02, 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, + 0x2c, 0x0a, 0x0f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, + 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x70, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x29, 0x0a, + 0x0d, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x64, 0x6f, 0x63, 0x75, 0x6d, + 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4f, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, + 0x41, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x69, 0x63, 0x6f, + 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x04, 0x69, 0x63, + 0x6f, 0x6e, 0x12, 0x5d, 0x0a, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, + 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x12, 0x5c, 0x0a, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18, + 0x0a, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, + 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 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, + 0x53, 0x0a, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, + 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, + 0x73, 0x68, 0x65, 0x72, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, + 0x73, 0x68, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, + 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x12, 0x84, 0x01, 0x0a, 0x18, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, 0x5f, + 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, + 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x69, 0x6e, 0x67, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, 0x45, 0x78, + 0x70, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, + 0x16, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, 0x45, 0x78, 0x70, 0x6f, 0x72, + 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x57, 0x0a, 0x15, 0x42, 0x69, 0x67, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x12, 0x3e, 0x0a, 0x07, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x24, 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x52, 0x07, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, + 0x1a, 0xb6, 0x01, 0x0a, 0x16, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, 0x45, + 0x78, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1d, 0x0a, 0x07, 0x65, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x44, 0x0a, 0x1c, 0x72, 0x65, + 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, + 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x19, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x44, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x12, 0x37, 0x0a, 0x15, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x13, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x2a, 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, 0x0a, 0x0a, 0x06, 0x41, 0x43, 0x54, + 0x49, 0x56, 0x45, 0x10, 0x01, 0x22, 0xb7, 0x04, 0x0a, 0x08, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, + 0x72, 0x79, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, + 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x53, 0x10, + 0x01, 0x12, 0x26, 0x0a, 0x22, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x41, 0x44, + 0x56, 0x45, 0x52, 0x54, 0x49, 0x53, 0x49, 0x4e, 0x47, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x4d, 0x41, + 0x52, 0x4b, 0x45, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x43, 0x41, 0x54, + 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x45, 0x52, 0x43, 0x45, 0x10, 0x03, + 0x12, 0x24, 0x0a, 0x20, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x43, 0x4c, 0x49, + 0x4d, 0x41, 0x54, 0x45, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x45, 0x4e, 0x56, 0x49, 0x52, 0x4f, 0x4e, + 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x04, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, + 0x52, 0x59, 0x5f, 0x44, 0x45, 0x4d, 0x4f, 0x47, 0x52, 0x41, 0x50, 0x48, 0x49, 0x43, 0x53, 0x10, + 0x05, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x45, 0x43, + 0x4f, 0x4e, 0x4f, 0x4d, 0x49, 0x43, 0x53, 0x10, 0x06, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x41, 0x54, + 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x45, 0x44, 0x55, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, + 0x07, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x45, 0x4e, + 0x45, 0x52, 0x47, 0x59, 0x10, 0x08, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, + 0x52, 0x59, 0x5f, 0x46, 0x49, 0x4e, 0x41, 0x4e, 0x43, 0x49, 0x41, 0x4c, 0x10, 0x09, 0x12, 0x13, + 0x0a, 0x0f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x47, 0x41, 0x4d, 0x49, 0x4e, + 0x47, 0x10, 0x0a, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, + 0x47, 0x45, 0x4f, 0x53, 0x50, 0x41, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x0b, 0x12, 0x28, 0x0a, 0x24, + 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x43, + 0x41, 0x52, 0x45, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x4c, 0x49, 0x46, 0x45, 0x5f, 0x53, 0x43, 0x49, + 0x45, 0x4e, 0x43, 0x45, 0x10, 0x0c, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, + 0x52, 0x59, 0x5f, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x10, 0x0d, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x41, + 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x5f, 0x53, 0x45, + 0x43, 0x54, 0x4f, 0x52, 0x10, 0x0e, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, + 0x52, 0x59, 0x5f, 0x52, 0x45, 0x54, 0x41, 0x49, 0x4c, 0x10, 0x0f, 0x12, 0x13, 0x0a, 0x0f, 0x43, + 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x53, 0x10, 0x10, + 0x12, 0x21, 0x0a, 0x1d, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x53, 0x43, 0x49, + 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x52, 0x45, 0x53, 0x45, 0x41, 0x52, 0x43, + 0x48, 0x10, 0x11, 0x12, 0x29, 0x0a, 0x25, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, + 0x54, 0x52, 0x41, 0x4e, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, + 0x4e, 0x44, 0x5f, 0x4c, 0x4f, 0x47, 0x49, 0x53, 0x54, 0x49, 0x43, 0x53, 0x10, 0x12, 0x12, 0x1f, + 0x0a, 0x1b, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x54, 0x52, 0x41, 0x56, 0x45, + 0x4c, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x54, 0x4f, 0x55, 0x52, 0x49, 0x53, 0x4d, 0x10, 0x13, 0x3a, + 0x82, 0x01, 0xea, 0x41, 0x7f, 0x0a, 0x23, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, + 0x68, 0x75, 0x62, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x58, 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, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x73, 0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x7d, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x7b, 0x6c, 0x69, 0x73, 0x74, + 0x69, 0x6e, 0x67, 0x7d, 0x42, 0x08, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xb0, + 0x08, 0x0a, 0x0c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x1f, 0x0a, 0x07, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x07, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, + 0x12, 0x2a, 0x0a, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x0c, + 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 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, 0x44, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 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, 0x0c, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x49, 0x0a, 0x10, 0x6c, + 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 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, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x69, + 0x66, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x3f, 0x0a, 0x19, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x17, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, + 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x54, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, + 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, + 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x7c, 0x0a, 0x12, 0x6c, + 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x5f, 0x6d, 0x61, + 0x70, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, + 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, + 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x6e, + 0x6b, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x10, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x44, + 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x4d, 0x61, 0x70, 0x12, 0x32, 0x0a, 0x12, 0x73, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x11, 0x73, 0x75, 0x62, 0x73, + 0x63, 0x72, 0x69, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x1a, 0x4b, 0x0a, + 0x0e, 0x4c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, + 0x2c, 0x0a, 0x0e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x0d, + 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x42, 0x0b, 0x0a, + 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x1a, 0x87, 0x01, 0x0a, 0x15, 0x4c, + 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x4d, 0x61, 0x70, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x58, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, + 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x65, + 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0x55, 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, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x41, 0x43, + 0x54, 0x49, 0x56, 0x45, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, + 0x53, 0x54, 0x41, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x54, 0x41, 0x54, 0x45, + 0x5f, 0x49, 0x4e, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x03, 0x3a, 0x73, 0xea, 0x41, 0x70, + 0x0a, 0x28, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x44, 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, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x7b, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x7d, + 0x42, 0x0f, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x22, 0xa0, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x48, + 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x30, + 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2a, 0x12, 0x28, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, + 0x73, 0x68, 0x75, 0x62, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, + 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, + 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x9f, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, + 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, + 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, + 0x0d, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 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, 0x82, 0x01, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x4f, + 0x72, 0x67, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x02, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, + 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xa2, 0x01, 0x0a, 0x1c, + 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x0e, + 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, + 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, + 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x45, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 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, 0x5e, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x30, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2a, + 0x0a, 0x28, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, + 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x22, 0xf3, 0x01, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x45, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x48, + 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x30, + 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2a, 0x12, 0x28, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, + 0x73, 0x68, 0x75, 0x62, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x2d, 0x0a, 0x10, 0x64, 0x61, 0x74, 0x61, + 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x64, 0x12, 0x5d, 0x0a, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x5f, + 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, + 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, + 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0xbc, 0x01, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 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, 0x02, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x5d, 0x0a, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, + 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x61, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, + 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x44, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x30, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2a, 0x0a, 0x28, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, + 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, + 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x9b, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, + 0x74, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x48, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x30, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2a, 0x0a, 0x28, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, + 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, + 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, + 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, + 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, + 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x8a, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x4c, + 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x4a, 0x0a, 0x08, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, + 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, + 0x67, 0x52, 0x08, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 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, 0x54, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, + 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x25, 0x0a, 0x23, + 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x69, 0x73, 0x74, + 0x69, 0x6e, 0x67, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xd3, 0x01, 0x0a, 0x14, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x48, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x30, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2a, 0x0a, 0x28, 0x61, 0x6e, 0x61, 0x6c, + 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, + 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0a, + 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x49, 0x64, + 0x12, 0x4d, 0x0a, 0x07, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, + 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, + 0x67, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x22, + 0xa7, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, + 0x67, 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, 0x02, 0x52, 0x0a, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x4d, 0x0a, 0x07, 0x6c, 0x69, + 0x73, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, + 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x02, + 0x52, 0x07, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x22, 0x57, 0x0a, 0x14, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x3f, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x2b, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x25, 0x0a, 0x23, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, + 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x22, 0xd7, 0x01, 0x0a, 0x17, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, + 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x6c, + 0x0a, 0x13, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, + 0x74, 0x61, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, + 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, + 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x48, 0x00, 0x52, 0x12, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x12, 0x3f, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0xe0, 0x41, 0x02, 0xfa, + 0x41, 0x25, 0x0a, 0x23, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0d, 0x0a, + 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x73, 0x0a, 0x18, + 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x57, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, + 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, + 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0x89, 0x02, 0x0a, 0x1c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x44, + 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x44, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x30, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2a, 0x0a, 0x28, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, + 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, + 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x4b, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, + 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, + 0x52, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, + 0x0a, 0x12, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x75, 0x62, 0x73, + 0x63, 0x72, 0x69, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x22, 0x78, 0x0a, + 0x1d, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x57, + 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, + 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x62, 0x0a, 0x1a, 0x52, 0x65, 0x66, 0x72, 0x65, + 0x73, 0x68, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x30, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2a, 0x0a, 0x28, 0x61, 0x6e, 0x61, + 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x76, 0x0a, 0x1b, 0x52, + 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x57, 0x0a, 0x0c, 0x73, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, + 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0x5e, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x30, 0xe0, 0x41, 0x02, + 0xfa, 0x41, 0x2a, 0x0a, 0x28, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, + 0x62, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x22, 0xb8, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x48, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x30, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2a, 0x12, 0x28, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, + 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, + 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, + 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x9e, + 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x59, 0x0a, 0x0d, + 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, + 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 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, + 0xcf, 0x01, 0x0a, 0x26, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x08, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xe0, 0x41, + 0x02, 0xfa, 0x41, 0x03, 0x0a, 0x01, 0x2a, 0x52, 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x12, 0x42, 0x0a, 0x1d, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x64, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1b, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, + 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, + 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, + 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x22, 0xca, 0x01, 0x0a, 0x27, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, + 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, + 0x1d, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x5f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, + 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x1b, 0x73, 0x68, 0x61, 0x72, 0x65, + 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 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, 0x61, + 0x0a, 0x19, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x30, 0xe0, 0x41, 0x02, 0xfa, 0x41, + 0x2a, 0x0a, 0x28, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, + 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x22, 0x1c, 0x0a, 0x1a, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x61, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x30, 0xe0, 0x41, 0x02, 0xfa, + 0x41, 0x2a, 0x0a, 0x28, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 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, 0x32, 0xc8, 0x29, 0x0a, 0x13, 0x41, + 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x48, 0x75, 0x62, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x12, 0xda, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x45, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, + 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x42, 0xda, 0x41, 0x06, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x12, 0x31, 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, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, + 0xf4, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x44, 0x61, 0x74, 0x61, 0x45, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, @@ -2307,84 +3914,195 @@ var file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDesc = []by 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, - 0x62, 0x65, 0x12, 0xee, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x12, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0xa2, - 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x9b, 0x01, 0x3a, 0x01, 0x2a, 0x5a, 0x52, 0x3a, 0x01, 0x2a, - 0x22, 0x4d, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x3d, + 0x62, 0x65, 0x12, 0x80, 0x02, 0x0a, 0x15, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, + 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x43, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, + 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x44, 0x61, + 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 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, 0x82, 0x01, 0xca, 0x41, 0x32, 0x0a, 0x1d, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, + 0x65, 0x44, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x11, 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, 0x40, 0x3a, 0x01, 0x2a, 0x22, 0x3b, 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, 0x64, 0x61, 0x74, 0x61, 0x45, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x73, 0x75, 0x62, 0x73, + 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0xf7, 0x01, 0x0a, 0x13, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, + 0x68, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, + 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 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, + 0x7e, 0xca, 0x41, 0x30, 0x0a, 0x1b, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x53, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x11, 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, + 0x3e, 0x3a, 0x01, 0x2a, 0x22, 0x39, 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, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, - 0x2a, 0x7d, 0x3a, 0x67, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, - 0x42, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 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, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x67, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x12, 0xee, 0x01, 0x0a, 0x0c, 0x53, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x12, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, - 0xa2, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x9b, 0x01, 0x3a, 0x01, 0x2a, 0x5a, 0x52, 0x3a, 0x01, - 0x2a, 0x22, 0x4d, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x12, + 0xc7, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, + 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, + 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, + 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x40, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x12, 0x31, 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, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xda, 0x01, 0x0a, 0x11, 0x4c, 0x69, + 0x73, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, + 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, + 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, + 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x42, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x33, 0x12, 0x31, 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, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x2f, 0x2a, 0x7d, 0x3a, 0x73, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x22, 0x42, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x3d, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xf4, 0x02, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x53, + 0x68, 0x61, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4d, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, + 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x4e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, + 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb1, 0x01, 0xda, 0x41, 0x08, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x9f, 0x01, 0x5a, 0x54, + 0x12, 0x52, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 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, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x73, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x12, 0x9a, 0x02, 0x0a, 0x12, 0x54, 0x65, 0x73, 0x74, 0x49, 0x61, 0x6d, - 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x28, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, - 0x49, 0x61, 0x6d, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, - 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x65, 0x72, - 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0xae, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xa7, 0x01, 0x3a, 0x01, 0x2a, 0x5a, 0x58, 0x3a, - 0x01, 0x2a, 0x22, 0x53, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 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, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x74, 0x65, 0x73, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x65, 0x72, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x48, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 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, 0x64, 0x61, - 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x74, - 0x65, 0x73, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x1a, 0x78, 0xca, 0x41, 0x1b, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, - 0x75, 0x62, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, - 0x6d, 0xd2, 0x41, 0x57, 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, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2c, 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, 0xd6, 0x02, 0xea, 0x41, - 0x48, 0x0a, 0x1f, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x73, - 0x65, 0x74, 0x12, 0x25, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, - 0x7b, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x7d, 0x0a, 0x29, 0x63, 0x6f, 0x6d, 0x2e, 0x67, + 0x6e, 0x67, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, + 0x2a, 0x7d, 0x3a, 0x6c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x47, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 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, 0x64, 0x61, 0x74, 0x61, 0x45, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x6c, 0x69, 0x73, 0x74, + 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xe5, 0x01, + 0x0a, 0x12, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, + 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x76, + 0x6f, 0x6b, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, + 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x52, + 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4a, 0xda, 0x41, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x3a, 0x01, 0x2a, 0x22, 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, 0x73, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x72, + 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x12, 0xe4, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, - 0x62, 0x2e, 0x76, 0x31, 0x42, 0x11, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x48, - 0x75, 0x62, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4d, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x62, - 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, - 0x73, 0x68, 0x75, 0x62, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, - 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x70, 0x62, 0x3b, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, - 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x70, 0x62, 0xaa, 0x02, 0x25, 0x47, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x48, 0x75, 0x62, 0x2e, 0x56, 0x31, - 0xca, 0x02, 0x25, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, - 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x5c, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, - 0x63, 0x73, 0x48, 0x75, 0x62, 0x5c, 0x56, 0x31, 0xea, 0x02, 0x29, 0x47, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x42, 0x69, 0x67, 0x71, 0x75, 0x65, - 0x72, 0x79, 0x3a, 0x3a, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x48, 0x75, 0x62, - 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 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, 0x6d, 0xca, + 0x41, 0x2a, 0x0a, 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x11, 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, 0x33, 0x2a, 0x31, 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, 0x73, 0x75, 0x62, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xee, 0x01, 0x0a, + 0x0c, 0x47, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x22, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, + 0x31, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0xa2, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x9b, 0x01, 0x3a, 0x01, 0x2a, 0x5a, 0x52, 0x3a, 0x01, 0x2a, 0x22, 0x4d, 0x2f, 0x76, 0x31, 0x2f, + 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 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, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x2f, 0x2a, + 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x67, 0x65, 0x74, + 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x42, 0x2f, 0x76, 0x31, 0x2f, 0x7b, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 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, + 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x2f, 0x2a, 0x7d, + 0x3a, 0x67, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0xee, 0x01, + 0x0a, 0x0c, 0x53, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x22, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, + 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, + 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0xa2, 0x01, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x9b, 0x01, 0x3a, 0x01, 0x2a, 0x5a, 0x52, 0x3a, 0x01, 0x2a, 0x22, 0x4d, 0x2f, 0x76, 0x31, + 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 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, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x2f, + 0x2a, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x73, 0x65, + 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x42, 0x2f, 0x76, 0x31, 0x2f, + 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 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, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x2f, 0x2a, + 0x7d, 0x3a, 0x73, 0x65, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x9a, + 0x02, 0x0a, 0x12, 0x54, 0x65, 0x73, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, + 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x65, 0x72, + 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, + 0x54, 0x65, 0x73, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xae, 0x01, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0xa7, 0x01, 0x3a, 0x01, 0x2a, 0x5a, 0x58, 0x3a, 0x01, 0x2a, 0x22, 0x53, 0x2f, 0x76, + 0x31, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 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, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, + 0x2f, 0x2a, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x74, + 0x65, 0x73, 0x74, 0x49, 0x61, 0x6d, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x22, 0x48, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 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, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x74, 0x65, 0x73, 0x74, 0x49, 0x61, 0x6d, + 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x78, 0xca, 0x41, 0x1b, + 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0x57, 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, 0x62, 0x69, + 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2c, 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, 0xd6, 0x02, 0xea, 0x41, 0x48, 0x0a, 0x1f, 0x62, 0x69, 0x67, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x12, 0x25, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, + 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, 0x73, + 0x65, 0x74, 0x7d, 0x0a, 0x29, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x61, + 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2e, 0x76, 0x31, 0x42, 0x11, + 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x48, 0x75, 0x62, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x50, 0x01, 0x5a, 0x4d, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, 0x2f, 0x61, + 0x70, 0x69, 0x76, 0x31, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, + 0x62, 0x70, 0x62, 0x3b, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x68, 0x75, 0x62, + 0x70, 0x62, 0xaa, 0x02, 0x25, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, + 0x74, 0x69, 0x63, 0x73, 0x48, 0x75, 0x62, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x25, 0x47, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x5c, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x48, 0x75, 0x62, 0x5c, + 0x56, 0x31, 0xea, 0x02, 0x29, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, + 0x75, 0x64, 0x3a, 0x3a, 0x42, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x3a, 0x3a, 0x41, 0x6e, + 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x48, 0x75, 0x62, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2399,99 +4117,152 @@ func file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescGZIP() return file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDescData } -var file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes = make([]protoimpl.MessageInfo, 24) +var file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_enumTypes = make([]protoimpl.EnumInfo, 3) +var file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes = make([]protoimpl.MessageInfo, 44) var file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_goTypes = []interface{}{ - (Listing_State)(0), // 0: google.cloud.bigquery.analyticshub.v1.Listing.State - (Listing_Category)(0), // 1: google.cloud.bigquery.analyticshub.v1.Listing.Category - (*DataExchange)(nil), // 2: google.cloud.bigquery.analyticshub.v1.DataExchange - (*DataProvider)(nil), // 3: google.cloud.bigquery.analyticshub.v1.DataProvider - (*Publisher)(nil), // 4: google.cloud.bigquery.analyticshub.v1.Publisher - (*DestinationDatasetReference)(nil), // 5: google.cloud.bigquery.analyticshub.v1.DestinationDatasetReference - (*DestinationDataset)(nil), // 6: google.cloud.bigquery.analyticshub.v1.DestinationDataset - (*Listing)(nil), // 7: google.cloud.bigquery.analyticshub.v1.Listing - (*ListDataExchangesRequest)(nil), // 8: google.cloud.bigquery.analyticshub.v1.ListDataExchangesRequest - (*ListDataExchangesResponse)(nil), // 9: google.cloud.bigquery.analyticshub.v1.ListDataExchangesResponse - (*ListOrgDataExchangesRequest)(nil), // 10: google.cloud.bigquery.analyticshub.v1.ListOrgDataExchangesRequest - (*ListOrgDataExchangesResponse)(nil), // 11: google.cloud.bigquery.analyticshub.v1.ListOrgDataExchangesResponse - (*GetDataExchangeRequest)(nil), // 12: google.cloud.bigquery.analyticshub.v1.GetDataExchangeRequest - (*CreateDataExchangeRequest)(nil), // 13: google.cloud.bigquery.analyticshub.v1.CreateDataExchangeRequest - (*UpdateDataExchangeRequest)(nil), // 14: google.cloud.bigquery.analyticshub.v1.UpdateDataExchangeRequest - (*DeleteDataExchangeRequest)(nil), // 15: google.cloud.bigquery.analyticshub.v1.DeleteDataExchangeRequest - (*ListListingsRequest)(nil), // 16: google.cloud.bigquery.analyticshub.v1.ListListingsRequest - (*ListListingsResponse)(nil), // 17: google.cloud.bigquery.analyticshub.v1.ListListingsResponse - (*GetListingRequest)(nil), // 18: google.cloud.bigquery.analyticshub.v1.GetListingRequest - (*CreateListingRequest)(nil), // 19: google.cloud.bigquery.analyticshub.v1.CreateListingRequest - (*UpdateListingRequest)(nil), // 20: google.cloud.bigquery.analyticshub.v1.UpdateListingRequest - (*DeleteListingRequest)(nil), // 21: google.cloud.bigquery.analyticshub.v1.DeleteListingRequest - (*SubscribeListingRequest)(nil), // 22: google.cloud.bigquery.analyticshub.v1.SubscribeListingRequest - (*SubscribeListingResponse)(nil), // 23: google.cloud.bigquery.analyticshub.v1.SubscribeListingResponse - nil, // 24: google.cloud.bigquery.analyticshub.v1.DestinationDataset.LabelsEntry - (*Listing_BigQueryDatasetSource)(nil), // 25: google.cloud.bigquery.analyticshub.v1.Listing.BigQueryDatasetSource - (*wrapperspb.StringValue)(nil), // 26: google.protobuf.StringValue - (*fieldmaskpb.FieldMask)(nil), // 27: google.protobuf.FieldMask - (*iampb.GetIamPolicyRequest)(nil), // 28: google.iam.v1.GetIamPolicyRequest - (*iampb.SetIamPolicyRequest)(nil), // 29: google.iam.v1.SetIamPolicyRequest - (*iampb.TestIamPermissionsRequest)(nil), // 30: google.iam.v1.TestIamPermissionsRequest - (*emptypb.Empty)(nil), // 31: google.protobuf.Empty - (*iampb.Policy)(nil), // 32: google.iam.v1.Policy - (*iampb.TestIamPermissionsResponse)(nil), // 33: google.iam.v1.TestIamPermissionsResponse + (Listing_State)(0), // 0: google.cloud.bigquery.analyticshub.v1.Listing.State + (Listing_Category)(0), // 1: google.cloud.bigquery.analyticshub.v1.Listing.Category + (Subscription_State)(0), // 2: google.cloud.bigquery.analyticshub.v1.Subscription.State + (*DataExchange)(nil), // 3: google.cloud.bigquery.analyticshub.v1.DataExchange + (*SharingEnvironmentConfig)(nil), // 4: google.cloud.bigquery.analyticshub.v1.SharingEnvironmentConfig + (*DataProvider)(nil), // 5: google.cloud.bigquery.analyticshub.v1.DataProvider + (*Publisher)(nil), // 6: google.cloud.bigquery.analyticshub.v1.Publisher + (*DestinationDatasetReference)(nil), // 7: google.cloud.bigquery.analyticshub.v1.DestinationDatasetReference + (*DestinationDataset)(nil), // 8: google.cloud.bigquery.analyticshub.v1.DestinationDataset + (*Listing)(nil), // 9: google.cloud.bigquery.analyticshub.v1.Listing + (*Subscription)(nil), // 10: google.cloud.bigquery.analyticshub.v1.Subscription + (*ListDataExchangesRequest)(nil), // 11: google.cloud.bigquery.analyticshub.v1.ListDataExchangesRequest + (*ListDataExchangesResponse)(nil), // 12: google.cloud.bigquery.analyticshub.v1.ListDataExchangesResponse + (*ListOrgDataExchangesRequest)(nil), // 13: google.cloud.bigquery.analyticshub.v1.ListOrgDataExchangesRequest + (*ListOrgDataExchangesResponse)(nil), // 14: google.cloud.bigquery.analyticshub.v1.ListOrgDataExchangesResponse + (*GetDataExchangeRequest)(nil), // 15: google.cloud.bigquery.analyticshub.v1.GetDataExchangeRequest + (*CreateDataExchangeRequest)(nil), // 16: google.cloud.bigquery.analyticshub.v1.CreateDataExchangeRequest + (*UpdateDataExchangeRequest)(nil), // 17: google.cloud.bigquery.analyticshub.v1.UpdateDataExchangeRequest + (*DeleteDataExchangeRequest)(nil), // 18: google.cloud.bigquery.analyticshub.v1.DeleteDataExchangeRequest + (*ListListingsRequest)(nil), // 19: google.cloud.bigquery.analyticshub.v1.ListListingsRequest + (*ListListingsResponse)(nil), // 20: google.cloud.bigquery.analyticshub.v1.ListListingsResponse + (*GetListingRequest)(nil), // 21: google.cloud.bigquery.analyticshub.v1.GetListingRequest + (*CreateListingRequest)(nil), // 22: google.cloud.bigquery.analyticshub.v1.CreateListingRequest + (*UpdateListingRequest)(nil), // 23: google.cloud.bigquery.analyticshub.v1.UpdateListingRequest + (*DeleteListingRequest)(nil), // 24: google.cloud.bigquery.analyticshub.v1.DeleteListingRequest + (*SubscribeListingRequest)(nil), // 25: google.cloud.bigquery.analyticshub.v1.SubscribeListingRequest + (*SubscribeListingResponse)(nil), // 26: google.cloud.bigquery.analyticshub.v1.SubscribeListingResponse + (*SubscribeDataExchangeRequest)(nil), // 27: google.cloud.bigquery.analyticshub.v1.SubscribeDataExchangeRequest + (*SubscribeDataExchangeResponse)(nil), // 28: google.cloud.bigquery.analyticshub.v1.SubscribeDataExchangeResponse + (*RefreshSubscriptionRequest)(nil), // 29: google.cloud.bigquery.analyticshub.v1.RefreshSubscriptionRequest + (*RefreshSubscriptionResponse)(nil), // 30: google.cloud.bigquery.analyticshub.v1.RefreshSubscriptionResponse + (*GetSubscriptionRequest)(nil), // 31: google.cloud.bigquery.analyticshub.v1.GetSubscriptionRequest + (*ListSubscriptionsRequest)(nil), // 32: google.cloud.bigquery.analyticshub.v1.ListSubscriptionsRequest + (*ListSubscriptionsResponse)(nil), // 33: google.cloud.bigquery.analyticshub.v1.ListSubscriptionsResponse + (*ListSharedResourceSubscriptionsRequest)(nil), // 34: google.cloud.bigquery.analyticshub.v1.ListSharedResourceSubscriptionsRequest + (*ListSharedResourceSubscriptionsResponse)(nil), // 35: google.cloud.bigquery.analyticshub.v1.ListSharedResourceSubscriptionsResponse + (*RevokeSubscriptionRequest)(nil), // 36: google.cloud.bigquery.analyticshub.v1.RevokeSubscriptionRequest + (*RevokeSubscriptionResponse)(nil), // 37: google.cloud.bigquery.analyticshub.v1.RevokeSubscriptionResponse + (*DeleteSubscriptionRequest)(nil), // 38: google.cloud.bigquery.analyticshub.v1.DeleteSubscriptionRequest + (*OperationMetadata)(nil), // 39: google.cloud.bigquery.analyticshub.v1.OperationMetadata + (*SharingEnvironmentConfig_DefaultExchangeConfig)(nil), // 40: google.cloud.bigquery.analyticshub.v1.SharingEnvironmentConfig.DefaultExchangeConfig + (*SharingEnvironmentConfig_DcrExchangeConfig)(nil), // 41: google.cloud.bigquery.analyticshub.v1.SharingEnvironmentConfig.DcrExchangeConfig + nil, // 42: google.cloud.bigquery.analyticshub.v1.DestinationDataset.LabelsEntry + (*Listing_BigQueryDatasetSource)(nil), // 43: google.cloud.bigquery.analyticshub.v1.Listing.BigQueryDatasetSource + (*Listing_RestrictedExportConfig)(nil), // 44: google.cloud.bigquery.analyticshub.v1.Listing.RestrictedExportConfig + (*Subscription_LinkedResource)(nil), // 45: google.cloud.bigquery.analyticshub.v1.Subscription.LinkedResource + nil, // 46: google.cloud.bigquery.analyticshub.v1.Subscription.LinkedDatasetMapEntry + (*wrapperspb.StringValue)(nil), // 47: google.protobuf.StringValue + (*timestamppb.Timestamp)(nil), // 48: google.protobuf.Timestamp + (*fieldmaskpb.FieldMask)(nil), // 49: google.protobuf.FieldMask + (*iampb.GetIamPolicyRequest)(nil), // 50: google.iam.v1.GetIamPolicyRequest + (*iampb.SetIamPolicyRequest)(nil), // 51: google.iam.v1.SetIamPolicyRequest + (*iampb.TestIamPermissionsRequest)(nil), // 52: google.iam.v1.TestIamPermissionsRequest + (*emptypb.Empty)(nil), // 53: google.protobuf.Empty + (*longrunningpb.Operation)(nil), // 54: google.longrunning.Operation + (*iampb.Policy)(nil), // 55: google.iam.v1.Policy + (*iampb.TestIamPermissionsResponse)(nil), // 56: google.iam.v1.TestIamPermissionsResponse } var file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_depIdxs = []int32{ - 5, // 0: google.cloud.bigquery.analyticshub.v1.DestinationDataset.dataset_reference:type_name -> google.cloud.bigquery.analyticshub.v1.DestinationDatasetReference - 26, // 1: google.cloud.bigquery.analyticshub.v1.DestinationDataset.friendly_name:type_name -> google.protobuf.StringValue - 26, // 2: google.cloud.bigquery.analyticshub.v1.DestinationDataset.description:type_name -> google.protobuf.StringValue - 24, // 3: google.cloud.bigquery.analyticshub.v1.DestinationDataset.labels:type_name -> google.cloud.bigquery.analyticshub.v1.DestinationDataset.LabelsEntry - 25, // 4: google.cloud.bigquery.analyticshub.v1.Listing.bigquery_dataset:type_name -> google.cloud.bigquery.analyticshub.v1.Listing.BigQueryDatasetSource - 0, // 5: google.cloud.bigquery.analyticshub.v1.Listing.state:type_name -> google.cloud.bigquery.analyticshub.v1.Listing.State - 3, // 6: google.cloud.bigquery.analyticshub.v1.Listing.data_provider:type_name -> google.cloud.bigquery.analyticshub.v1.DataProvider - 1, // 7: google.cloud.bigquery.analyticshub.v1.Listing.categories:type_name -> google.cloud.bigquery.analyticshub.v1.Listing.Category - 4, // 8: google.cloud.bigquery.analyticshub.v1.Listing.publisher:type_name -> google.cloud.bigquery.analyticshub.v1.Publisher - 2, // 9: google.cloud.bigquery.analyticshub.v1.ListDataExchangesResponse.data_exchanges:type_name -> google.cloud.bigquery.analyticshub.v1.DataExchange - 2, // 10: google.cloud.bigquery.analyticshub.v1.ListOrgDataExchangesResponse.data_exchanges:type_name -> google.cloud.bigquery.analyticshub.v1.DataExchange - 2, // 11: google.cloud.bigquery.analyticshub.v1.CreateDataExchangeRequest.data_exchange:type_name -> google.cloud.bigquery.analyticshub.v1.DataExchange - 27, // 12: google.cloud.bigquery.analyticshub.v1.UpdateDataExchangeRequest.update_mask:type_name -> google.protobuf.FieldMask - 2, // 13: google.cloud.bigquery.analyticshub.v1.UpdateDataExchangeRequest.data_exchange:type_name -> google.cloud.bigquery.analyticshub.v1.DataExchange - 7, // 14: google.cloud.bigquery.analyticshub.v1.ListListingsResponse.listings:type_name -> google.cloud.bigquery.analyticshub.v1.Listing - 7, // 15: google.cloud.bigquery.analyticshub.v1.CreateListingRequest.listing:type_name -> google.cloud.bigquery.analyticshub.v1.Listing - 27, // 16: google.cloud.bigquery.analyticshub.v1.UpdateListingRequest.update_mask:type_name -> google.protobuf.FieldMask - 7, // 17: google.cloud.bigquery.analyticshub.v1.UpdateListingRequest.listing:type_name -> google.cloud.bigquery.analyticshub.v1.Listing - 6, // 18: google.cloud.bigquery.analyticshub.v1.SubscribeListingRequest.destination_dataset:type_name -> google.cloud.bigquery.analyticshub.v1.DestinationDataset - 8, // 19: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.ListDataExchanges:input_type -> google.cloud.bigquery.analyticshub.v1.ListDataExchangesRequest - 10, // 20: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.ListOrgDataExchanges:input_type -> google.cloud.bigquery.analyticshub.v1.ListOrgDataExchangesRequest - 12, // 21: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.GetDataExchange:input_type -> google.cloud.bigquery.analyticshub.v1.GetDataExchangeRequest - 13, // 22: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.CreateDataExchange:input_type -> google.cloud.bigquery.analyticshub.v1.CreateDataExchangeRequest - 14, // 23: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.UpdateDataExchange:input_type -> google.cloud.bigquery.analyticshub.v1.UpdateDataExchangeRequest - 15, // 24: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.DeleteDataExchange:input_type -> google.cloud.bigquery.analyticshub.v1.DeleteDataExchangeRequest - 16, // 25: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.ListListings:input_type -> google.cloud.bigquery.analyticshub.v1.ListListingsRequest - 18, // 26: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.GetListing:input_type -> google.cloud.bigquery.analyticshub.v1.GetListingRequest - 19, // 27: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.CreateListing:input_type -> google.cloud.bigquery.analyticshub.v1.CreateListingRequest - 20, // 28: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.UpdateListing:input_type -> google.cloud.bigquery.analyticshub.v1.UpdateListingRequest - 21, // 29: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.DeleteListing:input_type -> google.cloud.bigquery.analyticshub.v1.DeleteListingRequest - 22, // 30: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.SubscribeListing:input_type -> google.cloud.bigquery.analyticshub.v1.SubscribeListingRequest - 28, // 31: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.GetIamPolicy:input_type -> google.iam.v1.GetIamPolicyRequest - 29, // 32: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.SetIamPolicy:input_type -> google.iam.v1.SetIamPolicyRequest - 30, // 33: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.TestIamPermissions:input_type -> google.iam.v1.TestIamPermissionsRequest - 9, // 34: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.ListDataExchanges:output_type -> google.cloud.bigquery.analyticshub.v1.ListDataExchangesResponse - 11, // 35: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.ListOrgDataExchanges:output_type -> google.cloud.bigquery.analyticshub.v1.ListOrgDataExchangesResponse - 2, // 36: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.GetDataExchange:output_type -> google.cloud.bigquery.analyticshub.v1.DataExchange - 2, // 37: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.CreateDataExchange:output_type -> google.cloud.bigquery.analyticshub.v1.DataExchange - 2, // 38: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.UpdateDataExchange:output_type -> google.cloud.bigquery.analyticshub.v1.DataExchange - 31, // 39: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.DeleteDataExchange:output_type -> google.protobuf.Empty - 17, // 40: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.ListListings:output_type -> google.cloud.bigquery.analyticshub.v1.ListListingsResponse - 7, // 41: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.GetListing:output_type -> google.cloud.bigquery.analyticshub.v1.Listing - 7, // 42: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.CreateListing:output_type -> google.cloud.bigquery.analyticshub.v1.Listing - 7, // 43: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.UpdateListing:output_type -> google.cloud.bigquery.analyticshub.v1.Listing - 31, // 44: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.DeleteListing:output_type -> google.protobuf.Empty - 23, // 45: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.SubscribeListing:output_type -> google.cloud.bigquery.analyticshub.v1.SubscribeListingResponse - 32, // 46: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.GetIamPolicy:output_type -> google.iam.v1.Policy - 32, // 47: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.SetIamPolicy:output_type -> google.iam.v1.Policy - 33, // 48: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.TestIamPermissions:output_type -> google.iam.v1.TestIamPermissionsResponse - 34, // [34:49] is the sub-list for method output_type - 19, // [19:34] is the sub-list for method input_type - 19, // [19:19] is the sub-list for extension type_name - 19, // [19:19] is the sub-list for extension extendee - 0, // [0:19] is the sub-list for field type_name + 4, // 0: google.cloud.bigquery.analyticshub.v1.DataExchange.sharing_environment_config:type_name -> google.cloud.bigquery.analyticshub.v1.SharingEnvironmentConfig + 40, // 1: google.cloud.bigquery.analyticshub.v1.SharingEnvironmentConfig.default_exchange_config:type_name -> google.cloud.bigquery.analyticshub.v1.SharingEnvironmentConfig.DefaultExchangeConfig + 41, // 2: google.cloud.bigquery.analyticshub.v1.SharingEnvironmentConfig.dcr_exchange_config:type_name -> google.cloud.bigquery.analyticshub.v1.SharingEnvironmentConfig.DcrExchangeConfig + 7, // 3: google.cloud.bigquery.analyticshub.v1.DestinationDataset.dataset_reference:type_name -> google.cloud.bigquery.analyticshub.v1.DestinationDatasetReference + 47, // 4: google.cloud.bigquery.analyticshub.v1.DestinationDataset.friendly_name:type_name -> google.protobuf.StringValue + 47, // 5: google.cloud.bigquery.analyticshub.v1.DestinationDataset.description:type_name -> google.protobuf.StringValue + 42, // 6: google.cloud.bigquery.analyticshub.v1.DestinationDataset.labels:type_name -> google.cloud.bigquery.analyticshub.v1.DestinationDataset.LabelsEntry + 43, // 7: google.cloud.bigquery.analyticshub.v1.Listing.bigquery_dataset:type_name -> google.cloud.bigquery.analyticshub.v1.Listing.BigQueryDatasetSource + 0, // 8: google.cloud.bigquery.analyticshub.v1.Listing.state:type_name -> google.cloud.bigquery.analyticshub.v1.Listing.State + 5, // 9: google.cloud.bigquery.analyticshub.v1.Listing.data_provider:type_name -> google.cloud.bigquery.analyticshub.v1.DataProvider + 1, // 10: google.cloud.bigquery.analyticshub.v1.Listing.categories:type_name -> google.cloud.bigquery.analyticshub.v1.Listing.Category + 6, // 11: google.cloud.bigquery.analyticshub.v1.Listing.publisher:type_name -> google.cloud.bigquery.analyticshub.v1.Publisher + 44, // 12: google.cloud.bigquery.analyticshub.v1.Listing.restricted_export_config:type_name -> google.cloud.bigquery.analyticshub.v1.Listing.RestrictedExportConfig + 48, // 13: google.cloud.bigquery.analyticshub.v1.Subscription.creation_time:type_name -> google.protobuf.Timestamp + 48, // 14: google.cloud.bigquery.analyticshub.v1.Subscription.last_modify_time:type_name -> google.protobuf.Timestamp + 2, // 15: google.cloud.bigquery.analyticshub.v1.Subscription.state:type_name -> google.cloud.bigquery.analyticshub.v1.Subscription.State + 46, // 16: google.cloud.bigquery.analyticshub.v1.Subscription.linked_dataset_map:type_name -> google.cloud.bigquery.analyticshub.v1.Subscription.LinkedDatasetMapEntry + 3, // 17: google.cloud.bigquery.analyticshub.v1.ListDataExchangesResponse.data_exchanges:type_name -> google.cloud.bigquery.analyticshub.v1.DataExchange + 3, // 18: google.cloud.bigquery.analyticshub.v1.ListOrgDataExchangesResponse.data_exchanges:type_name -> google.cloud.bigquery.analyticshub.v1.DataExchange + 3, // 19: google.cloud.bigquery.analyticshub.v1.CreateDataExchangeRequest.data_exchange:type_name -> google.cloud.bigquery.analyticshub.v1.DataExchange + 49, // 20: google.cloud.bigquery.analyticshub.v1.UpdateDataExchangeRequest.update_mask:type_name -> google.protobuf.FieldMask + 3, // 21: google.cloud.bigquery.analyticshub.v1.UpdateDataExchangeRequest.data_exchange:type_name -> google.cloud.bigquery.analyticshub.v1.DataExchange + 9, // 22: google.cloud.bigquery.analyticshub.v1.ListListingsResponse.listings:type_name -> google.cloud.bigquery.analyticshub.v1.Listing + 9, // 23: google.cloud.bigquery.analyticshub.v1.CreateListingRequest.listing:type_name -> google.cloud.bigquery.analyticshub.v1.Listing + 49, // 24: google.cloud.bigquery.analyticshub.v1.UpdateListingRequest.update_mask:type_name -> google.protobuf.FieldMask + 9, // 25: google.cloud.bigquery.analyticshub.v1.UpdateListingRequest.listing:type_name -> google.cloud.bigquery.analyticshub.v1.Listing + 8, // 26: google.cloud.bigquery.analyticshub.v1.SubscribeListingRequest.destination_dataset:type_name -> google.cloud.bigquery.analyticshub.v1.DestinationDataset + 10, // 27: google.cloud.bigquery.analyticshub.v1.SubscribeListingResponse.subscription:type_name -> google.cloud.bigquery.analyticshub.v1.Subscription + 10, // 28: google.cloud.bigquery.analyticshub.v1.SubscribeDataExchangeResponse.subscription:type_name -> google.cloud.bigquery.analyticshub.v1.Subscription + 10, // 29: google.cloud.bigquery.analyticshub.v1.RefreshSubscriptionResponse.subscription:type_name -> google.cloud.bigquery.analyticshub.v1.Subscription + 10, // 30: google.cloud.bigquery.analyticshub.v1.ListSubscriptionsResponse.subscriptions:type_name -> google.cloud.bigquery.analyticshub.v1.Subscription + 10, // 31: google.cloud.bigquery.analyticshub.v1.ListSharedResourceSubscriptionsResponse.shared_resource_subscriptions:type_name -> google.cloud.bigquery.analyticshub.v1.Subscription + 48, // 32: google.cloud.bigquery.analyticshub.v1.OperationMetadata.create_time:type_name -> google.protobuf.Timestamp + 48, // 33: google.cloud.bigquery.analyticshub.v1.OperationMetadata.end_time:type_name -> google.protobuf.Timestamp + 45, // 34: google.cloud.bigquery.analyticshub.v1.Subscription.LinkedDatasetMapEntry.value:type_name -> google.cloud.bigquery.analyticshub.v1.Subscription.LinkedResource + 11, // 35: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.ListDataExchanges:input_type -> google.cloud.bigquery.analyticshub.v1.ListDataExchangesRequest + 13, // 36: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.ListOrgDataExchanges:input_type -> google.cloud.bigquery.analyticshub.v1.ListOrgDataExchangesRequest + 15, // 37: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.GetDataExchange:input_type -> google.cloud.bigquery.analyticshub.v1.GetDataExchangeRequest + 16, // 38: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.CreateDataExchange:input_type -> google.cloud.bigquery.analyticshub.v1.CreateDataExchangeRequest + 17, // 39: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.UpdateDataExchange:input_type -> google.cloud.bigquery.analyticshub.v1.UpdateDataExchangeRequest + 18, // 40: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.DeleteDataExchange:input_type -> google.cloud.bigquery.analyticshub.v1.DeleteDataExchangeRequest + 19, // 41: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.ListListings:input_type -> google.cloud.bigquery.analyticshub.v1.ListListingsRequest + 21, // 42: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.GetListing:input_type -> google.cloud.bigquery.analyticshub.v1.GetListingRequest + 22, // 43: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.CreateListing:input_type -> google.cloud.bigquery.analyticshub.v1.CreateListingRequest + 23, // 44: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.UpdateListing:input_type -> google.cloud.bigquery.analyticshub.v1.UpdateListingRequest + 24, // 45: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.DeleteListing:input_type -> google.cloud.bigquery.analyticshub.v1.DeleteListingRequest + 25, // 46: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.SubscribeListing:input_type -> google.cloud.bigquery.analyticshub.v1.SubscribeListingRequest + 27, // 47: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.SubscribeDataExchange:input_type -> google.cloud.bigquery.analyticshub.v1.SubscribeDataExchangeRequest + 29, // 48: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.RefreshSubscription:input_type -> google.cloud.bigquery.analyticshub.v1.RefreshSubscriptionRequest + 31, // 49: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.GetSubscription:input_type -> google.cloud.bigquery.analyticshub.v1.GetSubscriptionRequest + 32, // 50: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.ListSubscriptions:input_type -> google.cloud.bigquery.analyticshub.v1.ListSubscriptionsRequest + 34, // 51: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.ListSharedResourceSubscriptions:input_type -> google.cloud.bigquery.analyticshub.v1.ListSharedResourceSubscriptionsRequest + 36, // 52: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.RevokeSubscription:input_type -> google.cloud.bigquery.analyticshub.v1.RevokeSubscriptionRequest + 38, // 53: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.DeleteSubscription:input_type -> google.cloud.bigquery.analyticshub.v1.DeleteSubscriptionRequest + 50, // 54: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.GetIamPolicy:input_type -> google.iam.v1.GetIamPolicyRequest + 51, // 55: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.SetIamPolicy:input_type -> google.iam.v1.SetIamPolicyRequest + 52, // 56: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.TestIamPermissions:input_type -> google.iam.v1.TestIamPermissionsRequest + 12, // 57: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.ListDataExchanges:output_type -> google.cloud.bigquery.analyticshub.v1.ListDataExchangesResponse + 14, // 58: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.ListOrgDataExchanges:output_type -> google.cloud.bigquery.analyticshub.v1.ListOrgDataExchangesResponse + 3, // 59: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.GetDataExchange:output_type -> google.cloud.bigquery.analyticshub.v1.DataExchange + 3, // 60: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.CreateDataExchange:output_type -> google.cloud.bigquery.analyticshub.v1.DataExchange + 3, // 61: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.UpdateDataExchange:output_type -> google.cloud.bigquery.analyticshub.v1.DataExchange + 53, // 62: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.DeleteDataExchange:output_type -> google.protobuf.Empty + 20, // 63: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.ListListings:output_type -> google.cloud.bigquery.analyticshub.v1.ListListingsResponse + 9, // 64: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.GetListing:output_type -> google.cloud.bigquery.analyticshub.v1.Listing + 9, // 65: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.CreateListing:output_type -> google.cloud.bigquery.analyticshub.v1.Listing + 9, // 66: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.UpdateListing:output_type -> google.cloud.bigquery.analyticshub.v1.Listing + 53, // 67: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.DeleteListing:output_type -> google.protobuf.Empty + 26, // 68: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.SubscribeListing:output_type -> google.cloud.bigquery.analyticshub.v1.SubscribeListingResponse + 54, // 69: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.SubscribeDataExchange:output_type -> google.longrunning.Operation + 54, // 70: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.RefreshSubscription:output_type -> google.longrunning.Operation + 10, // 71: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.GetSubscription:output_type -> google.cloud.bigquery.analyticshub.v1.Subscription + 33, // 72: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.ListSubscriptions:output_type -> google.cloud.bigquery.analyticshub.v1.ListSubscriptionsResponse + 35, // 73: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.ListSharedResourceSubscriptions:output_type -> google.cloud.bigquery.analyticshub.v1.ListSharedResourceSubscriptionsResponse + 37, // 74: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.RevokeSubscription:output_type -> google.cloud.bigquery.analyticshub.v1.RevokeSubscriptionResponse + 54, // 75: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.DeleteSubscription:output_type -> google.longrunning.Operation + 55, // 76: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.GetIamPolicy:output_type -> google.iam.v1.Policy + 55, // 77: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.SetIamPolicy:output_type -> google.iam.v1.Policy + 56, // 78: google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.TestIamPermissions:output_type -> google.iam.v1.TestIamPermissionsResponse + 57, // [57:79] is the sub-list for method output_type + 35, // [35:57] is the sub-list for method input_type + 35, // [35:35] is the sub-list for extension type_name + 35, // [35:35] is the sub-list for extension extendee + 0, // [0:35] is the sub-list for field type_name } func init() { file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_init() } @@ -2512,8 +4283,188 @@ func file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_init() { return nil } } - file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DataProvider); i { + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SharingEnvironmentConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DataProvider); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Publisher); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DestinationDatasetReference); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DestinationDataset); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Listing); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Subscription); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListDataExchangesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListDataExchangesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListOrgDataExchangesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListOrgDataExchangesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetDataExchangeRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateDataExchangeRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateDataExchangeRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteDataExchangeRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListListingsRequest); i { case 0: return &v.state case 1: @@ -2524,8 +4475,8 @@ func file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_init() { return nil } } - file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Publisher); i { + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListListingsResponse); i { case 0: return &v.state case 1: @@ -2536,8 +4487,8 @@ func file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_init() { return nil } } - file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DestinationDatasetReference); i { + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetListingRequest); i { case 0: return &v.state case 1: @@ -2548,8 +4499,8 @@ func file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_init() { return nil } } - file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DestinationDataset); i { + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateListingRequest); i { case 0: return &v.state case 1: @@ -2560,8 +4511,8 @@ func file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_init() { return nil } } - file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Listing); i { + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateListingRequest); i { case 0: return &v.state case 1: @@ -2572,8 +4523,8 @@ func file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_init() { return nil } } - file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListDataExchangesRequest); i { + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteListingRequest); i { case 0: return &v.state case 1: @@ -2584,8 +4535,8 @@ func file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_init() { return nil } } - file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListDataExchangesResponse); i { + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SubscribeListingRequest); i { case 0: return &v.state case 1: @@ -2596,8 +4547,8 @@ func file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_init() { return nil } } - file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListOrgDataExchangesRequest); i { + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SubscribeListingResponse); i { case 0: return &v.state case 1: @@ -2608,8 +4559,8 @@ func file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_init() { return nil } } - file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListOrgDataExchangesResponse); i { + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SubscribeDataExchangeRequest); i { case 0: return &v.state case 1: @@ -2620,8 +4571,8 @@ func file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_init() { return nil } } - file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetDataExchangeRequest); i { + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SubscribeDataExchangeResponse); i { case 0: return &v.state case 1: @@ -2632,8 +4583,8 @@ func file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_init() { return nil } } - file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateDataExchangeRequest); i { + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RefreshSubscriptionRequest); i { case 0: return &v.state case 1: @@ -2644,8 +4595,8 @@ func file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_init() { return nil } } - file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateDataExchangeRequest); i { + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RefreshSubscriptionResponse); i { case 0: return &v.state case 1: @@ -2656,8 +4607,8 @@ func file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_init() { return nil } } - file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteDataExchangeRequest); i { + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetSubscriptionRequest); i { case 0: return &v.state case 1: @@ -2668,8 +4619,8 @@ func file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_init() { return nil } } - file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListListingsRequest); i { + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListSubscriptionsRequest); i { case 0: return &v.state case 1: @@ -2680,8 +4631,8 @@ func file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_init() { return nil } } - file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListListingsResponse); i { + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListSubscriptionsResponse); i { case 0: return &v.state case 1: @@ -2692,8 +4643,8 @@ func file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_init() { return nil } } - file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetListingRequest); i { + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListSharedResourceSubscriptionsRequest); i { case 0: return &v.state case 1: @@ -2704,8 +4655,8 @@ func file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_init() { return nil } } - file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateListingRequest); i { + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListSharedResourceSubscriptionsResponse); i { case 0: return &v.state case 1: @@ -2716,8 +4667,8 @@ func file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_init() { return nil } } - file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateListingRequest); i { + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RevokeSubscriptionRequest); i { case 0: return &v.state case 1: @@ -2728,8 +4679,8 @@ func file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_init() { return nil } } - file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteListingRequest); i { + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RevokeSubscriptionResponse); i { case 0: return &v.state case 1: @@ -2740,8 +4691,8 @@ func file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_init() { return nil } } - file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubscribeListingRequest); i { + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteSubscriptionRequest); i { case 0: return &v.state case 1: @@ -2752,8 +4703,8 @@ func file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_init() { return nil } } - file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubscribeListingResponse); i { + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OperationMetadata); i { case 0: return &v.state case 1: @@ -2764,7 +4715,31 @@ func file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_init() { return nil } } - file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SharingEnvironmentConfig_DefaultExchangeConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SharingEnvironmentConfig_DcrExchangeConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Listing_BigQueryDatasetSource); i { case 0: return &v.state @@ -2776,20 +4751,55 @@ func file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_init() { return nil } } + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Listing_RestrictedExportConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Subscription_LinkedResource); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[1].OneofWrappers = []interface{}{ + (*SharingEnvironmentConfig_DefaultExchangeConfig_)(nil), + (*SharingEnvironmentConfig_DcrExchangeConfig_)(nil), } - file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[5].OneofWrappers = []interface{}{ + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[6].OneofWrappers = []interface{}{ (*Listing_BigqueryDataset)(nil), } - file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[20].OneofWrappers = []interface{}{ + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[7].OneofWrappers = []interface{}{ + (*Subscription_Listing)(nil), + (*Subscription_DataExchange)(nil), + } + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[22].OneofWrappers = []interface{}{ (*SubscribeListingRequest_DestinationDataset)(nil), } + file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_msgTypes[42].OneofWrappers = []interface{}{ + (*Subscription_LinkedResource_LinkedDataset)(nil), + } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_google_cloud_bigquery_analyticshub_v1_analyticshub_proto_rawDesc, - NumEnums: 2, - NumMessages: 24, + NumEnums: 3, + NumMessages: 44, NumExtensions: 0, NumServices: 1, }, @@ -2846,6 +4856,23 @@ type AnalyticsHubServiceClient interface { // Upon subscription to a listing for a BigQuery dataset, Analytics Hub // creates a linked dataset in the subscriber's project. SubscribeListing(ctx context.Context, in *SubscribeListingRequest, opts ...grpc.CallOption) (*SubscribeListingResponse, error) + // Creates a Subscription to a Data Exchange. This is a long-running operation + // as it will create one or more linked datasets. + SubscribeDataExchange(ctx context.Context, in *SubscribeDataExchangeRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) + // Refreshes a Subscription to a Data Exchange. A Data Exchange can become + // stale when a publisher adds or removes data. This is a long-running + // operation as it may create many linked datasets. + RefreshSubscription(ctx context.Context, in *RefreshSubscriptionRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) + // Gets the details of a Subscription. + GetSubscription(ctx context.Context, in *GetSubscriptionRequest, opts ...grpc.CallOption) (*Subscription, error) + // Lists all subscriptions in a given project and location. + ListSubscriptions(ctx context.Context, in *ListSubscriptionsRequest, opts ...grpc.CallOption) (*ListSubscriptionsResponse, error) + // Lists all subscriptions on a given Data Exchange or Listing. + ListSharedResourceSubscriptions(ctx context.Context, in *ListSharedResourceSubscriptionsRequest, opts ...grpc.CallOption) (*ListSharedResourceSubscriptionsResponse, error) + // Revokes a given subscription. + RevokeSubscription(ctx context.Context, in *RevokeSubscriptionRequest, opts ...grpc.CallOption) (*RevokeSubscriptionResponse, error) + // Deletes a subscription. + DeleteSubscription(ctx context.Context, in *DeleteSubscriptionRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) // Gets the IAM policy. GetIamPolicy(ctx context.Context, in *iampb.GetIamPolicyRequest, opts ...grpc.CallOption) (*iampb.Policy, error) // Sets the IAM policy. @@ -2970,6 +4997,69 @@ func (c *analyticsHubServiceClient) SubscribeListing(ctx context.Context, in *Su return out, nil } +func (c *analyticsHubServiceClient) SubscribeDataExchange(ctx context.Context, in *SubscribeDataExchangeRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) { + out := new(longrunningpb.Operation) + err := c.cc.Invoke(ctx, "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/SubscribeDataExchange", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *analyticsHubServiceClient) RefreshSubscription(ctx context.Context, in *RefreshSubscriptionRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) { + out := new(longrunningpb.Operation) + err := c.cc.Invoke(ctx, "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/RefreshSubscription", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *analyticsHubServiceClient) GetSubscription(ctx context.Context, in *GetSubscriptionRequest, opts ...grpc.CallOption) (*Subscription, error) { + out := new(Subscription) + err := c.cc.Invoke(ctx, "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/GetSubscription", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *analyticsHubServiceClient) ListSubscriptions(ctx context.Context, in *ListSubscriptionsRequest, opts ...grpc.CallOption) (*ListSubscriptionsResponse, error) { + out := new(ListSubscriptionsResponse) + err := c.cc.Invoke(ctx, "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/ListSubscriptions", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *analyticsHubServiceClient) ListSharedResourceSubscriptions(ctx context.Context, in *ListSharedResourceSubscriptionsRequest, opts ...grpc.CallOption) (*ListSharedResourceSubscriptionsResponse, error) { + out := new(ListSharedResourceSubscriptionsResponse) + err := c.cc.Invoke(ctx, "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/ListSharedResourceSubscriptions", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *analyticsHubServiceClient) RevokeSubscription(ctx context.Context, in *RevokeSubscriptionRequest, opts ...grpc.CallOption) (*RevokeSubscriptionResponse, error) { + out := new(RevokeSubscriptionResponse) + err := c.cc.Invoke(ctx, "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/RevokeSubscription", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *analyticsHubServiceClient) DeleteSubscription(ctx context.Context, in *DeleteSubscriptionRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) { + out := new(longrunningpb.Operation) + err := c.cc.Invoke(ctx, "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/DeleteSubscription", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *analyticsHubServiceClient) GetIamPolicy(ctx context.Context, in *iampb.GetIamPolicyRequest, opts ...grpc.CallOption) (*iampb.Policy, error) { out := new(iampb.Policy) err := c.cc.Invoke(ctx, "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/GetIamPolicy", in, out, opts...) @@ -3029,6 +5119,23 @@ type AnalyticsHubServiceServer interface { // Upon subscription to a listing for a BigQuery dataset, Analytics Hub // creates a linked dataset in the subscriber's project. SubscribeListing(context.Context, *SubscribeListingRequest) (*SubscribeListingResponse, error) + // Creates a Subscription to a Data Exchange. This is a long-running operation + // as it will create one or more linked datasets. + SubscribeDataExchange(context.Context, *SubscribeDataExchangeRequest) (*longrunningpb.Operation, error) + // Refreshes a Subscription to a Data Exchange. A Data Exchange can become + // stale when a publisher adds or removes data. This is a long-running + // operation as it may create many linked datasets. + RefreshSubscription(context.Context, *RefreshSubscriptionRequest) (*longrunningpb.Operation, error) + // Gets the details of a Subscription. + GetSubscription(context.Context, *GetSubscriptionRequest) (*Subscription, error) + // Lists all subscriptions in a given project and location. + ListSubscriptions(context.Context, *ListSubscriptionsRequest) (*ListSubscriptionsResponse, error) + // Lists all subscriptions on a given Data Exchange or Listing. + ListSharedResourceSubscriptions(context.Context, *ListSharedResourceSubscriptionsRequest) (*ListSharedResourceSubscriptionsResponse, error) + // Revokes a given subscription. + RevokeSubscription(context.Context, *RevokeSubscriptionRequest) (*RevokeSubscriptionResponse, error) + // Deletes a subscription. + DeleteSubscription(context.Context, *DeleteSubscriptionRequest) (*longrunningpb.Operation, error) // Gets the IAM policy. GetIamPolicy(context.Context, *iampb.GetIamPolicyRequest) (*iampb.Policy, error) // Sets the IAM policy. @@ -3077,6 +5184,27 @@ func (*UnimplementedAnalyticsHubServiceServer) DeleteListing(context.Context, *D func (*UnimplementedAnalyticsHubServiceServer) SubscribeListing(context.Context, *SubscribeListingRequest) (*SubscribeListingResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method SubscribeListing not implemented") } +func (*UnimplementedAnalyticsHubServiceServer) SubscribeDataExchange(context.Context, *SubscribeDataExchangeRequest) (*longrunningpb.Operation, error) { + return nil, status.Errorf(codes.Unimplemented, "method SubscribeDataExchange not implemented") +} +func (*UnimplementedAnalyticsHubServiceServer) RefreshSubscription(context.Context, *RefreshSubscriptionRequest) (*longrunningpb.Operation, error) { + return nil, status.Errorf(codes.Unimplemented, "method RefreshSubscription not implemented") +} +func (*UnimplementedAnalyticsHubServiceServer) GetSubscription(context.Context, *GetSubscriptionRequest) (*Subscription, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetSubscription not implemented") +} +func (*UnimplementedAnalyticsHubServiceServer) ListSubscriptions(context.Context, *ListSubscriptionsRequest) (*ListSubscriptionsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListSubscriptions not implemented") +} +func (*UnimplementedAnalyticsHubServiceServer) ListSharedResourceSubscriptions(context.Context, *ListSharedResourceSubscriptionsRequest) (*ListSharedResourceSubscriptionsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListSharedResourceSubscriptions not implemented") +} +func (*UnimplementedAnalyticsHubServiceServer) RevokeSubscription(context.Context, *RevokeSubscriptionRequest) (*RevokeSubscriptionResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RevokeSubscription not implemented") +} +func (*UnimplementedAnalyticsHubServiceServer) DeleteSubscription(context.Context, *DeleteSubscriptionRequest) (*longrunningpb.Operation, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteSubscription not implemented") +} func (*UnimplementedAnalyticsHubServiceServer) GetIamPolicy(context.Context, *iampb.GetIamPolicyRequest) (*iampb.Policy, error) { return nil, status.Errorf(codes.Unimplemented, "method GetIamPolicy not implemented") } @@ -3307,6 +5435,132 @@ func _AnalyticsHubService_SubscribeListing_Handler(srv interface{}, ctx context. return interceptor(ctx, in, info, handler) } +func _AnalyticsHubService_SubscribeDataExchange_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SubscribeDataExchangeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AnalyticsHubServiceServer).SubscribeDataExchange(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/SubscribeDataExchange", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AnalyticsHubServiceServer).SubscribeDataExchange(ctx, req.(*SubscribeDataExchangeRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _AnalyticsHubService_RefreshSubscription_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RefreshSubscriptionRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AnalyticsHubServiceServer).RefreshSubscription(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/RefreshSubscription", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AnalyticsHubServiceServer).RefreshSubscription(ctx, req.(*RefreshSubscriptionRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _AnalyticsHubService_GetSubscription_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetSubscriptionRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AnalyticsHubServiceServer).GetSubscription(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/GetSubscription", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AnalyticsHubServiceServer).GetSubscription(ctx, req.(*GetSubscriptionRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _AnalyticsHubService_ListSubscriptions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListSubscriptionsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AnalyticsHubServiceServer).ListSubscriptions(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/ListSubscriptions", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AnalyticsHubServiceServer).ListSubscriptions(ctx, req.(*ListSubscriptionsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _AnalyticsHubService_ListSharedResourceSubscriptions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListSharedResourceSubscriptionsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AnalyticsHubServiceServer).ListSharedResourceSubscriptions(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/ListSharedResourceSubscriptions", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AnalyticsHubServiceServer).ListSharedResourceSubscriptions(ctx, req.(*ListSharedResourceSubscriptionsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _AnalyticsHubService_RevokeSubscription_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RevokeSubscriptionRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AnalyticsHubServiceServer).RevokeSubscription(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/RevokeSubscription", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AnalyticsHubServiceServer).RevokeSubscription(ctx, req.(*RevokeSubscriptionRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _AnalyticsHubService_DeleteSubscription_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteSubscriptionRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AnalyticsHubServiceServer).DeleteSubscription(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.bigquery.analyticshub.v1.AnalyticsHubService/DeleteSubscription", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AnalyticsHubServiceServer).DeleteSubscription(ctx, req.(*DeleteSubscriptionRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _AnalyticsHubService_GetIamPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(iampb.GetIamPolicyRequest) if err := dec(in); err != nil { @@ -3413,6 +5667,34 @@ var _AnalyticsHubService_serviceDesc = grpc.ServiceDesc{ MethodName: "SubscribeListing", Handler: _AnalyticsHubService_SubscribeListing_Handler, }, + { + MethodName: "SubscribeDataExchange", + Handler: _AnalyticsHubService_SubscribeDataExchange_Handler, + }, + { + MethodName: "RefreshSubscription", + Handler: _AnalyticsHubService_RefreshSubscription_Handler, + }, + { + MethodName: "GetSubscription", + Handler: _AnalyticsHubService_GetSubscription_Handler, + }, + { + MethodName: "ListSubscriptions", + Handler: _AnalyticsHubService_ListSubscriptions_Handler, + }, + { + MethodName: "ListSharedResourceSubscriptions", + Handler: _AnalyticsHubService_ListSharedResourceSubscriptions_Handler, + }, + { + MethodName: "RevokeSubscription", + Handler: _AnalyticsHubService_RevokeSubscription_Handler, + }, + { + MethodName: "DeleteSubscription", + Handler: _AnalyticsHubService_DeleteSubscription_Handler, + }, { MethodName: "GetIamPolicy", Handler: _AnalyticsHubService_GetIamPolicy_Handler, diff --git a/bigquery/analyticshub/apiv1/gapic_metadata.json b/bigquery/analyticshub/apiv1/gapic_metadata.json index 982a686a62bf..b4eaf2c893d3 100644 --- a/bigquery/analyticshub/apiv1/gapic_metadata.json +++ b/bigquery/analyticshub/apiv1/gapic_metadata.json @@ -30,6 +30,11 @@ "DeleteListing" ] }, + "DeleteSubscription": { + "methods": [ + "DeleteSubscription" + ] + }, "GetDataExchange": { "methods": [ "GetDataExchange" @@ -45,6 +50,11 @@ "GetListing" ] }, + "GetSubscription": { + "methods": [ + "GetSubscription" + ] + }, "ListDataExchanges": { "methods": [ "ListDataExchanges" @@ -60,11 +70,36 @@ "ListOrgDataExchanges" ] }, + "ListSharedResourceSubscriptions": { + "methods": [ + "ListSharedResourceSubscriptions" + ] + }, + "ListSubscriptions": { + "methods": [ + "ListSubscriptions" + ] + }, + "RefreshSubscription": { + "methods": [ + "RefreshSubscription" + ] + }, + "RevokeSubscription": { + "methods": [ + "RevokeSubscription" + ] + }, "SetIamPolicy": { "methods": [ "SetIamPolicy" ] }, + "SubscribeDataExchange": { + "methods": [ + "SubscribeDataExchange" + ] + }, "SubscribeListing": { "methods": [ "SubscribeListing" @@ -110,6 +145,11 @@ "DeleteListing" ] }, + "DeleteSubscription": { + "methods": [ + "DeleteSubscription" + ] + }, "GetDataExchange": { "methods": [ "GetDataExchange" @@ -125,6 +165,11 @@ "GetListing" ] }, + "GetSubscription": { + "methods": [ + "GetSubscription" + ] + }, "ListDataExchanges": { "methods": [ "ListDataExchanges" @@ -140,11 +185,36 @@ "ListOrgDataExchanges" ] }, + "ListSharedResourceSubscriptions": { + "methods": [ + "ListSharedResourceSubscriptions" + ] + }, + "ListSubscriptions": { + "methods": [ + "ListSubscriptions" + ] + }, + "RefreshSubscription": { + "methods": [ + "RefreshSubscription" + ] + }, + "RevokeSubscription": { + "methods": [ + "RevokeSubscription" + ] + }, "SetIamPolicy": { "methods": [ "SetIamPolicy" ] }, + "SubscribeDataExchange": { + "methods": [ + "SubscribeDataExchange" + ] + }, "SubscribeListing": { "methods": [ "SubscribeListing" diff --git a/bigquery/go.mod b/bigquery/go.mod index 3966062396be..18721ab6f760 100644 --- a/bigquery/go.mod +++ b/bigquery/go.mod @@ -6,6 +6,7 @@ require ( cloud.google.com/go v0.110.6 cloud.google.com/go/datacatalog v1.16.0 cloud.google.com/go/iam v1.1.1 + cloud.google.com/go/longrunning v0.5.1 cloud.google.com/go/storage v1.30.1 github.com/apache/arrow/go/v12 v12.0.0 github.com/google/go-cmp v0.5.9 @@ -25,7 +26,6 @@ require ( require ( cloud.google.com/go/compute v1.23.0 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect - cloud.google.com/go/longrunning v0.5.1 // indirect github.com/andybalholm/brotli v1.0.4 // indirect github.com/apache/thrift v0.16.0 // indirect github.com/goccy/go-json v0.9.11 // indirect diff --git a/internal/generated/snippets/bigquery/analyticshub/apiv1/Client/DeleteSubscription/main.go b/internal/generated/snippets/bigquery/analyticshub/apiv1/Client/DeleteSubscription/main.go new file mode 100644 index 000000000000..ff172211fa27 --- /dev/null +++ b/internal/generated/snippets/bigquery/analyticshub/apiv1/Client/DeleteSubscription/main.go @@ -0,0 +1,56 @@ +// Copyright 2023 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 analyticshub_v1_generated_AnalyticsHubService_DeleteSubscription_sync] + +package main + +import ( + "context" + + analyticshub "cloud.google.com/go/bigquery/analyticshub/apiv1" + analyticshubpb "cloud.google.com/go/bigquery/analyticshub/apiv1/analyticshubpb" +) + +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 := analyticshub.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &analyticshubpb.DeleteSubscriptionRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/bigquery/analyticshub/apiv1/analyticshubpb#DeleteSubscriptionRequest. + } + op, err := c.DeleteSubscription(ctx, req) + if err != nil { + // TODO: Handle error. + } + + err = op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } +} + +// [END analyticshub_v1_generated_AnalyticsHubService_DeleteSubscription_sync] diff --git a/internal/generated/snippets/bigquery/analyticshub/apiv1/Client/GetSubscription/main.go b/internal/generated/snippets/bigquery/analyticshub/apiv1/Client/GetSubscription/main.go new file mode 100644 index 000000000000..f72ccc896486 --- /dev/null +++ b/internal/generated/snippets/bigquery/analyticshub/apiv1/Client/GetSubscription/main.go @@ -0,0 +1,53 @@ +// Copyright 2023 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 analyticshub_v1_generated_AnalyticsHubService_GetSubscription_sync] + +package main + +import ( + "context" + + analyticshub "cloud.google.com/go/bigquery/analyticshub/apiv1" + analyticshubpb "cloud.google.com/go/bigquery/analyticshub/apiv1/analyticshubpb" +) + +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 := analyticshub.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &analyticshubpb.GetSubscriptionRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/bigquery/analyticshub/apiv1/analyticshubpb#GetSubscriptionRequest. + } + resp, err := c.GetSubscription(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END analyticshub_v1_generated_AnalyticsHubService_GetSubscription_sync] diff --git a/internal/generated/snippets/bigquery/analyticshub/apiv1/Client/ListSharedResourceSubscriptions/main.go b/internal/generated/snippets/bigquery/analyticshub/apiv1/Client/ListSharedResourceSubscriptions/main.go new file mode 100644 index 000000000000..fc57eab03a3a --- /dev/null +++ b/internal/generated/snippets/bigquery/analyticshub/apiv1/Client/ListSharedResourceSubscriptions/main.go @@ -0,0 +1,60 @@ +// Copyright 2023 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 analyticshub_v1_generated_AnalyticsHubService_ListSharedResourceSubscriptions_sync] + +package main + +import ( + "context" + + analyticshub "cloud.google.com/go/bigquery/analyticshub/apiv1" + analyticshubpb "cloud.google.com/go/bigquery/analyticshub/apiv1/analyticshubpb" + "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 := analyticshub.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &analyticshubpb.ListSharedResourceSubscriptionsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/bigquery/analyticshub/apiv1/analyticshubpb#ListSharedResourceSubscriptionsRequest. + } + it := c.ListSharedResourceSubscriptions(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + } +} + +// [END analyticshub_v1_generated_AnalyticsHubService_ListSharedResourceSubscriptions_sync] diff --git a/internal/generated/snippets/bigquery/analyticshub/apiv1/Client/ListSubscriptions/main.go b/internal/generated/snippets/bigquery/analyticshub/apiv1/Client/ListSubscriptions/main.go new file mode 100644 index 000000000000..0b63d24b45d0 --- /dev/null +++ b/internal/generated/snippets/bigquery/analyticshub/apiv1/Client/ListSubscriptions/main.go @@ -0,0 +1,60 @@ +// Copyright 2023 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 analyticshub_v1_generated_AnalyticsHubService_ListSubscriptions_sync] + +package main + +import ( + "context" + + analyticshub "cloud.google.com/go/bigquery/analyticshub/apiv1" + analyticshubpb "cloud.google.com/go/bigquery/analyticshub/apiv1/analyticshubpb" + "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 := analyticshub.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &analyticshubpb.ListSubscriptionsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/bigquery/analyticshub/apiv1/analyticshubpb#ListSubscriptionsRequest. + } + it := c.ListSubscriptions(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + } +} + +// [END analyticshub_v1_generated_AnalyticsHubService_ListSubscriptions_sync] diff --git a/internal/generated/snippets/bigquery/analyticshub/apiv1/Client/RefreshSubscription/main.go b/internal/generated/snippets/bigquery/analyticshub/apiv1/Client/RefreshSubscription/main.go new file mode 100644 index 000000000000..ae15327d031e --- /dev/null +++ b/internal/generated/snippets/bigquery/analyticshub/apiv1/Client/RefreshSubscription/main.go @@ -0,0 +1,58 @@ +// Copyright 2023 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 analyticshub_v1_generated_AnalyticsHubService_RefreshSubscription_sync] + +package main + +import ( + "context" + + analyticshub "cloud.google.com/go/bigquery/analyticshub/apiv1" + analyticshubpb "cloud.google.com/go/bigquery/analyticshub/apiv1/analyticshubpb" +) + +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 := analyticshub.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &analyticshubpb.RefreshSubscriptionRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/bigquery/analyticshub/apiv1/analyticshubpb#RefreshSubscriptionRequest. + } + op, err := c.RefreshSubscription(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END analyticshub_v1_generated_AnalyticsHubService_RefreshSubscription_sync] diff --git a/internal/generated/snippets/bigquery/analyticshub/apiv1/Client/RevokeSubscription/main.go b/internal/generated/snippets/bigquery/analyticshub/apiv1/Client/RevokeSubscription/main.go new file mode 100644 index 000000000000..2e4fb0b8d410 --- /dev/null +++ b/internal/generated/snippets/bigquery/analyticshub/apiv1/Client/RevokeSubscription/main.go @@ -0,0 +1,53 @@ +// Copyright 2023 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 analyticshub_v1_generated_AnalyticsHubService_RevokeSubscription_sync] + +package main + +import ( + "context" + + analyticshub "cloud.google.com/go/bigquery/analyticshub/apiv1" + analyticshubpb "cloud.google.com/go/bigquery/analyticshub/apiv1/analyticshubpb" +) + +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 := analyticshub.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &analyticshubpb.RevokeSubscriptionRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/bigquery/analyticshub/apiv1/analyticshubpb#RevokeSubscriptionRequest. + } + resp, err := c.RevokeSubscription(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END analyticshub_v1_generated_AnalyticsHubService_RevokeSubscription_sync] diff --git a/internal/generated/snippets/bigquery/analyticshub/apiv1/Client/SubscribeDataExchange/main.go b/internal/generated/snippets/bigquery/analyticshub/apiv1/Client/SubscribeDataExchange/main.go new file mode 100644 index 000000000000..e8116d306d1d --- /dev/null +++ b/internal/generated/snippets/bigquery/analyticshub/apiv1/Client/SubscribeDataExchange/main.go @@ -0,0 +1,58 @@ +// Copyright 2023 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 analyticshub_v1_generated_AnalyticsHubService_SubscribeDataExchange_sync] + +package main + +import ( + "context" + + analyticshub "cloud.google.com/go/bigquery/analyticshub/apiv1" + analyticshubpb "cloud.google.com/go/bigquery/analyticshub/apiv1/analyticshubpb" +) + +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 := analyticshub.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &analyticshubpb.SubscribeDataExchangeRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/bigquery/analyticshub/apiv1/analyticshubpb#SubscribeDataExchangeRequest. + } + op, err := c.SubscribeDataExchange(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END analyticshub_v1_generated_AnalyticsHubService_SubscribeDataExchange_sync] diff --git a/internal/generated/snippets/bigquery/analyticshub/apiv1/snippet_metadata.google.cloud.bigquery.analyticshub.v1.json b/internal/generated/snippets/bigquery/analyticshub/apiv1/snippet_metadata.google.cloud.bigquery.analyticshub.v1.json index 9079d8159136..0ada79cda3cd 100644 --- a/internal/generated/snippets/bigquery/analyticshub/apiv1/snippet_metadata.google.cloud.bigquery.analyticshub.v1.json +++ b/internal/generated/snippets/bigquery/analyticshub/apiv1/snippet_metadata.google.cloud.bigquery.analyticshub.v1.json @@ -193,6 +193,52 @@ } ] }, + { + "regionTag": "analyticshub_v1_generated_AnalyticsHubService_DeleteSubscription_sync", + "title": "analyticshub DeleteSubscription Sample", + "description": "DeleteSubscription deletes a subscription.", + "file": "Client/DeleteSubscription/main.go", + "language": "GO", + "clientMethod": { + "shortName": "DeleteSubscription", + "fullName": "google.cloud.bigquery.analyticshub.v1.Client.DeleteSubscription", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "analyticshubpb.DeleteSubscriptionRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "DeleteSubscriptionOperation", + "client": { + "shortName": "Client", + "fullName": "google.cloud.bigquery.analyticshub.v1.Client" + }, + "method": { + "shortName": "DeleteSubscription", + "fullName": "google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.DeleteSubscription", + "service": { + "shortName": "AnalyticsHubService", + "fullName": "google.cloud.bigquery.analyticshub.v1.AnalyticsHubService" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 56, + "type": "FULL" + } + ] + }, { "regionTag": "analyticshub_v1_generated_AnalyticsHubService_GetDataExchange_sync", "title": "analyticshub GetDataExchange Sample", @@ -331,6 +377,52 @@ } ] }, + { + "regionTag": "analyticshub_v1_generated_AnalyticsHubService_GetSubscription_sync", + "title": "analyticshub GetSubscription Sample", + "description": "GetSubscription gets the details of a Subscription.", + "file": "Client/GetSubscription/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GetSubscription", + "fullName": "google.cloud.bigquery.analyticshub.v1.Client.GetSubscription", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "analyticshubpb.GetSubscriptionRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*analyticshubpb.Subscription", + "client": { + "shortName": "Client", + "fullName": "google.cloud.bigquery.analyticshub.v1.Client" + }, + "method": { + "shortName": "GetSubscription", + "fullName": "google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.GetSubscription", + "service": { + "shortName": "AnalyticsHubService", + "fullName": "google.cloud.bigquery.analyticshub.v1.AnalyticsHubService" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, { "regionTag": "analyticshub_v1_generated_AnalyticsHubService_ListDataExchanges_sync", "title": "analyticshub ListDataExchanges Sample", @@ -469,6 +561,190 @@ } ] }, + { + "regionTag": "analyticshub_v1_generated_AnalyticsHubService_ListSharedResourceSubscriptions_sync", + "title": "analyticshub ListSharedResourceSubscriptions Sample", + "description": "ListSharedResourceSubscriptions lists all subscriptions on a given Data Exchange or Listing.", + "file": "Client/ListSharedResourceSubscriptions/main.go", + "language": "GO", + "clientMethod": { + "shortName": "ListSharedResourceSubscriptions", + "fullName": "google.cloud.bigquery.analyticshub.v1.Client.ListSharedResourceSubscriptions", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "analyticshubpb.ListSharedResourceSubscriptionsRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "SubscriptionIterator", + "client": { + "shortName": "Client", + "fullName": "google.cloud.bigquery.analyticshub.v1.Client" + }, + "method": { + "shortName": "ListSharedResourceSubscriptions", + "fullName": "google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.ListSharedResourceSubscriptions", + "service": { + "shortName": "AnalyticsHubService", + "fullName": "google.cloud.bigquery.analyticshub.v1.AnalyticsHubService" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 60, + "type": "FULL" + } + ] + }, + { + "regionTag": "analyticshub_v1_generated_AnalyticsHubService_ListSubscriptions_sync", + "title": "analyticshub ListSubscriptions Sample", + "description": "ListSubscriptions lists all subscriptions in a given project and location.", + "file": "Client/ListSubscriptions/main.go", + "language": "GO", + "clientMethod": { + "shortName": "ListSubscriptions", + "fullName": "google.cloud.bigquery.analyticshub.v1.Client.ListSubscriptions", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "analyticshubpb.ListSubscriptionsRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "SubscriptionIterator", + "client": { + "shortName": "Client", + "fullName": "google.cloud.bigquery.analyticshub.v1.Client" + }, + "method": { + "shortName": "ListSubscriptions", + "fullName": "google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.ListSubscriptions", + "service": { + "shortName": "AnalyticsHubService", + "fullName": "google.cloud.bigquery.analyticshub.v1.AnalyticsHubService" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 60, + "type": "FULL" + } + ] + }, + { + "regionTag": "analyticshub_v1_generated_AnalyticsHubService_RefreshSubscription_sync", + "title": "analyticshub RefreshSubscription Sample", + "description": "RefreshSubscription refreshes a Subscription to a Data Exchange. A Data Exchange can become\nstale when a publisher adds or removes data. This is a long-running\noperation as it may create many linked datasets.", + "file": "Client/RefreshSubscription/main.go", + "language": "GO", + "clientMethod": { + "shortName": "RefreshSubscription", + "fullName": "google.cloud.bigquery.analyticshub.v1.Client.RefreshSubscription", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "analyticshubpb.RefreshSubscriptionRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "RefreshSubscriptionOperation", + "client": { + "shortName": "Client", + "fullName": "google.cloud.bigquery.analyticshub.v1.Client" + }, + "method": { + "shortName": "RefreshSubscription", + "fullName": "google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.RefreshSubscription", + "service": { + "shortName": "AnalyticsHubService", + "fullName": "google.cloud.bigquery.analyticshub.v1.AnalyticsHubService" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 58, + "type": "FULL" + } + ] + }, + { + "regionTag": "analyticshub_v1_generated_AnalyticsHubService_RevokeSubscription_sync", + "title": "analyticshub RevokeSubscription Sample", + "description": "RevokeSubscription revokes a given subscription.", + "file": "Client/RevokeSubscription/main.go", + "language": "GO", + "clientMethod": { + "shortName": "RevokeSubscription", + "fullName": "google.cloud.bigquery.analyticshub.v1.Client.RevokeSubscription", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "analyticshubpb.RevokeSubscriptionRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*analyticshubpb.RevokeSubscriptionResponse", + "client": { + "shortName": "Client", + "fullName": "google.cloud.bigquery.analyticshub.v1.Client" + }, + "method": { + "shortName": "RevokeSubscription", + "fullName": "google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.RevokeSubscription", + "service": { + "shortName": "AnalyticsHubService", + "fullName": "google.cloud.bigquery.analyticshub.v1.AnalyticsHubService" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, { "regionTag": "analyticshub_v1_generated_AnalyticsHubService_SetIamPolicy_sync", "title": "analyticshub SetIamPolicy Sample", @@ -515,6 +791,52 @@ } ] }, + { + "regionTag": "analyticshub_v1_generated_AnalyticsHubService_SubscribeDataExchange_sync", + "title": "analyticshub SubscribeDataExchange Sample", + "description": "SubscribeDataExchange creates a Subscription to a Data Exchange. This is a long-running operation\nas it will create one or more linked datasets.", + "file": "Client/SubscribeDataExchange/main.go", + "language": "GO", + "clientMethod": { + "shortName": "SubscribeDataExchange", + "fullName": "google.cloud.bigquery.analyticshub.v1.Client.SubscribeDataExchange", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "analyticshubpb.SubscribeDataExchangeRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "SubscribeDataExchangeOperation", + "client": { + "shortName": "Client", + "fullName": "google.cloud.bigquery.analyticshub.v1.Client" + }, + "method": { + "shortName": "SubscribeDataExchange", + "fullName": "google.cloud.bigquery.analyticshub.v1.AnalyticsHubService.SubscribeDataExchange", + "service": { + "shortName": "AnalyticsHubService", + "fullName": "google.cloud.bigquery.analyticshub.v1.AnalyticsHubService" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 58, + "type": "FULL" + } + ] + }, { "regionTag": "analyticshub_v1_generated_AnalyticsHubService_SubscribeListing_sync", "title": "analyticshub SubscribeListing Sample",