From c027750df2f86a48c0c3304ac69906fe4d973c88 Mon Sep 17 00:00:00 2001 From: Allyson English <58833140+Allyson-English@users.noreply.github.com> Date: Wed, 3 Apr 2024 20:15:58 -0600 Subject: [PATCH] SI-2525-disconnect-synthetic-vehicles-programatically (#301) stop integration polling for user and require re-auth --- internal/rpc/user_devices.go | 121 +++---- internal/rpc/user_devices_test.go | 237 -------------- pkg/grpc/user_devices.pb.go | 520 +++++++++++------------------- pkg/grpc/user_devices.proto | 12 +- pkg/grpc/user_devices_grpc.pb.go | 61 ++-- 5 files changed, 274 insertions(+), 677 deletions(-) diff --git a/internal/rpc/user_devices.go b/internal/rpc/user_devices.go index 7b958bb02..fe7313c30 100644 --- a/internal/rpc/user_devices.go +++ b/internal/rpc/user_devices.go @@ -7,7 +7,6 @@ import ( "fmt" "math/big" "strings" - "time" mtpgrpc "github.com/DIMO-Network/meta-transaction-processor/pkg/grpc" "github.com/ethereum/go-ethereum/common" @@ -19,7 +18,6 @@ import ( "github.com/DIMO-Network/devices-api/internal/config" "github.com/DIMO-Network/devices-api/internal/constants" "github.com/DIMO-Network/devices-api/internal/services" - "github.com/DIMO-Network/shared" "github.com/DIMO-Network/shared/db" "github.com/ericlagergren/decimal" @@ -762,86 +760,67 @@ func (s *userDeviceRPCServer) ClearMetaTransactionRequests(ctx context.Context, return &pb.ClearMetaTransactionRequestsResponse{Id: metaTransaction.ID}, nil } -func (s *userDeviceRPCServer) DeleteSyntheticDeviceIntegration(ctx context.Context, req *pb.DeleteSyntheticDeviceIntegrationsRequest) (*pb.DeleteSyntheticDeviceIntegrationResponse, error) { - resp := &pb.DeleteSyntheticDeviceIntegrationResponse{} +func (s *userDeviceRPCServer) StopUserDeviceIntegration(ctx context.Context, req *pb.StopUserDeviceIntegrationRequest) (*emptypb.Empty, error) { + log := s.logger.With(). + Str("userDeviceId", req.UserDeviceId). + Str("integrationId", req.IntegrationId).Logger() + log.Info().Msg("stopping user device integration polling") - for _, deleteRequest := range req.DeviceIntegrations { + apiInt, err := models.UserDeviceAPIIntegrations( + models.UserDeviceAPIIntegrationWhere.UserDeviceID.EQ(req.UserDeviceId), + models.UserDeviceAPIIntegrationWhere.IntegrationID.EQ(req.IntegrationId), + qm.Load(models.UserDeviceAPIIntegrationRels.UserDevice), + ).One(ctx, s.dbs().Reader) + if err != nil { + log.Err(err).Msg("failed to retrieve integration") + return nil, fmt.Errorf("failed to retrieve integration %s for user device %s: %w", req.IntegrationId, req.UserDeviceId, err) + } - s.logger.Info(). - Str("userDeviceId", deleteRequest.UserDeviceId). - Str("integrationId", deleteRequest.IntegrationId). - Msg("deleting integration on behalf of user") + if apiInt.R.UserDevice == nil { + log.Info().Msg("failed to find user device") + return nil, fmt.Errorf("failed to find user device %s for integration %s", req.UserDeviceId, req.IntegrationId) + } - apiInt, err := models.UserDeviceAPIIntegrations( - models.UserDeviceAPIIntegrationWhere.UserDeviceID.EQ(deleteRequest.UserDeviceId), - models.UserDeviceAPIIntegrationWhere.IntegrationID.EQ(deleteRequest.IntegrationId), - qm.Load(models.UserDeviceAPIIntegrationRels.UserDevice), - ).One(ctx, s.dbs().Reader) - if err != nil { - return nil, err - } + integ, err := s.deviceDefSvc.GetIntegrationByID(ctx, req.IntegrationId) + if err != nil { + log.Err(err).Msg("deviceDefSvc error getting integration by id") + return nil, fmt.Errorf("deviceDefSvc error getting integration by id: %w", err) + } - if apiInt.R.UserDevice == nil { - return nil, fmt.Errorf("failed to find user device %s for integration %s", deleteRequest.UserDeviceId, deleteRequest.IntegrationId) - } + if !apiInt.TaskID.Valid { + log.Info().Msg("failed to stop device integration polling; invalid task id") + return nil, fmt.Errorf("failed to stop device integration polling; invalid task id") + } - dd, err := s.deviceDefSvc.GetDeviceDefinitionByID(ctx, apiInt.R.UserDevice.DeviceDefinitionID) + switch integ.Vendor { + case constants.SmartCarVendor: + err = s.smartcarTaskSvc.StopPoll(apiInt) if err != nil { - return nil, fmt.Errorf("deviceDefSvc error getting device definition by id %s: %w", apiInt.R.UserDevice.DeviceDefinitionID, err) + log.Err(err).Msg("failed to stop smartcar poll") + return nil, fmt.Errorf("failed to stop smartcar poll: %w", err) } - - integ, err := s.deviceDefSvc.GetIntegrationByID(ctx, deleteRequest.IntegrationId) + case constants.TeslaVendor: + err = s.teslaTaskService.StopPoll(apiInt) if err != nil { - return nil, fmt.Errorf("deviceDefSvc error getting integration by id %s: %w", deleteRequest.IntegrationId, err) - } - - switch integ.Vendor { - case constants.SmartCarVendor: - if apiInt.TaskID.Valid { - err = s.smartcarTaskSvc.StopPoll(apiInt) - if err != nil { - return nil, fmt.Errorf("failed to stop smartcar poll: %w", err) - } - } - case constants.TeslaVendor: - if apiInt.TaskID.Valid { - err = s.teslaTaskService.StopPoll(apiInt) - if err != nil { - return nil, fmt.Errorf("failed to stop tesla poll: %w", err) - } - } + log.Err(err).Msg("failed to stop tesla poll") + return nil, fmt.Errorf("failed to stop tesla poll: %w", err) } + default: + log.Info().Str("vendor", integ.Vendor).Msg("stop user integration poll not implemented for vendor") + return nil, fmt.Errorf("stop user integration poll not implemented for vendor %s", integ.Vendor) + } - _, err = apiInt.Delete(ctx, s.dbs().Reader) - if err != nil { - return nil, fmt.Errorf("failed to delete integration: %w", err) - } + if apiInt.Status == models.UserDeviceAPIIntegrationStatusAuthenticationFailure { + log.Info().Msgf("integration authentication status is already %s", models.UserDeviceAPIIntegrationStatusAuthenticationFailure) + return nil, fmt.Errorf("integration authentication status is already %s", models.UserDeviceAPIIntegrationStatusAuthenticationFailure) + } - if err := s.eventService.Emit(&shared.CloudEvent[any]{ - Type: "com.dimo.zone.device.integration.delete", - Source: "devices-api", - Subject: apiInt.UserDeviceID, - Data: services.UserDeviceIntegrationEvent{ - Timestamp: time.Now(), - UserID: apiInt.R.UserDevice.UserID, - Device: services.UserDeviceEventDevice{ - ID: apiInt.UserDeviceID, - Make: dd.Make.Name, - Model: dd.Type.Model, - Year: int(dd.Type.Year), - }, - Integration: services.UserDeviceEventIntegration{ - ID: integ.Id, - Type: integ.Type, - Style: integ.Style, - Vendor: integ.Vendor, - }, - }, - }); err != nil { - s.logger.Err(err).Msg("Failed to emit integration deletion") - } - resp.ImpactedUserDeviceIds = append(resp.ImpactedUserDeviceIds, deleteRequest.UserDeviceId) + apiInt.Status = models.UserDeviceAPIIntegrationStatusAuthenticationFailure + if _, err := apiInt.Update(ctx, s.dbs().Writer, boil.Infer()); err != nil { + log.Err(err).Msgf("failed to update integration table; task id: %s", apiInt.TaskID.String) + return nil, fmt.Errorf("failed to update integration table; task id: %s; %w", apiInt.TaskID.String, err) } - return resp, nil + log.Info().Msg("integration polling stopped") + return &emptypb.Empty{}, nil } diff --git a/internal/rpc/user_devices_test.go b/internal/rpc/user_devices_test.go index eed9faa0b..4563bd812 100644 --- a/internal/rpc/user_devices_test.go +++ b/internal/rpc/user_devices_test.go @@ -2,23 +2,14 @@ package rpc import ( "context" - "database/sql" - "encoding/json" - "fmt" "math/big" "testing" "time" - "github.com/DIMO-Network/device-definitions-api/pkg/grpc" - "github.com/DIMO-Network/shared" "github.com/DIMO-Network/shared/db" - "github.com/DIMO-Network/shared/redis/mocks" "github.com/ericlagergren/decimal" "github.com/ethereum/go-ethereum/common" - "github.com/go-redis/redis/v8" "github.com/segmentio/ksuid" - smartcar "github.com/smartcar/go-sdk" - "go.uber.org/mock/gomock" pb_devices "github.com/DIMO-Network/devices-api/pkg/grpc" @@ -28,11 +19,8 @@ import ( "github.com/volatiletech/sqlboiler/v4/boil" "github.com/volatiletech/sqlboiler/v4/types" - "github.com/DIMO-Network/devices-api/internal/config" "github.com/DIMO-Network/devices-api/internal/constants" - "github.com/DIMO-Network/devices-api/internal/controllers" "github.com/DIMO-Network/devices-api/internal/services" - mock_services "github.com/DIMO-Network/devices-api/internal/services/mocks" "github.com/DIMO-Network/devices-api/internal/test" "github.com/DIMO-Network/devices-api/models" ) @@ -264,228 +252,3 @@ func TestGetUserDevice_NoSyntheticDeviceFields_WhenNoTokenID(t *testing.T) { assert.Nil(udResult.SyntheticDevice) } - -func TestDeleteSyntheticDeviceIntegration(t *testing.T) { - assert := assert.New(t) - logger := zerolog.Logger{} - ctx := context.Background() - pdb, container := test.StartContainerDatabase(ctx, t, migrationsDirRelPath) - defer func() { - if err := container.Terminate(ctx); err != nil { - t.Fatal(err) - } - }() - - userDeviceID, err := populateDB(ctx, pdb) - assert.NoError(err) - - ud, err := models.UserDevices(models.UserDeviceWhere.ID.EQ(userDeviceID)).One(ctx, pdb.DBS().Reader) - assert.NoError(err) - - integ := models.UserDeviceAPIIntegration{ - UserDeviceID: userDeviceID, - IntegrationID: "22N2xaPOq2WW2gAHBHd0Ikn4Zob", - Status: models.UserDeviceAPIIntegrationStatusActive, - } - - if err := integ.Insert(ctx, pdb.DBS().Writer, boil.Infer()); err != nil { - t.Fatal(err) - } - - mockCtrl := gomock.NewController(t) - scTaskSvc := mock_services.NewMockSmartcarTaskService(mockCtrl) - teslaTaskService := mock_services.NewMockTeslaTaskService(mockCtrl) - deviceDefSvc := mock_services.NewMockDeviceDefinitionService(mockCtrl) - eventSvc := mock_services.NewMockEventService(mockCtrl) - userDeviceSvc := services.NewUserDeviceService(nil, logger, pdb.DBS, nil, nil) - udService := NewUserDeviceRPCService(pdb.DBS, nil, nil, &logger, deviceDefSvc, eventSvc, nil, userDeviceSvc, teslaTaskService, scTaskSvc) - - deviceDefSvc.EXPECT().GetIntegrationByID(gomock.Any(), integ.IntegrationID).Times(1).Return(&grpc.Integration{ - Vendor: constants.SmartCarVendor, - }, nil) - - deviceDefSvc.EXPECT().GetDeviceDefinitionByID(gomock.Any(), ud.DeviceDefinitionID).Times(1).Return(&grpc.GetDeviceDefinitionItemResponse{ - DeviceDefinitionId: ud.DeviceDefinitionID, - Verified: true, - DeviceAttributes: nil, - Make: &grpc.DeviceMake{ - Name: "Ford", - }, - Type: &grpc.DeviceType{ - Model: "Bronco", - Year: 2020, - }, - }, nil) - - eventSvc.EXPECT().Emit(gomock.Any()).Times(1).Return(nil) - - req := pb_devices.DeleteSyntheticDeviceIntegrationsRequest{} - req.DeviceIntegrations = append(req.DeviceIntegrations, &pb_devices.DeleteSyntheticDeviceIntegrationRequest{UserDeviceId: userDeviceID, IntegrationId: integ.IntegrationID}) - - resp, err := udService.DeleteSyntheticDeviceIntegration(ctx, &req) - assert.NoError(err) - - assert.Equal(resp.ImpactedUserDeviceIds[0], userDeviceID) - - _, err = models.FindUserDeviceAPIIntegration(ctx, pdb.DBS().Writer, ud.ID, integ.IntegrationID) - assert.Equal(sql.ErrNoRows, err) - -} - -func Test_AfterSynthDevDeletedForUser_UserCanReRegister(t *testing.T) { - assert := assert.New(t) - logger := zerolog.Logger{} - ctx := context.Background() - pdb, container := test.StartContainerDatabase(ctx, t, migrationsDirRelPath) - defer func() { - if err := container.Terminate(ctx); err != nil { - t.Fatal(err) - } - }() - - // create mocks - mockCtrl := gomock.NewController(t) - scTaskSvc := mock_services.NewMockSmartcarTaskService(mockCtrl) - teslaTaskService := mock_services.NewMockTeslaTaskService(mockCtrl) - deviceDefSvc := mock_services.NewMockDeviceDefinitionService(mockCtrl) - eventSvc := mock_services.NewMockEventService(mockCtrl) - userDeviceSvc := services.NewUserDeviceService(nil, logger, pdb.DBS, nil, nil) - udService := NewUserDeviceRPCService(pdb.DBS, nil, nil, &logger, deviceDefSvc, eventSvc, nil, userDeviceSvc, teslaTaskService, scTaskSvc) - scClient := mock_services.NewMockSmartcarClient(mockCtrl) - deviceDefinitionRegistrar := mock_services.NewMockDeviceDefinitionRegistrar(mockCtrl) - redisClient := mocks.NewMockCacheService(mockCtrl) - c := controllers.NewUserDevicesController(&config.Settings{Port: "3000"}, pdb.DBS, &logger, deviceDefSvc, nil, eventSvc, scClient, scTaskSvc, nil, teslaTaskService, new(shared.ROT13Cipher), nil, nil, - nil, deviceDefinitionRegistrar, nil, nil, nil, nil, redisClient, nil, nil, nil, nil, nil, userDeviceSvc, nil, - nil) - - // set vars - expiry, _ := time.Parse(time.RFC3339, "2022-03-01T12:00:00Z") - - token := &smartcar.Token{ - Access: "some-access-code", - AccessExpiry: expiry, - Refresh: "some-refresh-code", - RefreshExpiry: expiry, - ExpiresIn: 3000, - } - - tokenJSON, err := json.Marshal(token) - assert.NoError(err) - cipher := new(shared.ROT13Cipher) - encrypted, err := cipher.Encrypt(string(tokenJSON)) - assert.NoError(err) - - // populate db - userDeviceID, err := populateDB(ctx, pdb) - assert.NoError(err) - - ud, err := models.UserDevices(models.UserDeviceWhere.ID.EQ(userDeviceID)).One(ctx, pdb.DBS().Reader) - assert.NoError(err) - - integ := models.UserDeviceAPIIntegration{ - UserDeviceID: userDeviceID, - IntegrationID: "22N2xaPOq2WW2gAHBHd0Ikn4Zob", - Status: models.UserDeviceAPIIntegrationStatusActive, - } - - if err := integ.Insert(ctx, pdb.DBS().Writer, boil.Infer()); err != nil { - t.Fatal(err) - } - - integration := test.BuildIntegrationGRPC(constants.SmartCarVendor, 10, 0) - dd := test.BuildDeviceDefinitionGRPC(ksuid.New().String(), "Ford", "bRonco", 2020, integration) - - // expect - deviceDefSvc.EXPECT().GetIntegrationByID(gomock.Any(), integ.IntegrationID).Times(1).Return(&grpc.Integration{ - Vendor: constants.SmartCarVendor, - }, nil) - - deviceDefSvc.EXPECT().GetDeviceDefinitionByID(gomock.Any(), ud.DeviceDefinitionID).Times(1).Return(&grpc.GetDeviceDefinitionItemResponse{ - DeviceDefinitionId: ud.DeviceDefinitionID, - Verified: true, - DeviceAttributes: nil, - Make: &grpc.DeviceMake{ - Name: "Ford", - }, - Type: &grpc.DeviceType{ - Model: "Bronco", - Year: 2020, - }, - }, nil) - eventSvc.EXPECT().Emit(gomock.Any()).Times(1).Return(nil) - - eventSvc.EXPECT().Emit(gomock.Any()).Return(nil).Do( - func(event *shared.CloudEvent[any]) error { - assert.Equal(ud.ID, event.Subject) - assert.Equal("com.dimo.zone.device.integration.create", event.Type) - - data := event.Data.(services.UserDeviceIntegrationEvent) - - assert.Equal(dd[0].DeviceDefinitionId, data.Device.DeviceDefinitionID) - assert.Equal(dd[0].Make.Name, data.Device.Make) - assert.Equal(dd[0].Type.Model, data.Device.Model) - assert.Equal(int(dd[0].Type.Year), data.Device.Year) - assert.Equal(ud.VinIdentifier.String, data.Device.VIN) - assert.Equal(ud.ID, data.Device.ID) - assert.Equal(constants.SmartCarVendor, data.Integration.Vendor) - assert.Equal(integration.Id, data.Integration.ID) - return nil - }, - ) - - deviceDefinitionRegistrar.EXPECT().Register(services.DeviceDefinitionDTO{ - IntegrationID: integration.Id, - UserDeviceID: ud.ID, - DeviceDefinitionID: ud.DeviceDefinitionID, - Make: dd[0].Make.Name, - Model: dd[0].Type.Model, - Year: int(dd[0].Type.Year), - Region: "Americas", - }).Return(nil) - - deviceDefSvc.EXPECT().GetDeviceDefinitionByID(gomock.Any(), ud.DeviceDefinitionID).Times(2).Return(dd[0], nil) - scClient.EXPECT().GetUserID(gomock.Any(), token.Access).Return("sc-user-id", nil) - scClient.EXPECT().GetExternalID(gomock.Any(), token.Access).Return("smartcar-idx", nil) - scClient.EXPECT().GetEndpoints(gomock.Any(), token.Access, "smartcar-idx").Return([]string{"/", "/vin"}, nil) - scClient.EXPECT().HasDoorControl(gomock.Any(), token.Access, "smartcar-idx").Return(false, nil) - redisClient.EXPECT().Get(gomock.Any(), fmt.Sprintf("sc-temp-tok-%s-%s", ud.VinIdentifier.String, ud.UserID)).Return(redis.NewStringResult(encrypted, nil)) - redisClient.EXPECT().Del(gomock.Any(), fmt.Sprintf("sc-temp-tok-%s-%s", ud.VinIdentifier.String, ud.UserID)).Return(redis.NewIntResult(1, nil)) - - oUdai := &models.UserDeviceAPIIntegration{} - scTaskSvc.EXPECT().StartPoll(gomock.AssignableToTypeOf(oUdai)).DoAndReturn( - func(udai *models.UserDeviceAPIIntegration) error { - oUdai = udai - return nil - }, - ) - - req := pb_devices.DeleteSyntheticDeviceIntegrationsRequest{} - req.DeviceIntegrations = append(req.DeviceIntegrations, &pb_devices.DeleteSyntheticDeviceIntegrationRequest{UserDeviceId: userDeviceID, IntegrationId: integ.IntegrationID}) - - _, err = models.FindUserDeviceAPIIntegration(ctx, pdb.DBS().Writer, ud.ID, integ.IntegrationID) - assert.NotEqual(sql.ErrNoRows, err) - - _, err = udService.DeleteSyntheticDeviceIntegration(ctx, &req) - assert.NoError(err) - - _, err = models.FindUserDeviceAPIIntegration(ctx, pdb.DBS().Writer, ud.ID, integ.IntegrationID) - assert.Equal(sql.ErrNoRows, err) - - request := test.BuildRequest("POST", "/user/devices/"+ud.ID+"/integrations/"+integration.Id, `{ - "code": "qxy", - "redirectURI": "http://dimo.zone/cb" - }`) - app := test.SetupAppFiber(logger) - app.Post("/user/devices/:userDeviceID/integrations/:integrationID", test.AuthInjectorTestHandler(ud.UserID), c.RegisterDeviceIntegration) - _, err = app.Test(request) - assert.NoError(err) - - apiInt, _ := models.FindUserDeviceAPIIntegration(ctx, pdb.DBS().Writer, ud.ID, integration.Id) - updatedUD, _ := models.FindUserDevice(ctx, pdb.DBS().Reader, ud.ID) - - assert.True(expiry.Equal(apiInt.AccessExpiresAt.Time)) - assert.Equal("PendingFirstData", apiInt.Status) - assert.Equal(ud.VinIdentifier.String, updatedUD.VinIdentifier.String) - assert.Equal(true, updatedUD.VinConfirmed) - -} diff --git a/pkg/grpc/user_devices.pb.go b/pkg/grpc/user_devices.pb.go index 5279d8695..875301166 100644 --- a/pkg/grpc/user_devices.pb.go +++ b/pkg/grpc/user_devices.pb.go @@ -2,6 +2,8 @@ // versions: // protoc-gen-go v1.32.0 // protoc v4.25.3 +// protoc-gen-go v1.32.0 +// protoc v4.25.3 // source: pkg/grpc/user_devices.proto package grpc @@ -1551,16 +1553,17 @@ func (x *ClearMetaTransactionRequestsResponse) GetId() string { return "" } -type DeleteSyntheticDeviceIntegrationsRequest struct { +type StopUserDeviceIntegrationRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - DeviceIntegrations []*DeleteSyntheticDeviceIntegrationRequest `protobuf:"bytes,1,rep,name=device_integrations,json=deviceIntegrations,proto3" json:"device_integrations,omitempty"` + UserDeviceId string `protobuf:"bytes,1,opt,name=user_device_id,json=userDeviceId,proto3" json:"user_device_id,omitempty"` + IntegrationId string `protobuf:"bytes,2,opt,name=integration_id,json=integrationId,proto3" json:"integration_id,omitempty"` } -func (x *DeleteSyntheticDeviceIntegrationsRequest) Reset() { - *x = DeleteSyntheticDeviceIntegrationsRequest{} +func (x *StopUserDeviceIntegrationRequest) Reset() { + *x = StopUserDeviceIntegrationRequest{} if protoimpl.UnsafeEnabled { mi := &file_pkg_grpc_user_devices_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1568,13 +1571,13 @@ func (x *DeleteSyntheticDeviceIntegrationsRequest) Reset() { } } -func (x *DeleteSyntheticDeviceIntegrationsRequest) String() string { +func (x *StopUserDeviceIntegrationRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteSyntheticDeviceIntegrationsRequest) ProtoMessage() {} +func (*StopUserDeviceIntegrationRequest) ProtoMessage() {} -func (x *DeleteSyntheticDeviceIntegrationsRequest) ProtoReflect() protoreflect.Message { +func (x *StopUserDeviceIntegrationRequest) ProtoReflect() protoreflect.Message { mi := &file_pkg_grpc_user_devices_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1586,120 +1589,25 @@ func (x *DeleteSyntheticDeviceIntegrationsRequest) ProtoReflect() protoreflect.M return mi.MessageOf(x) } -// Deprecated: Use DeleteSyntheticDeviceIntegrationsRequest.ProtoReflect.Descriptor instead. -func (*DeleteSyntheticDeviceIntegrationsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use StopUserDeviceIntegrationRequest.ProtoReflect.Descriptor instead. +func (*StopUserDeviceIntegrationRequest) Descriptor() ([]byte, []int) { return file_pkg_grpc_user_devices_proto_rawDescGZIP(), []int{25} } -func (x *DeleteSyntheticDeviceIntegrationsRequest) GetDeviceIntegrations() []*DeleteSyntheticDeviceIntegrationRequest { - if x != nil { - return x.DeviceIntegrations - } - return nil -} - -type DeleteSyntheticDeviceIntegrationRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - UserDeviceId string `protobuf:"bytes,1,opt,name=user_device_id,json=userDeviceId,proto3" json:"user_device_id,omitempty"` - IntegrationId string `protobuf:"bytes,2,opt,name=integration_id,json=integrationId,proto3" json:"integration_id,omitempty"` -} - -func (x *DeleteSyntheticDeviceIntegrationRequest) Reset() { - *x = DeleteSyntheticDeviceIntegrationRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_pkg_grpc_user_devices_proto_msgTypes[26] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DeleteSyntheticDeviceIntegrationRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteSyntheticDeviceIntegrationRequest) ProtoMessage() {} - -func (x *DeleteSyntheticDeviceIntegrationRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_grpc_user_devices_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 DeleteSyntheticDeviceIntegrationRequest.ProtoReflect.Descriptor instead. -func (*DeleteSyntheticDeviceIntegrationRequest) Descriptor() ([]byte, []int) { - return file_pkg_grpc_user_devices_proto_rawDescGZIP(), []int{26} -} - -func (x *DeleteSyntheticDeviceIntegrationRequest) GetUserDeviceId() string { +func (x *StopUserDeviceIntegrationRequest) GetUserDeviceId() string { if x != nil { return x.UserDeviceId } return "" } -func (x *DeleteSyntheticDeviceIntegrationRequest) GetIntegrationId() string { +func (x *StopUserDeviceIntegrationRequest) GetIntegrationId() string { if x != nil { return x.IntegrationId } return "" } -type DeleteSyntheticDeviceIntegrationResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ImpactedUserDeviceIds []string `protobuf:"bytes,1,rep,name=impacted_user_device_ids,json=impactedUserDeviceIds,proto3" json:"impacted_user_device_ids,omitempty"` -} - -func (x *DeleteSyntheticDeviceIntegrationResponse) Reset() { - *x = DeleteSyntheticDeviceIntegrationResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_pkg_grpc_user_devices_proto_msgTypes[27] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DeleteSyntheticDeviceIntegrationResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteSyntheticDeviceIntegrationResponse) ProtoMessage() {} - -func (x *DeleteSyntheticDeviceIntegrationResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_grpc_user_devices_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 DeleteSyntheticDeviceIntegrationResponse.ProtoReflect.Descriptor instead. -func (*DeleteSyntheticDeviceIntegrationResponse) Descriptor() ([]byte, []int) { - return file_pkg_grpc_user_devices_proto_rawDescGZIP(), []int{27} -} - -func (x *DeleteSyntheticDeviceIntegrationResponse) GetImpactedUserDeviceIds() []string { - if x != nil { - return x.ImpactedUserDeviceIds - } - return nil -} - var File_pkg_grpc_user_devices_proto protoreflect.FileDescriptor var file_pkg_grpc_user_devices_proto_rawDesc = []byte{ @@ -1939,131 +1847,112 @@ var file_pkg_grpc_user_devices_proto_rawDesc = []byte{ 0x36, 0x0a, 0x24, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x8d, 0x01, 0x0a, 0x28, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x53, 0x79, 0x6e, 0x74, 0x68, 0x65, 0x74, 0x69, 0x63, 0x44, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x61, 0x0a, 0x13, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, - 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x30, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x53, 0x79, 0x6e, 0x74, 0x68, 0x65, 0x74, 0x69, 0x63, 0x44, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x52, 0x12, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x67, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x76, 0x0a, 0x27, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x53, 0x79, 0x6e, 0x74, 0x68, 0x65, 0x74, 0x69, 0x63, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x75, 0x73, 0x65, 0x72, - 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e, 0x74, 0x65, - 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, - 0x63, 0x0a, 0x28, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x79, 0x6e, 0x74, 0x68, 0x65, 0x74, - 0x69, 0x63, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x18, 0x69, - 0x6d, 0x70, 0x61, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x69, - 0x6d, 0x70, 0x61, 0x63, 0x74, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x49, 0x64, 0x73, 0x32, 0x97, 0x0c, 0x0a, 0x11, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x43, 0x0a, 0x0d, 0x47, 0x65, - 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x1d, 0x2e, 0x64, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, - 0x55, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x42, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x64, 0x12, 0x26, 0x2e, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x42, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x13, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, - 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x4d, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, - 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x79, 0x56, 0x49, 0x4e, 0x12, 0x22, 0x2e, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x42, 0x79, 0x56, 0x49, 0x4e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x13, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x55, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, - 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x79, 0x45, 0x74, 0x68, 0x41, 0x64, 0x64, 0x72, 0x12, - 0x26, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, - 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x79, 0x45, 0x74, 0x68, 0x41, 0x64, 0x64, 0x72, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x69, 0x0a, 0x16, - 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x46, - 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x12, 0x26, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, - 0x46, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, - 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, - 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x46, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x66, 0x0a, 0x15, 0x41, 0x70, 0x70, 0x6c, 0x79, - 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x12, 0x25, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x79, - 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x73, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x71, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x42, 0x79, 0x41, 0x75, 0x74, 0x6f, 0x50, 0x49, 0x55, 0x6e, 0x69, 0x74, 0x49, 0x64, 0x12, 0x2b, - 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, - 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x79, 0x41, 0x75, 0x74, 0x6f, 0x50, 0x49, 0x55, 0x6e, - 0x69, 0x74, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x64, 0x65, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x6f, 0x0a, 0x20, 0x53, 0x74, 0x6f, 0x70, 0x55, + 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x75, + 0x73, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, + 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x67, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x32, 0xec, 0x0b, 0x0a, 0x11, 0x55, 0x73, 0x65, + 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x43, + 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, + 0x1d, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, + 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, + 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x12, 0x55, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x42, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x64, 0x12, 0x26, 0x2e, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x49, 0x64, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, + 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x4d, 0x0a, 0x12, 0x47, 0x65, + 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x79, 0x56, 0x49, 0x4e, + 0x12, 0x22, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, + 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x79, 0x56, 0x49, 0x4e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x55, + 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x55, 0x0a, 0x16, 0x47, 0x65, 0x74, + 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x79, 0x45, 0x74, 0x68, 0x41, + 0x64, 0x64, 0x72, 0x12, 0x26, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, + 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x79, 0x45, 0x74, 0x68, + 0x41, 0x64, 0x64, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x41, 0x75, 0x74, 0x6f, 0x50, 0x49, 0x55, 0x6e, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x52, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, - 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x73, 0x47, 0x72, 0x6f, 0x77, 0x74, 0x68, 0x12, 0x16, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1e, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, - 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x73, - 0x47, 0x72, 0x6f, 0x77, 0x74, 0x68, 0x12, 0x51, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x72, 0x0a, 0x19, 0x52, 0x65, 0x67, - 0x69, 0x73, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x46, - 0x72, 0x6f, 0x6d, 0x56, 0x49, 0x4e, 0x12, 0x29, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, - 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x56, 0x49, 0x4e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2a, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x67, 0x69, - 0x73, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x46, 0x72, - 0x6f, 0x6d, 0x56, 0x49, 0x4e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x63, 0x0a, - 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x74, - 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2d, - 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, - 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x12, 0x4b, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x55, 0x73, 0x65, 0x72, - 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x20, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, - 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x30, 0x01, 0x12, - 0x5d, 0x0a, 0x12, 0x49, 0x73, 0x73, 0x75, 0x65, 0x56, 0x69, 0x6e, 0x43, 0x72, 0x65, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x22, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, - 0x49, 0x73, 0x73, 0x75, 0x65, 0x56, 0x69, 0x6e, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x64, 0x65, 0x76, 0x69, + 0x12, 0x69, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x73, 0x46, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x12, 0x26, 0x2e, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x73, 0x46, 0x6f, 0x72, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x46, 0x6f, 0x72, 0x55, + 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x66, 0x0a, 0x15, 0x41, + 0x70, 0x70, 0x6c, 0x79, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x12, 0x25, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x41, + 0x70, 0x70, 0x6c, 0x79, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x64, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x48, 0x61, 0x72, 0x64, 0x77, + 0x61, 0x72, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x71, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x42, 0x79, 0x41, 0x75, 0x74, 0x6f, 0x50, 0x49, 0x55, 0x6e, 0x69, 0x74, + 0x49, 0x64, 0x12, 0x2b, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, + 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x79, 0x41, 0x75, 0x74, 0x6f, + 0x50, 0x49, 0x55, 0x6e, 0x69, 0x74, 0x49, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x25, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x50, 0x49, 0x55, 0x6e, 0x69, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, + 0x69, 0x6d, 0x65, 0x64, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x73, 0x47, 0x72, 0x6f, 0x77, + 0x74, 0x68, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1e, 0x2e, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x56, 0x65, 0x68, 0x69, + 0x63, 0x6c, 0x65, 0x73, 0x47, 0x72, 0x6f, 0x77, 0x74, 0x68, 0x12, 0x51, 0x0a, 0x0e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x2e, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x72, 0x0a, + 0x19, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x56, 0x49, 0x4e, 0x12, 0x29, 0x2e, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, + 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x56, 0x49, 0x4e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, + 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x56, 0x49, 0x4e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x63, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x2d, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x13, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x4b, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, + 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x20, 0x2e, 0x64, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x64, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x30, 0x01, 0x12, 0x5d, 0x0a, 0x12, 0x49, 0x73, 0x73, 0x75, 0x65, 0x56, 0x69, 0x6e, 0x43, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x22, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x56, 0x69, 0x6e, 0x43, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, - 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x28, 0x2e, 0x64, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x44, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x65, 0x0a, 0x1c, - 0x43, 0x6c, 0x65, 0x61, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 0x16, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x2d, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x43, - 0x6c, 0x65, 0x61, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x88, 0x01, 0x0a, 0x20, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x79, - 0x6e, 0x74, 0x68, 0x65, 0x74, 0x69, 0x63, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x74, - 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x79, 0x6e, 0x74, 0x68, 0x65, 0x74, - 0x69, 0x63, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x64, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x79, 0x6e, 0x74, - 0x68, 0x65, 0x74, 0x69, 0x63, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x67, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x2e, - 0x5a, 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x49, 0x4d, - 0x4f, 0x2d, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x73, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x56, 0x69, 0x6e, + 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x28, + 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, + 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x12, 0x65, 0x0a, 0x1c, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, + 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x2d, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x73, 0x2e, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5e, 0x0a, 0x19, 0x53, 0x74, 0x6f, 0x70, 0x55, + 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x53, + 0x74, 0x6f, 0x70, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x74, + 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x42, 0x2e, 0x5a, 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x49, 0x4d, 0x4f, 0x2d, 0x4e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x2f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x70, + 0x6b, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2078,87 +1967,84 @@ func file_pkg_grpc_user_devices_proto_rawDescGZIP() []byte { return file_pkg_grpc_user_devices_proto_rawDescData } -var file_pkg_grpc_user_devices_proto_msgTypes = make([]protoimpl.MessageInfo, 28) +var file_pkg_grpc_user_devices_proto_msgTypes = make([]protoimpl.MessageInfo, 26) var file_pkg_grpc_user_devices_proto_goTypes = []interface{}{ - (*GetUserDeviceByAutoPIUnitIdRequest)(nil), // 0: devices.GetUserDeviceByAutoPIUnitIdRequest - (*GetUserDeviceRequest)(nil), // 1: devices.GetUserDeviceRequest - (*GetUserDeviceByVINRequest)(nil), // 2: devices.GetUserDeviceByVINRequest - (*GetUserDeviceByEthAddrRequest)(nil), // 3: devices.GetUserDeviceByEthAddrRequest - (*GetUserDeviceByTokenIdRequest)(nil), // 4: devices.GetUserDeviceByTokenIdRequest - (*UpdateUserDeviceMetadataRequest)(nil), // 5: devices.UpdateUserDeviceMetadataRequest - (*UserDevice)(nil), // 6: devices.UserDevice - (*SyntheticDevice)(nil), // 7: devices.SyntheticDevice - (*UserDeviceIntegration)(nil), // 8: devices.UserDeviceIntegration - (*UserDeviceAutoPIUnitResponse)(nil), // 9: devices.UserDeviceAutoPIUnitResponse - (*ListUserDevicesForUserRequest)(nil), // 10: devices.ListUserDevicesForUserRequest - (*ListUserDevicesForUserResponse)(nil), // 11: devices.ListUserDevicesForUserResponse - (*ApplyHardwareTemplateRequest)(nil), // 12: devices.ApplyHardwareTemplateRequest - (*ApplyHardwareTemplateResponse)(nil), // 13: devices.ApplyHardwareTemplateResponse - (*ClaimedVehiclesGrowth)(nil), // 14: devices.ClaimedVehiclesGrowth - (*CreateTemplateRequest)(nil), // 15: devices.CreateTemplateRequest - (*CreateTemplateResponse)(nil), // 16: devices.CreateTemplateResponse - (*RegisterUserDeviceFromVINRequest)(nil), // 17: devices.RegisterUserDeviceFromVINRequest - (*RegisterUserDeviceFromVINResponse)(nil), // 18: devices.RegisterUserDeviceFromVINResponse - (*VinCredential)(nil), // 19: devices.VinCredential - (*UpdateDeviceIntegrationStatusRequest)(nil), // 20: devices.UpdateDeviceIntegrationStatusRequest - (*IssueVinCredentialRequest)(nil), // 21: devices.IssueVinCredentialRequest - (*IssueVinCredentialResponse)(nil), // 22: devices.IssueVinCredentialResponse - (*GetAllUserDeviceRequest)(nil), // 23: devices.GetAllUserDeviceRequest - (*ClearMetaTransactionRequestsResponse)(nil), // 24: devices.ClearMetaTransactionRequestsResponse - (*DeleteSyntheticDeviceIntegrationsRequest)(nil), // 25: devices.DeleteSyntheticDeviceIntegrationsRequest - (*DeleteSyntheticDeviceIntegrationRequest)(nil), // 26: devices.DeleteSyntheticDeviceIntegrationRequest - (*DeleteSyntheticDeviceIntegrationResponse)(nil), // 27: devices.DeleteSyntheticDeviceIntegrationResponse - (*timestamppb.Timestamp)(nil), // 28: google.protobuf.Timestamp - (*AftermarketDevice)(nil), // 29: devices.AftermarketDevice - (*emptypb.Empty)(nil), // 30: google.protobuf.Empty + (*GetUserDeviceByAutoPIUnitIdRequest)(nil), // 0: devices.GetUserDeviceByAutoPIUnitIdRequest + (*GetUserDeviceRequest)(nil), // 1: devices.GetUserDeviceRequest + (*GetUserDeviceByVINRequest)(nil), // 2: devices.GetUserDeviceByVINRequest + (*GetUserDeviceByEthAddrRequest)(nil), // 3: devices.GetUserDeviceByEthAddrRequest + (*GetUserDeviceByTokenIdRequest)(nil), // 4: devices.GetUserDeviceByTokenIdRequest + (*UpdateUserDeviceMetadataRequest)(nil), // 5: devices.UpdateUserDeviceMetadataRequest + (*UserDevice)(nil), // 6: devices.UserDevice + (*SyntheticDevice)(nil), // 7: devices.SyntheticDevice + (*UserDeviceIntegration)(nil), // 8: devices.UserDeviceIntegration + (*UserDeviceAutoPIUnitResponse)(nil), // 9: devices.UserDeviceAutoPIUnitResponse + (*ListUserDevicesForUserRequest)(nil), // 10: devices.ListUserDevicesForUserRequest + (*ListUserDevicesForUserResponse)(nil), // 11: devices.ListUserDevicesForUserResponse + (*ApplyHardwareTemplateRequest)(nil), // 12: devices.ApplyHardwareTemplateRequest + (*ApplyHardwareTemplateResponse)(nil), // 13: devices.ApplyHardwareTemplateResponse + (*ClaimedVehiclesGrowth)(nil), // 14: devices.ClaimedVehiclesGrowth + (*CreateTemplateRequest)(nil), // 15: devices.CreateTemplateRequest + (*CreateTemplateResponse)(nil), // 16: devices.CreateTemplateResponse + (*RegisterUserDeviceFromVINRequest)(nil), // 17: devices.RegisterUserDeviceFromVINRequest + (*RegisterUserDeviceFromVINResponse)(nil), // 18: devices.RegisterUserDeviceFromVINResponse + (*VinCredential)(nil), // 19: devices.VinCredential + (*UpdateDeviceIntegrationStatusRequest)(nil), // 20: devices.UpdateDeviceIntegrationStatusRequest + (*IssueVinCredentialRequest)(nil), // 21: devices.IssueVinCredentialRequest + (*IssueVinCredentialResponse)(nil), // 22: devices.IssueVinCredentialResponse + (*GetAllUserDeviceRequest)(nil), // 23: devices.GetAllUserDeviceRequest + (*ClearMetaTransactionRequestsResponse)(nil), // 24: devices.ClearMetaTransactionRequestsResponse + (*StopUserDeviceIntegrationRequest)(nil), // 25: devices.StopUserDeviceIntegrationRequest + (*timestamppb.Timestamp)(nil), // 26: google.protobuf.Timestamp + (*AftermarketDevice)(nil), // 27: devices.AftermarketDevice + (*emptypb.Empty)(nil), // 28: google.protobuf.Empty } var file_pkg_grpc_user_devices_proto_depIdxs = []int32{ - 28, // 0: devices.UserDevice.opted_in_at:type_name -> google.protobuf.Timestamp + 26, // 0: devices.UserDevice.opted_in_at:type_name -> google.protobuf.Timestamp 8, // 1: devices.UserDevice.integrations:type_name -> devices.UserDeviceIntegration 19, // 2: devices.UserDevice.latest_vin_credential:type_name -> devices.VinCredential - 29, // 3: devices.UserDevice.aftermarket_device:type_name -> devices.AftermarketDevice + 27, // 3: devices.UserDevice.aftermarket_device:type_name -> devices.AftermarketDevice 7, // 4: devices.UserDevice.syntheticDevice:type_name -> devices.SyntheticDevice 6, // 5: devices.ListUserDevicesForUserResponse.user_devices:type_name -> devices.UserDevice - 28, // 6: devices.VinCredential.expiration:type_name -> google.protobuf.Timestamp - 28, // 7: devices.IssueVinCredentialRequest.expires_at:type_name -> google.protobuf.Timestamp - 26, // 8: devices.DeleteSyntheticDeviceIntegrationsRequest.device_integrations:type_name -> devices.DeleteSyntheticDeviceIntegrationRequest - 1, // 9: devices.UserDeviceService.GetUserDevice:input_type -> devices.GetUserDeviceRequest - 4, // 10: devices.UserDeviceService.GetUserDeviceByTokenId:input_type -> devices.GetUserDeviceByTokenIdRequest - 2, // 11: devices.UserDeviceService.GetUserDeviceByVIN:input_type -> devices.GetUserDeviceByVINRequest - 3, // 12: devices.UserDeviceService.GetUserDeviceByEthAddr:input_type -> devices.GetUserDeviceByEthAddrRequest - 10, // 13: devices.UserDeviceService.ListUserDevicesForUser:input_type -> devices.ListUserDevicesForUserRequest - 12, // 14: devices.UserDeviceService.ApplyHardwareTemplate:input_type -> devices.ApplyHardwareTemplateRequest - 0, // 15: devices.UserDeviceService.GetUserDeviceByAutoPIUnitId:input_type -> devices.GetUserDeviceByAutoPIUnitIdRequest - 30, // 16: devices.UserDeviceService.GetClaimedVehiclesGrowth:input_type -> google.protobuf.Empty - 15, // 17: devices.UserDeviceService.CreateTemplate:input_type -> devices.CreateTemplateRequest - 17, // 18: devices.UserDeviceService.RegisterUserDeviceFromVIN:input_type -> devices.RegisterUserDeviceFromVINRequest - 20, // 19: devices.UserDeviceService.UpdateDeviceIntegrationStatus:input_type -> devices.UpdateDeviceIntegrationStatusRequest - 23, // 20: devices.UserDeviceService.GetAllUserDevice:input_type -> devices.GetAllUserDeviceRequest - 21, // 21: devices.UserDeviceService.IssueVinCredential:input_type -> devices.IssueVinCredentialRequest - 5, // 22: devices.UserDeviceService.UpdateUserDeviceMetadata:input_type -> devices.UpdateUserDeviceMetadataRequest - 30, // 23: devices.UserDeviceService.ClearMetaTransactionRequests:input_type -> google.protobuf.Empty - 25, // 24: devices.UserDeviceService.DeleteSyntheticDeviceIntegration:input_type -> devices.DeleteSyntheticDeviceIntegrationsRequest - 6, // 25: devices.UserDeviceService.GetUserDevice:output_type -> devices.UserDevice - 6, // 26: devices.UserDeviceService.GetUserDeviceByTokenId:output_type -> devices.UserDevice - 6, // 27: devices.UserDeviceService.GetUserDeviceByVIN:output_type -> devices.UserDevice - 6, // 28: devices.UserDeviceService.GetUserDeviceByEthAddr:output_type -> devices.UserDevice - 11, // 29: devices.UserDeviceService.ListUserDevicesForUser:output_type -> devices.ListUserDevicesForUserResponse - 13, // 30: devices.UserDeviceService.ApplyHardwareTemplate:output_type -> devices.ApplyHardwareTemplateResponse - 9, // 31: devices.UserDeviceService.GetUserDeviceByAutoPIUnitId:output_type -> devices.UserDeviceAutoPIUnitResponse - 14, // 32: devices.UserDeviceService.GetClaimedVehiclesGrowth:output_type -> devices.ClaimedVehiclesGrowth - 16, // 33: devices.UserDeviceService.CreateTemplate:output_type -> devices.CreateTemplateResponse - 18, // 34: devices.UserDeviceService.RegisterUserDeviceFromVIN:output_type -> devices.RegisterUserDeviceFromVINResponse - 6, // 35: devices.UserDeviceService.UpdateDeviceIntegrationStatus:output_type -> devices.UserDevice - 6, // 36: devices.UserDeviceService.GetAllUserDevice:output_type -> devices.UserDevice - 22, // 37: devices.UserDeviceService.IssueVinCredential:output_type -> devices.IssueVinCredentialResponse - 30, // 38: devices.UserDeviceService.UpdateUserDeviceMetadata:output_type -> google.protobuf.Empty - 24, // 39: devices.UserDeviceService.ClearMetaTransactionRequests:output_type -> devices.ClearMetaTransactionRequestsResponse - 27, // 40: devices.UserDeviceService.DeleteSyntheticDeviceIntegration:output_type -> devices.DeleteSyntheticDeviceIntegrationResponse - 25, // [25:41] is the sub-list for method output_type - 9, // [9:25] is the sub-list for method input_type - 9, // [9:9] is the sub-list for extension type_name - 9, // [9:9] is the sub-list for extension extendee - 0, // [0:9] is the sub-list for field type_name + 26, // 6: devices.VinCredential.expiration:type_name -> google.protobuf.Timestamp + 26, // 7: devices.IssueVinCredentialRequest.expires_at:type_name -> google.protobuf.Timestamp + 1, // 8: devices.UserDeviceService.GetUserDevice:input_type -> devices.GetUserDeviceRequest + 4, // 9: devices.UserDeviceService.GetUserDeviceByTokenId:input_type -> devices.GetUserDeviceByTokenIdRequest + 2, // 10: devices.UserDeviceService.GetUserDeviceByVIN:input_type -> devices.GetUserDeviceByVINRequest + 3, // 11: devices.UserDeviceService.GetUserDeviceByEthAddr:input_type -> devices.GetUserDeviceByEthAddrRequest + 10, // 12: devices.UserDeviceService.ListUserDevicesForUser:input_type -> devices.ListUserDevicesForUserRequest + 12, // 13: devices.UserDeviceService.ApplyHardwareTemplate:input_type -> devices.ApplyHardwareTemplateRequest + 0, // 14: devices.UserDeviceService.GetUserDeviceByAutoPIUnitId:input_type -> devices.GetUserDeviceByAutoPIUnitIdRequest + 28, // 15: devices.UserDeviceService.GetClaimedVehiclesGrowth:input_type -> google.protobuf.Empty + 15, // 16: devices.UserDeviceService.CreateTemplate:input_type -> devices.CreateTemplateRequest + 17, // 17: devices.UserDeviceService.RegisterUserDeviceFromVIN:input_type -> devices.RegisterUserDeviceFromVINRequest + 20, // 18: devices.UserDeviceService.UpdateDeviceIntegrationStatus:input_type -> devices.UpdateDeviceIntegrationStatusRequest + 23, // 19: devices.UserDeviceService.GetAllUserDevice:input_type -> devices.GetAllUserDeviceRequest + 21, // 20: devices.UserDeviceService.IssueVinCredential:input_type -> devices.IssueVinCredentialRequest + 5, // 21: devices.UserDeviceService.UpdateUserDeviceMetadata:input_type -> devices.UpdateUserDeviceMetadataRequest + 28, // 22: devices.UserDeviceService.ClearMetaTransactionRequests:input_type -> google.protobuf.Empty + 25, // 23: devices.UserDeviceService.StopUserDeviceIntegration:input_type -> devices.StopUserDeviceIntegrationRequest + 6, // 24: devices.UserDeviceService.GetUserDevice:output_type -> devices.UserDevice + 6, // 25: devices.UserDeviceService.GetUserDeviceByTokenId:output_type -> devices.UserDevice + 6, // 26: devices.UserDeviceService.GetUserDeviceByVIN:output_type -> devices.UserDevice + 6, // 27: devices.UserDeviceService.GetUserDeviceByEthAddr:output_type -> devices.UserDevice + 11, // 28: devices.UserDeviceService.ListUserDevicesForUser:output_type -> devices.ListUserDevicesForUserResponse + 13, // 29: devices.UserDeviceService.ApplyHardwareTemplate:output_type -> devices.ApplyHardwareTemplateResponse + 9, // 30: devices.UserDeviceService.GetUserDeviceByAutoPIUnitId:output_type -> devices.UserDeviceAutoPIUnitResponse + 14, // 31: devices.UserDeviceService.GetClaimedVehiclesGrowth:output_type -> devices.ClaimedVehiclesGrowth + 16, // 32: devices.UserDeviceService.CreateTemplate:output_type -> devices.CreateTemplateResponse + 18, // 33: devices.UserDeviceService.RegisterUserDeviceFromVIN:output_type -> devices.RegisterUserDeviceFromVINResponse + 6, // 34: devices.UserDeviceService.UpdateDeviceIntegrationStatus:output_type -> devices.UserDevice + 6, // 35: devices.UserDeviceService.GetAllUserDevice:output_type -> devices.UserDevice + 22, // 36: devices.UserDeviceService.IssueVinCredential:output_type -> devices.IssueVinCredentialResponse + 28, // 37: devices.UserDeviceService.UpdateUserDeviceMetadata:output_type -> google.protobuf.Empty + 24, // 38: devices.UserDeviceService.ClearMetaTransactionRequests:output_type -> devices.ClearMetaTransactionRequestsResponse + 28, // 39: devices.UserDeviceService.StopUserDeviceIntegration:output_type -> google.protobuf.Empty + 24, // [24:40] is the sub-list for method output_type + 8, // [8:24] is the sub-list for method input_type + 8, // [8:8] is the sub-list for extension type_name + 8, // [8:8] is the sub-list for extension extendee + 0, // [0:8] is the sub-list for field type_name } func init() { file_pkg_grpc_user_devices_proto_init() } @@ -2469,31 +2355,7 @@ func file_pkg_grpc_user_devices_proto_init() { } } file_pkg_grpc_user_devices_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteSyntheticDeviceIntegrationsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_pkg_grpc_user_devices_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteSyntheticDeviceIntegrationRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_pkg_grpc_user_devices_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteSyntheticDeviceIntegrationResponse); i { + switch v := v.(*StopUserDeviceIntegrationRequest); i { case 0: return &v.state case 1: @@ -2513,7 +2375,7 @@ func file_pkg_grpc_user_devices_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_pkg_grpc_user_devices_proto_rawDesc, NumEnums: 0, - NumMessages: 28, + NumMessages: 26, NumExtensions: 0, NumServices: 1, }, diff --git a/pkg/grpc/user_devices.proto b/pkg/grpc/user_devices.proto index 0ea325114..36a60565f 100644 --- a/pkg/grpc/user_devices.proto +++ b/pkg/grpc/user_devices.proto @@ -33,7 +33,7 @@ service UserDeviceService { // used to update metadata properties, currently only ones needed by valuations-api rpc UpdateUserDeviceMetadata(UpdateUserDeviceMetadataRequest) returns (google.protobuf.Empty); rpc ClearMetaTransactionRequests(google.protobuf.Empty) returns (ClearMetaTransactionRequestsResponse); - rpc DeleteSyntheticDeviceIntegration(DeleteSyntheticDeviceIntegrationsRequest) returns (DeleteSyntheticDeviceIntegrationResponse); + rpc StopUserDeviceIntegration(StopUserDeviceIntegrationRequest) returns (google.protobuf.Empty); } message GetUserDeviceByAutoPIUnitIdRequest { string id = 1; } @@ -167,15 +167,7 @@ message ClearMetaTransactionRequestsResponse { string id = 1; } -message DeleteSyntheticDeviceIntegrationsRequest { - repeated DeleteSyntheticDeviceIntegrationRequest device_integrations = 1; -} - -message DeleteSyntheticDeviceIntegrationRequest { +message StopUserDeviceIntegrationRequest { string user_device_id = 1; string integration_id = 2; -} - -message DeleteSyntheticDeviceIntegrationResponse { - repeated string impacted_user_device_ids = 1; } \ No newline at end of file diff --git a/pkg/grpc/user_devices_grpc.pb.go b/pkg/grpc/user_devices_grpc.pb.go index c80d7c483..a30945169 100644 --- a/pkg/grpc/user_devices_grpc.pb.go +++ b/pkg/grpc/user_devices_grpc.pb.go @@ -2,6 +2,7 @@ // versions: // - protoc-gen-go-grpc v1.3.0 // - protoc v4.25.3 +// - protoc v4.25.3 // source: pkg/grpc/user_devices.proto package grpc @@ -20,22 +21,22 @@ import ( const _ = grpc.SupportPackageIsVersion7 const ( - UserDeviceService_GetUserDevice_FullMethodName = "/devices.UserDeviceService/GetUserDevice" - UserDeviceService_GetUserDeviceByTokenId_FullMethodName = "/devices.UserDeviceService/GetUserDeviceByTokenId" - UserDeviceService_GetUserDeviceByVIN_FullMethodName = "/devices.UserDeviceService/GetUserDeviceByVIN" - UserDeviceService_GetUserDeviceByEthAddr_FullMethodName = "/devices.UserDeviceService/GetUserDeviceByEthAddr" - UserDeviceService_ListUserDevicesForUser_FullMethodName = "/devices.UserDeviceService/ListUserDevicesForUser" - UserDeviceService_ApplyHardwareTemplate_FullMethodName = "/devices.UserDeviceService/ApplyHardwareTemplate" - UserDeviceService_GetUserDeviceByAutoPIUnitId_FullMethodName = "/devices.UserDeviceService/GetUserDeviceByAutoPIUnitId" - UserDeviceService_GetClaimedVehiclesGrowth_FullMethodName = "/devices.UserDeviceService/GetClaimedVehiclesGrowth" - UserDeviceService_CreateTemplate_FullMethodName = "/devices.UserDeviceService/CreateTemplate" - UserDeviceService_RegisterUserDeviceFromVIN_FullMethodName = "/devices.UserDeviceService/RegisterUserDeviceFromVIN" - UserDeviceService_UpdateDeviceIntegrationStatus_FullMethodName = "/devices.UserDeviceService/UpdateDeviceIntegrationStatus" - UserDeviceService_GetAllUserDevice_FullMethodName = "/devices.UserDeviceService/GetAllUserDevice" - UserDeviceService_IssueVinCredential_FullMethodName = "/devices.UserDeviceService/IssueVinCredential" - UserDeviceService_UpdateUserDeviceMetadata_FullMethodName = "/devices.UserDeviceService/UpdateUserDeviceMetadata" - UserDeviceService_ClearMetaTransactionRequests_FullMethodName = "/devices.UserDeviceService/ClearMetaTransactionRequests" - UserDeviceService_DeleteSyntheticDeviceIntegration_FullMethodName = "/devices.UserDeviceService/DeleteSyntheticDeviceIntegration" + UserDeviceService_GetUserDevice_FullMethodName = "/devices.UserDeviceService/GetUserDevice" + UserDeviceService_GetUserDeviceByTokenId_FullMethodName = "/devices.UserDeviceService/GetUserDeviceByTokenId" + UserDeviceService_GetUserDeviceByVIN_FullMethodName = "/devices.UserDeviceService/GetUserDeviceByVIN" + UserDeviceService_GetUserDeviceByEthAddr_FullMethodName = "/devices.UserDeviceService/GetUserDeviceByEthAddr" + UserDeviceService_ListUserDevicesForUser_FullMethodName = "/devices.UserDeviceService/ListUserDevicesForUser" + UserDeviceService_ApplyHardwareTemplate_FullMethodName = "/devices.UserDeviceService/ApplyHardwareTemplate" + UserDeviceService_GetUserDeviceByAutoPIUnitId_FullMethodName = "/devices.UserDeviceService/GetUserDeviceByAutoPIUnitId" + UserDeviceService_GetClaimedVehiclesGrowth_FullMethodName = "/devices.UserDeviceService/GetClaimedVehiclesGrowth" + UserDeviceService_CreateTemplate_FullMethodName = "/devices.UserDeviceService/CreateTemplate" + UserDeviceService_RegisterUserDeviceFromVIN_FullMethodName = "/devices.UserDeviceService/RegisterUserDeviceFromVIN" + UserDeviceService_UpdateDeviceIntegrationStatus_FullMethodName = "/devices.UserDeviceService/UpdateDeviceIntegrationStatus" + UserDeviceService_GetAllUserDevice_FullMethodName = "/devices.UserDeviceService/GetAllUserDevice" + UserDeviceService_IssueVinCredential_FullMethodName = "/devices.UserDeviceService/IssueVinCredential" + UserDeviceService_UpdateUserDeviceMetadata_FullMethodName = "/devices.UserDeviceService/UpdateUserDeviceMetadata" + UserDeviceService_ClearMetaTransactionRequests_FullMethodName = "/devices.UserDeviceService/ClearMetaTransactionRequests" + UserDeviceService_StopUserDeviceIntegration_FullMethodName = "/devices.UserDeviceService/StopUserDeviceIntegration" ) // UserDeviceServiceClient is the client API for UserDeviceService service. @@ -58,7 +59,7 @@ type UserDeviceServiceClient interface { // used to update metadata properties, currently only ones needed by valuations-api UpdateUserDeviceMetadata(ctx context.Context, in *UpdateUserDeviceMetadataRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) ClearMetaTransactionRequests(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*ClearMetaTransactionRequestsResponse, error) - DeleteSyntheticDeviceIntegration(ctx context.Context, in *DeleteSyntheticDeviceIntegrationsRequest, opts ...grpc.CallOption) (*DeleteSyntheticDeviceIntegrationResponse, error) + StopUserDeviceIntegration(ctx context.Context, in *StopUserDeviceIntegrationRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) } type userDeviceServiceClient struct { @@ -227,9 +228,9 @@ func (c *userDeviceServiceClient) ClearMetaTransactionRequests(ctx context.Conte return out, nil } -func (c *userDeviceServiceClient) DeleteSyntheticDeviceIntegration(ctx context.Context, in *DeleteSyntheticDeviceIntegrationsRequest, opts ...grpc.CallOption) (*DeleteSyntheticDeviceIntegrationResponse, error) { - out := new(DeleteSyntheticDeviceIntegrationResponse) - err := c.cc.Invoke(ctx, UserDeviceService_DeleteSyntheticDeviceIntegration_FullMethodName, in, out, opts...) +func (c *userDeviceServiceClient) StopUserDeviceIntegration(ctx context.Context, in *StopUserDeviceIntegrationRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, UserDeviceService_StopUserDeviceIntegration_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -256,7 +257,7 @@ type UserDeviceServiceServer interface { // used to update metadata properties, currently only ones needed by valuations-api UpdateUserDeviceMetadata(context.Context, *UpdateUserDeviceMetadataRequest) (*emptypb.Empty, error) ClearMetaTransactionRequests(context.Context, *emptypb.Empty) (*ClearMetaTransactionRequestsResponse, error) - DeleteSyntheticDeviceIntegration(context.Context, *DeleteSyntheticDeviceIntegrationsRequest) (*DeleteSyntheticDeviceIntegrationResponse, error) + StopUserDeviceIntegration(context.Context, *StopUserDeviceIntegrationRequest) (*emptypb.Empty, error) mustEmbedUnimplementedUserDeviceServiceServer() } @@ -309,8 +310,8 @@ func (UnimplementedUserDeviceServiceServer) UpdateUserDeviceMetadata(context.Con func (UnimplementedUserDeviceServiceServer) ClearMetaTransactionRequests(context.Context, *emptypb.Empty) (*ClearMetaTransactionRequestsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ClearMetaTransactionRequests not implemented") } -func (UnimplementedUserDeviceServiceServer) DeleteSyntheticDeviceIntegration(context.Context, *DeleteSyntheticDeviceIntegrationsRequest) (*DeleteSyntheticDeviceIntegrationResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeleteSyntheticDeviceIntegration not implemented") +func (UnimplementedUserDeviceServiceServer) StopUserDeviceIntegration(context.Context, *StopUserDeviceIntegrationRequest) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method StopUserDeviceIntegration not implemented") } func (UnimplementedUserDeviceServiceServer) mustEmbedUnimplementedUserDeviceServiceServer() {} @@ -598,20 +599,20 @@ func _UserDeviceService_ClearMetaTransactionRequests_Handler(srv interface{}, ct return interceptor(ctx, in, info, handler) } -func _UserDeviceService_DeleteSyntheticDeviceIntegration_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteSyntheticDeviceIntegrationsRequest) +func _UserDeviceService_StopUserDeviceIntegration_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(StopUserDeviceIntegrationRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(UserDeviceServiceServer).DeleteSyntheticDeviceIntegration(ctx, in) + return srv.(UserDeviceServiceServer).StopUserDeviceIntegration(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: UserDeviceService_DeleteSyntheticDeviceIntegration_FullMethodName, + FullMethod: UserDeviceService_StopUserDeviceIntegration_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(UserDeviceServiceServer).DeleteSyntheticDeviceIntegration(ctx, req.(*DeleteSyntheticDeviceIntegrationsRequest)) + return srv.(UserDeviceServiceServer).StopUserDeviceIntegration(ctx, req.(*StopUserDeviceIntegrationRequest)) } return interceptor(ctx, in, info, handler) } @@ -680,8 +681,8 @@ var UserDeviceService_ServiceDesc = grpc.ServiceDesc{ Handler: _UserDeviceService_ClearMetaTransactionRequests_Handler, }, { - MethodName: "DeleteSyntheticDeviceIntegration", - Handler: _UserDeviceService_DeleteSyntheticDeviceIntegration_Handler, + MethodName: "StopUserDeviceIntegration", + Handler: _UserDeviceService_StopUserDeviceIntegration_Handler, }, }, Streams: []grpc.StreamDesc{