diff --git a/components/public-api/gitpod/v1/workspaces.proto b/components/public-api/gitpod/v1/workspaces.proto index 07279a19cd2ccf..60326ec53bb001 100644 --- a/components/public-api/gitpod/v1/workspaces.proto +++ b/components/public-api/gitpod/v1/workspaces.proto @@ -28,6 +28,11 @@ service WorkspacesService { // rpc GetActiveWorkspaceInstance(GetActiveWorkspaceInstanceRequest) returns (GetActiveWorkspaceInstanceResponse) {} + // GetWorkspaceInstanceOwnerToken returns the owner token of a workspace instance. + // Note: the owner token is not part of the workspace instance status so that we can scope its access on the + // API function level. + rpc GetWorkspaceInstanceOwnerToken(GetWorkspaceInstanceOwnerTokenRequest) returns (GetWorkspaceInstanceOwnerTokenResponse) {} + // ListenToWorkspaceInstance listens to workspace instance updates. rpc ListenToWorkspaceInstance(ListenToWorkspaceInstanceRequest) returns (stream ListenToWorkspaceInstanceResponse) {} @@ -108,6 +113,15 @@ message GetActiveWorkspaceInstanceResponse { WorkspaceInstance instance = 2; } +message GetWorkspaceInstanceOwnerTokenRequest { + string instance_id = 1; +} +message GetWorkspaceInstanceOwnerTokenResponse { + // Status status = 1; + + string owner_token = 2; +} + message ListenToWorkspaceInstanceRequest { string instance_id = 1; } @@ -223,8 +237,8 @@ message WorkspaceInstanceStatus { // URL contains the endpoint at which the workspace instance is available string url = 5; - // auth provides authentication information about the workspace. This info is primarily used by ws-proxy. - WorkspaceInstanceAuthentication auth = 6; + // Admission describes who can access a workspace instance and its ports. + AdmissionLevel admission = 6; // repo details the Git working copy status of the workspace. // Note: this is a best-effort field and more often than not will not be present. Its absence does not @@ -291,16 +305,7 @@ message WorkspaceInstanceConditions { optional bool stopped_by_request = 11; } -// WorkspaceInstanceAuthentication contains authentication information used to allow/deny access to -// workspaces and their ports. -message WorkspaceInstanceAuthentication { - // Admission describes who can access the workspace and its ports. - AdmissionLevel admission = 1; - - // Owner token is the token one needs to access the workspace. - string owner_token = 2; -} - +// Admission level describes who can access a workspace instance and its ports. enum AdmissionLevel { ADMISSION_LEVEL_UNSPECIFIED = 0; diff --git a/components/public-api/go/v1/workspaces.pb.go b/components/public-api/go/v1/workspaces.pb.go index dcb9faa5ff2c47..2a95da407f51b1 100644 --- a/components/public-api/go/v1/workspaces.pb.go +++ b/components/public-api/go/v1/workspaces.pb.go @@ -110,6 +110,7 @@ func (WorkspaceInstancePhase) EnumDescriptor() ([]byte, []int) { return file_gitpod_v1_workspaces_proto_rawDescGZIP(), []int{0} } +// Admission level describes who can access a workspace instance and its ports. type AdmissionLevel int32 const ( @@ -732,6 +733,100 @@ func (x *GetActiveWorkspaceInstanceResponse) GetInstance() *WorkspaceInstance { return nil } +type GetWorkspaceInstanceOwnerTokenRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + InstanceId string `protobuf:"bytes,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"` +} + +func (x *GetWorkspaceInstanceOwnerTokenRequest) Reset() { + *x = GetWorkspaceInstanceOwnerTokenRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_gitpod_v1_workspaces_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetWorkspaceInstanceOwnerTokenRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetWorkspaceInstanceOwnerTokenRequest) ProtoMessage() {} + +func (x *GetWorkspaceInstanceOwnerTokenRequest) ProtoReflect() protoreflect.Message { + mi := &file_gitpod_v1_workspaces_proto_msgTypes[10] + 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 GetWorkspaceInstanceOwnerTokenRequest.ProtoReflect.Descriptor instead. +func (*GetWorkspaceInstanceOwnerTokenRequest) Descriptor() ([]byte, []int) { + return file_gitpod_v1_workspaces_proto_rawDescGZIP(), []int{10} +} + +func (x *GetWorkspaceInstanceOwnerTokenRequest) GetInstanceId() string { + if x != nil { + return x.InstanceId + } + return "" +} + +type GetWorkspaceInstanceOwnerTokenResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OwnerToken string `protobuf:"bytes,2,opt,name=owner_token,json=ownerToken,proto3" json:"owner_token,omitempty"` +} + +func (x *GetWorkspaceInstanceOwnerTokenResponse) Reset() { + *x = GetWorkspaceInstanceOwnerTokenResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_gitpod_v1_workspaces_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetWorkspaceInstanceOwnerTokenResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetWorkspaceInstanceOwnerTokenResponse) ProtoMessage() {} + +func (x *GetWorkspaceInstanceOwnerTokenResponse) ProtoReflect() protoreflect.Message { + mi := &file_gitpod_v1_workspaces_proto_msgTypes[11] + 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 GetWorkspaceInstanceOwnerTokenResponse.ProtoReflect.Descriptor instead. +func (*GetWorkspaceInstanceOwnerTokenResponse) Descriptor() ([]byte, []int) { + return file_gitpod_v1_workspaces_proto_rawDescGZIP(), []int{11} +} + +func (x *GetWorkspaceInstanceOwnerTokenResponse) GetOwnerToken() string { + if x != nil { + return x.OwnerToken + } + return "" +} + type ListenToWorkspaceInstanceRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -743,7 +838,7 @@ type ListenToWorkspaceInstanceRequest struct { func (x *ListenToWorkspaceInstanceRequest) Reset() { *x = ListenToWorkspaceInstanceRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_workspaces_proto_msgTypes[10] + mi := &file_gitpod_v1_workspaces_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -756,7 +851,7 @@ func (x *ListenToWorkspaceInstanceRequest) String() string { func (*ListenToWorkspaceInstanceRequest) ProtoMessage() {} func (x *ListenToWorkspaceInstanceRequest) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_workspaces_proto_msgTypes[10] + mi := &file_gitpod_v1_workspaces_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -769,7 +864,7 @@ func (x *ListenToWorkspaceInstanceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListenToWorkspaceInstanceRequest.ProtoReflect.Descriptor instead. func (*ListenToWorkspaceInstanceRequest) Descriptor() ([]byte, []int) { - return file_gitpod_v1_workspaces_proto_rawDescGZIP(), []int{10} + return file_gitpod_v1_workspaces_proto_rawDescGZIP(), []int{12} } func (x *ListenToWorkspaceInstanceRequest) GetInstanceId() string { @@ -790,7 +885,7 @@ type ListenToWorkspaceInstanceResponse struct { func (x *ListenToWorkspaceInstanceResponse) Reset() { *x = ListenToWorkspaceInstanceResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_workspaces_proto_msgTypes[11] + mi := &file_gitpod_v1_workspaces_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -803,7 +898,7 @@ func (x *ListenToWorkspaceInstanceResponse) String() string { func (*ListenToWorkspaceInstanceResponse) ProtoMessage() {} func (x *ListenToWorkspaceInstanceResponse) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_workspaces_proto_msgTypes[11] + mi := &file_gitpod_v1_workspaces_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -816,7 +911,7 @@ func (x *ListenToWorkspaceInstanceResponse) ProtoReflect() protoreflect.Message // Deprecated: Use ListenToWorkspaceInstanceResponse.ProtoReflect.Descriptor instead. func (*ListenToWorkspaceInstanceResponse) Descriptor() ([]byte, []int) { - return file_gitpod_v1_workspaces_proto_rawDescGZIP(), []int{11} + return file_gitpod_v1_workspaces_proto_rawDescGZIP(), []int{13} } func (x *ListenToWorkspaceInstanceResponse) GetInstanceStatus() *WorkspaceInstanceStatus { @@ -837,7 +932,7 @@ type ListenToImageBuildLogsRequest struct { func (x *ListenToImageBuildLogsRequest) Reset() { *x = ListenToImageBuildLogsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_workspaces_proto_msgTypes[12] + mi := &file_gitpod_v1_workspaces_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -850,7 +945,7 @@ func (x *ListenToImageBuildLogsRequest) String() string { func (*ListenToImageBuildLogsRequest) ProtoMessage() {} func (x *ListenToImageBuildLogsRequest) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_workspaces_proto_msgTypes[12] + mi := &file_gitpod_v1_workspaces_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -863,7 +958,7 @@ func (x *ListenToImageBuildLogsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListenToImageBuildLogsRequest.ProtoReflect.Descriptor instead. func (*ListenToImageBuildLogsRequest) Descriptor() ([]byte, []int) { - return file_gitpod_v1_workspaces_proto_rawDescGZIP(), []int{12} + return file_gitpod_v1_workspaces_proto_rawDescGZIP(), []int{14} } func (x *ListenToImageBuildLogsRequest) GetInstanceId() string { @@ -884,7 +979,7 @@ type ListenToImageBuildLogsResponse struct { func (x *ListenToImageBuildLogsResponse) Reset() { *x = ListenToImageBuildLogsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_workspaces_proto_msgTypes[13] + mi := &file_gitpod_v1_workspaces_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -897,7 +992,7 @@ func (x *ListenToImageBuildLogsResponse) String() string { func (*ListenToImageBuildLogsResponse) ProtoMessage() {} func (x *ListenToImageBuildLogsResponse) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_workspaces_proto_msgTypes[13] + mi := &file_gitpod_v1_workspaces_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -910,7 +1005,7 @@ func (x *ListenToImageBuildLogsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListenToImageBuildLogsResponse.ProtoReflect.Descriptor instead. func (*ListenToImageBuildLogsResponse) Descriptor() ([]byte, []int) { - return file_gitpod_v1_workspaces_proto_rawDescGZIP(), []int{13} + return file_gitpod_v1_workspaces_proto_rawDescGZIP(), []int{15} } func (x *ListenToImageBuildLogsResponse) GetLine() string { @@ -932,7 +1027,7 @@ type StopWorkspaceRequest struct { func (x *StopWorkspaceRequest) Reset() { *x = StopWorkspaceRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_workspaces_proto_msgTypes[14] + mi := &file_gitpod_v1_workspaces_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -945,7 +1040,7 @@ func (x *StopWorkspaceRequest) String() string { func (*StopWorkspaceRequest) ProtoMessage() {} func (x *StopWorkspaceRequest) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_workspaces_proto_msgTypes[14] + mi := &file_gitpod_v1_workspaces_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -958,7 +1053,7 @@ func (x *StopWorkspaceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StopWorkspaceRequest.ProtoReflect.Descriptor instead. func (*StopWorkspaceRequest) Descriptor() ([]byte, []int) { - return file_gitpod_v1_workspaces_proto_rawDescGZIP(), []int{14} + return file_gitpod_v1_workspaces_proto_rawDescGZIP(), []int{16} } func (x *StopWorkspaceRequest) GetIdempotencyToken() string { @@ -984,7 +1079,7 @@ type StopWorkspaceResponse struct { func (x *StopWorkspaceResponse) Reset() { *x = StopWorkspaceResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_workspaces_proto_msgTypes[15] + mi := &file_gitpod_v1_workspaces_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -997,7 +1092,7 @@ func (x *StopWorkspaceResponse) String() string { func (*StopWorkspaceResponse) ProtoMessage() {} func (x *StopWorkspaceResponse) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_workspaces_proto_msgTypes[15] + mi := &file_gitpod_v1_workspaces_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1010,7 +1105,7 @@ func (x *StopWorkspaceResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use StopWorkspaceResponse.ProtoReflect.Descriptor instead. func (*StopWorkspaceResponse) Descriptor() ([]byte, []int) { - return file_gitpod_v1_workspaces_proto_rawDescGZIP(), []int{15} + return file_gitpod_v1_workspaces_proto_rawDescGZIP(), []int{17} } // Workspace describes a single workspace @@ -1034,7 +1129,7 @@ type Workspace struct { func (x *Workspace) Reset() { *x = Workspace{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_workspaces_proto_msgTypes[16] + mi := &file_gitpod_v1_workspaces_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1047,7 +1142,7 @@ func (x *Workspace) String() string { func (*Workspace) ProtoMessage() {} func (x *Workspace) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_workspaces_proto_msgTypes[16] + mi := &file_gitpod_v1_workspaces_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1060,7 +1155,7 @@ func (x *Workspace) ProtoReflect() protoreflect.Message { // Deprecated: Use Workspace.ProtoReflect.Descriptor instead. func (*Workspace) Descriptor() ([]byte, []int) { - return file_gitpod_v1_workspaces_proto_rawDescGZIP(), []int{16} + return file_gitpod_v1_workspaces_proto_rawDescGZIP(), []int{18} } func (x *Workspace) GetWorkspaceId() string { @@ -1117,7 +1212,7 @@ type WorkspaceContext struct { func (x *WorkspaceContext) Reset() { *x = WorkspaceContext{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_workspaces_proto_msgTypes[17] + mi := &file_gitpod_v1_workspaces_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1130,7 +1225,7 @@ func (x *WorkspaceContext) String() string { func (*WorkspaceContext) ProtoMessage() {} func (x *WorkspaceContext) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_workspaces_proto_msgTypes[17] + mi := &file_gitpod_v1_workspaces_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1143,7 +1238,7 @@ func (x *WorkspaceContext) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkspaceContext.ProtoReflect.Descriptor instead. func (*WorkspaceContext) Descriptor() ([]byte, []int) { - return file_gitpod_v1_workspaces_proto_rawDescGZIP(), []int{17} + return file_gitpod_v1_workspaces_proto_rawDescGZIP(), []int{19} } func (x *WorkspaceContext) GetContextUrl() string { @@ -1220,7 +1315,7 @@ type WorkspaceInstance struct { func (x *WorkspaceInstance) Reset() { *x = WorkspaceInstance{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_workspaces_proto_msgTypes[18] + mi := &file_gitpod_v1_workspaces_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1233,7 +1328,7 @@ func (x *WorkspaceInstance) String() string { func (*WorkspaceInstance) ProtoMessage() {} func (x *WorkspaceInstance) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_workspaces_proto_msgTypes[18] + mi := &file_gitpod_v1_workspaces_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1246,7 +1341,7 @@ func (x *WorkspaceInstance) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkspaceInstance.ProtoReflect.Descriptor instead. func (*WorkspaceInstance) Descriptor() ([]byte, []int) { - return file_gitpod_v1_workspaces_proto_rawDescGZIP(), []int{18} + return file_gitpod_v1_workspaces_proto_rawDescGZIP(), []int{20} } func (x *WorkspaceInstance) GetInstanceId() string { @@ -1297,14 +1392,14 @@ type WorkspaceInstanceStatus struct { Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"` // URL contains the endpoint at which the workspace instance is available Url string `protobuf:"bytes,5,opt,name=url,proto3" json:"url,omitempty"` - // auth provides authentication information about the workspace. This info is primarily used by ws-proxy. - Auth *WorkspaceInstanceAuthentication `protobuf:"bytes,6,opt,name=auth,proto3" json:"auth,omitempty"` + // Admission describes who can access a workspace instance and its ports. + Admission AdmissionLevel `protobuf:"varint,6,opt,name=admission,proto3,enum=gitpod.v1.AdmissionLevel" json:"admission,omitempty"` } func (x *WorkspaceInstanceStatus) Reset() { *x = WorkspaceInstanceStatus{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_workspaces_proto_msgTypes[19] + mi := &file_gitpod_v1_workspaces_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1317,7 +1412,7 @@ func (x *WorkspaceInstanceStatus) String() string { func (*WorkspaceInstanceStatus) ProtoMessage() {} func (x *WorkspaceInstanceStatus) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_workspaces_proto_msgTypes[19] + mi := &file_gitpod_v1_workspaces_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1330,7 +1425,7 @@ func (x *WorkspaceInstanceStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkspaceInstanceStatus.ProtoReflect.Descriptor instead. func (*WorkspaceInstanceStatus) Descriptor() ([]byte, []int) { - return file_gitpod_v1_workspaces_proto_rawDescGZIP(), []int{19} + return file_gitpod_v1_workspaces_proto_rawDescGZIP(), []int{21} } func (x *WorkspaceInstanceStatus) GetStatusVersion() uint64 { @@ -1368,11 +1463,11 @@ func (x *WorkspaceInstanceStatus) GetUrl() string { return "" } -func (x *WorkspaceInstanceStatus) GetAuth() *WorkspaceInstanceAuthentication { +func (x *WorkspaceInstanceStatus) GetAdmission() AdmissionLevel { if x != nil { - return x.Auth + return x.Admission } - return nil + return AdmissionLevel_ADMISSION_LEVEL_UNSPECIFIED } // WorkspaceInstanceConditions gives more detailed information as to the state of the workspace. Which condition actually @@ -1396,7 +1491,7 @@ type WorkspaceInstanceConditions struct { func (x *WorkspaceInstanceConditions) Reset() { *x = WorkspaceInstanceConditions{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_workspaces_proto_msgTypes[20] + mi := &file_gitpod_v1_workspaces_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1409,7 +1504,7 @@ func (x *WorkspaceInstanceConditions) String() string { func (*WorkspaceInstanceConditions) ProtoMessage() {} func (x *WorkspaceInstanceConditions) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_workspaces_proto_msgTypes[20] + mi := &file_gitpod_v1_workspaces_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1422,7 +1517,7 @@ func (x *WorkspaceInstanceConditions) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkspaceInstanceConditions.ProtoReflect.Descriptor instead. func (*WorkspaceInstanceConditions) Descriptor() ([]byte, []int) { - return file_gitpod_v1_workspaces_proto_rawDescGZIP(), []int{20} + return file_gitpod_v1_workspaces_proto_rawDescGZIP(), []int{22} } func (x *WorkspaceInstanceConditions) GetFailed() string { @@ -1453,65 +1548,6 @@ func (x *WorkspaceInstanceConditions) GetStoppedByRequest() bool { return false } -// WorkspaceInstanceAuthentication contains authentication information used to allow/deny access to -// workspaces and their ports. -type WorkspaceInstanceAuthentication struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Admission describes who can access the workspace and its ports. - Admission AdmissionLevel `protobuf:"varint,1,opt,name=admission,proto3,enum=gitpod.v1.AdmissionLevel" json:"admission,omitempty"` - // Owner token is the token one needs to access the workspace. - OwnerToken string `protobuf:"bytes,2,opt,name=owner_token,json=ownerToken,proto3" json:"owner_token,omitempty"` -} - -func (x *WorkspaceInstanceAuthentication) Reset() { - *x = WorkspaceInstanceAuthentication{} - if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_workspaces_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *WorkspaceInstanceAuthentication) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*WorkspaceInstanceAuthentication) ProtoMessage() {} - -func (x *WorkspaceInstanceAuthentication) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_workspaces_proto_msgTypes[21] - 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 WorkspaceInstanceAuthentication.ProtoReflect.Descriptor instead. -func (*WorkspaceInstanceAuthentication) Descriptor() ([]byte, []int) { - return file_gitpod_v1_workspaces_proto_rawDescGZIP(), []int{21} -} - -func (x *WorkspaceInstanceAuthentication) GetAdmission() AdmissionLevel { - if x != nil { - return x.Admission - } - return AdmissionLevel_ADMISSION_LEVEL_UNSPECIFIED -} - -func (x *WorkspaceInstanceAuthentication) GetOwnerToken() string { - if x != nil { - return x.OwnerToken - } - return "" -} - // StartWorkspaceSpec influences the workspace start type StartWorkspaceSpec struct { state protoimpl.MessageState @@ -1522,7 +1558,7 @@ type StartWorkspaceSpec struct { func (x *StartWorkspaceSpec) Reset() { *x = StartWorkspaceSpec{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_workspaces_proto_msgTypes[22] + mi := &file_gitpod_v1_workspaces_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1535,7 +1571,7 @@ func (x *StartWorkspaceSpec) String() string { func (*StartWorkspaceSpec) ProtoMessage() {} func (x *StartWorkspaceSpec) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_workspaces_proto_msgTypes[22] + mi := &file_gitpod_v1_workspaces_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1548,7 +1584,7 @@ func (x *StartWorkspaceSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use StartWorkspaceSpec.ProtoReflect.Descriptor instead. func (*StartWorkspaceSpec) Descriptor() ([]byte, []int) { - return file_gitpod_v1_workspaces_proto_rawDescGZIP(), []int{22} + return file_gitpod_v1_workspaces_proto_rawDescGZIP(), []int{23} } type ListWorkspacesResponse_WorkspaceAndInstance struct { @@ -1563,7 +1599,7 @@ type ListWorkspacesResponse_WorkspaceAndInstance struct { func (x *ListWorkspacesResponse_WorkspaceAndInstance) Reset() { *x = ListWorkspacesResponse_WorkspaceAndInstance{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_workspaces_proto_msgTypes[23] + mi := &file_gitpod_v1_workspaces_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1576,7 +1612,7 @@ func (x *ListWorkspacesResponse_WorkspaceAndInstance) String() string { func (*ListWorkspacesResponse_WorkspaceAndInstance) ProtoMessage() {} func (x *ListWorkspacesResponse_WorkspaceAndInstance) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_workspaces_proto_msgTypes[23] + mi := &file_gitpod_v1_workspaces_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1619,7 +1655,7 @@ type WorkspaceContext_Git struct { func (x *WorkspaceContext_Git) Reset() { *x = WorkspaceContext_Git{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_workspaces_proto_msgTypes[24] + mi := &file_gitpod_v1_workspaces_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1632,7 +1668,7 @@ func (x *WorkspaceContext_Git) String() string { func (*WorkspaceContext_Git) ProtoMessage() {} func (x *WorkspaceContext_Git) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_workspaces_proto_msgTypes[24] + mi := &file_gitpod_v1_workspaces_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1645,7 +1681,7 @@ func (x *WorkspaceContext_Git) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkspaceContext_Git.ProtoReflect.Descriptor instead. func (*WorkspaceContext_Git) Descriptor() ([]byte, []int) { - return file_gitpod_v1_workspaces_proto_rawDescGZIP(), []int{17, 0} + return file_gitpod_v1_workspaces_proto_rawDescGZIP(), []int{19, 0} } func (x *WorkspaceContext_Git) GetNormalizedContextUrl() string { @@ -1678,7 +1714,7 @@ type WorkspaceContext_Prebuild struct { func (x *WorkspaceContext_Prebuild) Reset() { *x = WorkspaceContext_Prebuild{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_workspaces_proto_msgTypes[25] + mi := &file_gitpod_v1_workspaces_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1691,7 +1727,7 @@ func (x *WorkspaceContext_Prebuild) String() string { func (*WorkspaceContext_Prebuild) ProtoMessage() {} func (x *WorkspaceContext_Prebuild) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_workspaces_proto_msgTypes[25] + mi := &file_gitpod_v1_workspaces_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1704,7 +1740,7 @@ func (x *WorkspaceContext_Prebuild) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkspaceContext_Prebuild.ProtoReflect.Descriptor instead. func (*WorkspaceContext_Prebuild) Descriptor() ([]byte, []int) { - return file_gitpod_v1_workspaces_proto_rawDescGZIP(), []int{17, 1} + return file_gitpod_v1_workspaces_proto_rawDescGZIP(), []int{19, 1} } func (x *WorkspaceContext_Prebuild) GetOriginalContext() *WorkspaceContext_Git { @@ -1733,7 +1769,7 @@ type WorkspaceContext_Snapshot struct { func (x *WorkspaceContext_Snapshot) Reset() { *x = WorkspaceContext_Snapshot{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_workspaces_proto_msgTypes[26] + mi := &file_gitpod_v1_workspaces_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1746,7 +1782,7 @@ func (x *WorkspaceContext_Snapshot) String() string { func (*WorkspaceContext_Snapshot) ProtoMessage() {} func (x *WorkspaceContext_Snapshot) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_workspaces_proto_msgTypes[26] + mi := &file_gitpod_v1_workspaces_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1759,7 +1795,7 @@ func (x *WorkspaceContext_Snapshot) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkspaceContext_Snapshot.ProtoReflect.Descriptor instead. func (*WorkspaceContext_Snapshot) Descriptor() ([]byte, []int) { - return file_gitpod_v1_workspaces_proto_rawDescGZIP(), []int{17, 2} + return file_gitpod_v1_workspaces_proto_rawDescGZIP(), []int{19, 2} } func (x *WorkspaceContext_Snapshot) GetSnapshotId() string { @@ -1862,219 +1898,229 @@ var file_gitpod_v1_workspaces_proto_rawDesc = []byte{ 0x73, 0x65, 0x12, 0x38, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x43, 0x0a, 0x20, - 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x54, 0x6f, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, - 0x64, 0x22, 0x70, 0x0a, 0x21, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x54, 0x6f, 0x57, 0x6f, 0x72, + 0x63, 0x65, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x48, 0x0a, 0x25, + 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x22, 0x49, 0x0a, 0x26, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, + 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4f, 0x77, + 0x6e, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x22, 0x43, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x54, 0x6f, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x0f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x22, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x52, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x22, 0x40, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x54, 0x6f, 0x49, - 0x6d, 0x61, 0x67, 0x65, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x49, 0x64, 0x22, 0x34, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x54, - 0x6f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x65, 0x22, 0x66, 0x0a, 0x14, 0x53, - 0x74, 0x6f, 0x70, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, - 0x63, 0x79, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, - 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x49, 0x64, 0x22, 0x17, 0x0a, 0x15, 0x53, 0x74, 0x6f, 0x70, 0x57, 0x6f, 0x72, 0x6b, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc1, 0x01, 0x0a, - 0x09, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, - 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x19, 0x0a, - 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x35, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x22, 0x70, 0x0a, 0x21, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, + 0x54, 0x6f, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x0f, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, + 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x40, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, + 0x65, 0x6e, 0x54, 0x6f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x6f, + 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x22, 0x34, 0x0a, 0x1e, 0x4c, 0x69, + 0x73, 0x74, 0x65, 0x6e, 0x54, 0x6f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x42, 0x75, 0x69, 0x6c, 0x64, + 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x65, + 0x22, 0x66, 0x0a, 0x14, 0x53, 0x74, 0x6f, 0x70, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x69, 0x64, 0x65, 0x6d, + 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x10, 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, + 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x22, 0x17, 0x0a, 0x15, 0x53, 0x74, 0x6f, 0x70, + 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0xc1, 0x01, 0x0a, 0x09, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, + 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1d, 0x0a, + 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x35, 0x0a, 0x07, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, + 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x78, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xf6, 0x03, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x33, 0x0a, 0x03, 0x67, + 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, - 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x20, - 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x22, 0xf6, 0x03, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, - 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, - 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x78, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x33, 0x0a, 0x03, 0x67, 0x69, 0x74, 0x18, 0x02, 0x20, + 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x47, 0x69, 0x74, 0x48, 0x00, 0x52, 0x03, 0x67, 0x69, 0x74, + 0x12, 0x42, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, + 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, + 0x50, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x48, 0x00, 0x52, 0x08, 0x70, 0x72, 0x65, 0x62, + 0x75, 0x69, 0x6c, 0x64, 0x12, 0x42, 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, + 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, + 0x65, 0x78, 0x74, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x48, 0x00, 0x52, 0x08, + 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x1a, 0x53, 0x0a, 0x03, 0x47, 0x69, 0x74, 0x12, + 0x34, 0x0a, 0x16, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x14, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, + 0x78, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x1a, 0x77, 0x0a, + 0x08, 0x50, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x4a, 0x0a, 0x10, 0x6f, 0x72, 0x69, + 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, - 0x2e, 0x47, 0x69, 0x74, 0x48, 0x00, 0x52, 0x03, 0x67, 0x69, 0x74, 0x12, 0x42, 0x0a, 0x08, 0x70, - 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, - 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x50, 0x72, 0x65, 0x62, 0x75, - 0x69, 0x6c, 0x64, 0x48, 0x00, 0x52, 0x08, 0x70, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x12, - 0x42, 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, - 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x53, - 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x48, 0x00, 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, - 0x68, 0x6f, 0x74, 0x1a, 0x53, 0x0a, 0x03, 0x47, 0x69, 0x74, 0x12, 0x34, 0x0a, 0x16, 0x6e, 0x6f, - 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, - 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x6e, 0x6f, 0x72, 0x6d, - 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x55, 0x72, 0x6c, - 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x1a, 0x77, 0x0a, 0x08, 0x50, 0x72, 0x65, 0x62, - 0x75, 0x69, 0x6c, 0x64, 0x12, 0x4a, 0x0a, 0x10, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, - 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, - 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x47, 0x69, 0x74, 0x52, - 0x0f, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, - 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x49, - 0x64, 0x1a, 0x2b, 0x0a, 0x08, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x1f, 0x0a, - 0x0b, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x49, 0x64, 0x42, 0x09, - 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xce, 0x01, 0x0a, 0x11, 0x57, 0x6f, - 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, - 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, - 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x47, 0x69, 0x74, 0x52, 0x0f, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x43, 0x6f, + 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, + 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x62, + 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x1a, 0x2b, 0x0a, 0x08, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, + 0x6f, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, + 0x74, 0x49, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xce, + 0x01, 0x0a, 0x11, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x77, 0x6f, 0x72, + 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x3a, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, + 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, + 0xa6, 0x02, 0x0a, 0x17, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, + 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x50, + 0x68, 0x61, 0x73, 0x65, 0x52, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x0a, 0x63, + 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x26, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x6e, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x10, 0x0a, + 0x03, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, + 0x37, 0x0a, 0x09, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x41, + 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x09, 0x61, + 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xe5, 0x01, 0x0a, 0x1b, 0x57, 0x6f, 0x72, + 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6f, + 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x61, 0x69, 0x6c, + 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, + 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x4a, 0x0a, 0x13, 0x66, 0x69, + 0x72, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, + 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3a, - 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, - 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xad, 0x02, 0x0a, 0x17, 0x57, - 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, - 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x67, - 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x68, 0x61, 0x73, 0x65, 0x52, - 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x69, 0x74, - 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x18, - 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x3e, 0x0a, 0x04, 0x61, 0x75, - 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, - 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x61, 0x75, 0x74, 0x68, 0x22, 0xe5, 0x01, 0x0a, 0x1b, 0x57, - 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x61, - 0x69, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x61, 0x69, 0x6c, - 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x4a, 0x0a, 0x13, - 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, - 0x69, 0x74, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x11, 0x66, 0x69, 0x72, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, - 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x31, 0x0a, 0x12, 0x73, 0x74, 0x6f, 0x70, - 0x70, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x10, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x42, - 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x88, 0x01, 0x01, 0x42, 0x15, 0x0a, 0x13, 0x5f, - 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x22, 0x7b, 0x0a, 0x1f, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x09, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, - 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x65, - 0x76, 0x65, 0x6c, 0x52, 0x09, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, - 0x0a, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, - 0x14, 0x0a, 0x12, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x53, 0x70, 0x65, 0x63, 0x2a, 0xdd, 0x02, 0x0a, 0x16, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x68, 0x61, 0x73, 0x65, - 0x12, 0x28, 0x0a, 0x24, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x49, 0x4e, - 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x24, 0x0a, 0x20, 0x57, 0x4f, - 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, - 0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x02, - 0x12, 0x25, 0x0a, 0x21, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x49, 0x4e, - 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x52, 0x45, - 0x41, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x29, 0x0a, 0x25, 0x57, 0x4f, 0x52, 0x4b, 0x53, - 0x50, 0x41, 0x43, 0x45, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x50, 0x48, - 0x41, 0x53, 0x45, 0x5f, 0x49, 0x4e, 0x49, 0x54, 0x49, 0x41, 0x4c, 0x49, 0x5a, 0x49, 0x4e, 0x47, - 0x10, 0x04, 0x12, 0x24, 0x0a, 0x20, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, - 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x52, - 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x05, 0x12, 0x28, 0x0a, 0x24, 0x57, 0x4f, 0x52, 0x4b, + 0x61, 0x6d, 0x70, 0x52, 0x11, 0x66, 0x69, 0x72, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, + 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x31, 0x0a, 0x12, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, + 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x08, 0x48, 0x00, 0x52, 0x10, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x42, 0x79, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x88, 0x01, 0x01, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x74, + 0x6f, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x22, 0x14, 0x0a, 0x12, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x2a, 0xdd, 0x02, 0x0a, 0x16, 0x57, 0x6f, 0x72, 0x6b, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x68, 0x61, 0x73, + 0x65, 0x12, 0x28, 0x0a, 0x24, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x49, + 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x24, 0x0a, 0x20, 0x57, + 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, + 0x45, 0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, + 0x02, 0x12, 0x25, 0x0a, 0x21, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x49, + 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x52, + 0x45, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x29, 0x0a, 0x25, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x50, - 0x48, 0x41, 0x53, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x52, 0x55, 0x50, 0x54, 0x45, 0x44, - 0x10, 0x06, 0x12, 0x25, 0x0a, 0x21, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, - 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x53, - 0x54, 0x4f, 0x50, 0x50, 0x49, 0x4e, 0x47, 0x10, 0x07, 0x12, 0x24, 0x0a, 0x20, 0x57, 0x4f, 0x52, + 0x48, 0x41, 0x53, 0x45, 0x5f, 0x49, 0x4e, 0x49, 0x54, 0x49, 0x41, 0x4c, 0x49, 0x5a, 0x49, 0x4e, + 0x47, 0x10, 0x04, 0x12, 0x24, 0x0a, 0x20, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, + 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, + 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x05, 0x12, 0x28, 0x0a, 0x24, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x5f, - 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x10, 0x08, 0x22, - 0x04, 0x08, 0x01, 0x10, 0x01, 0x2a, 0x6f, 0x0a, 0x0e, 0x41, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1f, 0x0a, 0x1b, 0x41, 0x44, 0x4d, 0x49, 0x53, - 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x44, 0x4d, 0x49, - 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x4f, 0x57, 0x4e, 0x45, - 0x52, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x44, 0x4d, 0x49, - 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x45, 0x56, 0x45, 0x52, - 0x59, 0x4f, 0x4e, 0x45, 0x10, 0x02, 0x32, 0xd0, 0x06, 0x0a, 0x11, 0x57, 0x6f, 0x72, 0x6b, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x57, 0x0a, 0x0e, - 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x20, - 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, - 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, + 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x52, 0x55, 0x50, 0x54, 0x45, + 0x44, 0x10, 0x06, 0x12, 0x25, 0x0a, 0x21, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, + 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, + 0x53, 0x54, 0x4f, 0x50, 0x50, 0x49, 0x4e, 0x47, 0x10, 0x07, 0x12, 0x24, 0x0a, 0x20, 0x57, 0x4f, + 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, + 0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x10, 0x08, + 0x22, 0x04, 0x08, 0x01, 0x10, 0x01, 0x2a, 0x6f, 0x0a, 0x0e, 0x41, 0x64, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1f, 0x0a, 0x1b, 0x41, 0x44, 0x4d, 0x49, + 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x44, 0x4d, + 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x4f, 0x57, 0x4e, + 0x45, 0x52, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x44, 0x4d, + 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x45, 0x56, 0x45, + 0x52, 0x59, 0x4f, 0x4e, 0x45, 0x10, 0x02, 0x32, 0xda, 0x07, 0x0a, 0x11, 0x57, 0x6f, 0x72, 0x6b, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x57, 0x0a, + 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, + 0x20, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, + 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, + 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, + 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x17, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x41, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x12, 0x29, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, + 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x12, 0x29, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x6f, - 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, - 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x41, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x57, 0x0a, 0x0e, - 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x20, - 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, - 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x12, 0x2c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x7a, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x54, 0x6f, 0x57, 0x6f, - 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, - 0x2b, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x65, 0x6e, 0x54, 0x6f, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x67, - 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x54, - 0x6f, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x71, - 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x54, 0x6f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x42, - 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x28, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, - 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x54, 0x6f, 0x49, 0x6d, 0x61, - 0x67, 0x65, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x65, 0x6e, 0x54, 0x6f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x42, 0x75, 0x69, 0x6c, - 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, - 0x01, 0x12, 0x56, 0x0a, 0x0d, 0x53, 0x74, 0x6f, 0x70, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x12, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, - 0x74, 0x6f, 0x70, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x74, 0x6f, 0x70, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x42, 0x2b, 0x5a, 0x29, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2d, 0x69, - 0x6f, 0x2f, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2d, - 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x57, 0x0a, + 0x0e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, + 0x20, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x72, + 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x12, 0x2c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x87, 0x01, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4f, 0x77, 0x6e, 0x65, + 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x30, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, + 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, + 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7a, 0x0a, + 0x19, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x54, 0x6f, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x2b, 0x2e, 0x67, 0x69, 0x74, + 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x54, 0x6f, 0x57, + 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, + 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x54, 0x6f, 0x57, 0x6f, 0x72, 0x6b, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x71, 0x0a, 0x16, 0x4c, 0x69, 0x73, + 0x74, 0x65, 0x6e, 0x54, 0x6f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x4c, + 0x6f, 0x67, 0x73, 0x12, 0x28, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x54, 0x6f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x42, 0x75, 0x69, + 0x6c, 0x64, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, + 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, + 0x54, 0x6f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x6f, 0x67, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x56, 0x0a, 0x0d, + 0x53, 0x74, 0x6f, 0x70, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1f, 0x2e, + 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x57, 0x6f, + 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, + 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x57, + 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x30, 0x01, 0x42, 0x2b, 0x5a, 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2d, 0x69, 0x6f, 0x2f, 0x67, 0x69, 0x74, + 0x70, 0x6f, 0x64, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x76, + 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2090,7 +2136,7 @@ func file_gitpod_v1_workspaces_proto_rawDescGZIP() []byte { } var file_gitpod_v1_workspaces_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_gitpod_v1_workspaces_proto_msgTypes = make([]protoimpl.MessageInfo, 27) +var file_gitpod_v1_workspaces_proto_msgTypes = make([]protoimpl.MessageInfo, 28) var file_gitpod_v1_workspaces_proto_goTypes = []interface{}{ (WorkspaceInstancePhase)(0), // 0: gitpod.v1.WorkspaceInstancePhase (AdmissionLevel)(0), // 1: gitpod.v1.AdmissionLevel @@ -2104,71 +2150,73 @@ var file_gitpod_v1_workspaces_proto_goTypes = []interface{}{ (*StartWorkspaceResponse)(nil), // 9: gitpod.v1.StartWorkspaceResponse (*GetActiveWorkspaceInstanceRequest)(nil), // 10: gitpod.v1.GetActiveWorkspaceInstanceRequest (*GetActiveWorkspaceInstanceResponse)(nil), // 11: gitpod.v1.GetActiveWorkspaceInstanceResponse - (*ListenToWorkspaceInstanceRequest)(nil), // 12: gitpod.v1.ListenToWorkspaceInstanceRequest - (*ListenToWorkspaceInstanceResponse)(nil), // 13: gitpod.v1.ListenToWorkspaceInstanceResponse - (*ListenToImageBuildLogsRequest)(nil), // 14: gitpod.v1.ListenToImageBuildLogsRequest - (*ListenToImageBuildLogsResponse)(nil), // 15: gitpod.v1.ListenToImageBuildLogsResponse - (*StopWorkspaceRequest)(nil), // 16: gitpod.v1.StopWorkspaceRequest - (*StopWorkspaceResponse)(nil), // 17: gitpod.v1.StopWorkspaceResponse - (*Workspace)(nil), // 18: gitpod.v1.Workspace - (*WorkspaceContext)(nil), // 19: gitpod.v1.WorkspaceContext - (*WorkspaceInstance)(nil), // 20: gitpod.v1.WorkspaceInstance - (*WorkspaceInstanceStatus)(nil), // 21: gitpod.v1.WorkspaceInstanceStatus - (*WorkspaceInstanceConditions)(nil), // 22: gitpod.v1.WorkspaceInstanceConditions - (*WorkspaceInstanceAuthentication)(nil), // 23: gitpod.v1.WorkspaceInstanceAuthentication - (*StartWorkspaceSpec)(nil), // 24: gitpod.v1.StartWorkspaceSpec - (*ListWorkspacesResponse_WorkspaceAndInstance)(nil), // 25: gitpod.v1.ListWorkspacesResponse.WorkspaceAndInstance - (*WorkspaceContext_Git)(nil), // 26: gitpod.v1.WorkspaceContext.Git - (*WorkspaceContext_Prebuild)(nil), // 27: gitpod.v1.WorkspaceContext.Prebuild - (*WorkspaceContext_Snapshot)(nil), // 28: gitpod.v1.WorkspaceContext.Snapshot - (*Pagination)(nil), // 29: gitpod.v1.Pagination - (*fieldmaskpb.FieldMask)(nil), // 30: google.protobuf.FieldMask - (*timestamppb.Timestamp)(nil), // 31: google.protobuf.Timestamp + (*GetWorkspaceInstanceOwnerTokenRequest)(nil), // 12: gitpod.v1.GetWorkspaceInstanceOwnerTokenRequest + (*GetWorkspaceInstanceOwnerTokenResponse)(nil), // 13: gitpod.v1.GetWorkspaceInstanceOwnerTokenResponse + (*ListenToWorkspaceInstanceRequest)(nil), // 14: gitpod.v1.ListenToWorkspaceInstanceRequest + (*ListenToWorkspaceInstanceResponse)(nil), // 15: gitpod.v1.ListenToWorkspaceInstanceResponse + (*ListenToImageBuildLogsRequest)(nil), // 16: gitpod.v1.ListenToImageBuildLogsRequest + (*ListenToImageBuildLogsResponse)(nil), // 17: gitpod.v1.ListenToImageBuildLogsResponse + (*StopWorkspaceRequest)(nil), // 18: gitpod.v1.StopWorkspaceRequest + (*StopWorkspaceResponse)(nil), // 19: gitpod.v1.StopWorkspaceResponse + (*Workspace)(nil), // 20: gitpod.v1.Workspace + (*WorkspaceContext)(nil), // 21: gitpod.v1.WorkspaceContext + (*WorkspaceInstance)(nil), // 22: gitpod.v1.WorkspaceInstance + (*WorkspaceInstanceStatus)(nil), // 23: gitpod.v1.WorkspaceInstanceStatus + (*WorkspaceInstanceConditions)(nil), // 24: gitpod.v1.WorkspaceInstanceConditions + (*StartWorkspaceSpec)(nil), // 25: gitpod.v1.StartWorkspaceSpec + (*ListWorkspacesResponse_WorkspaceAndInstance)(nil), // 26: gitpod.v1.ListWorkspacesResponse.WorkspaceAndInstance + (*WorkspaceContext_Git)(nil), // 27: gitpod.v1.WorkspaceContext.Git + (*WorkspaceContext_Prebuild)(nil), // 28: gitpod.v1.WorkspaceContext.Prebuild + (*WorkspaceContext_Snapshot)(nil), // 29: gitpod.v1.WorkspaceContext.Snapshot + (*Pagination)(nil), // 30: gitpod.v1.Pagination + (*fieldmaskpb.FieldMask)(nil), // 31: google.protobuf.FieldMask + (*timestamppb.Timestamp)(nil), // 32: google.protobuf.Timestamp } var file_gitpod_v1_workspaces_proto_depIdxs = []int32{ - 29, // 0: gitpod.v1.ListWorkspacesRequest.pagination:type_name -> gitpod.v1.Pagination - 30, // 1: gitpod.v1.ListWorkspacesRequest.field_mask:type_name -> google.protobuf.FieldMask - 25, // 2: gitpod.v1.ListWorkspacesResponse.result:type_name -> gitpod.v1.ListWorkspacesResponse.WorkspaceAndInstance - 18, // 3: gitpod.v1.GetWorkspaceResponse.result:type_name -> gitpod.v1.Workspace - 24, // 4: gitpod.v1.CreateAndStartWorkspaceRequest.start_spec:type_name -> gitpod.v1.StartWorkspaceSpec - 24, // 5: gitpod.v1.StartWorkspaceRequest.spec:type_name -> gitpod.v1.StartWorkspaceSpec - 20, // 6: gitpod.v1.GetActiveWorkspaceInstanceResponse.instance:type_name -> gitpod.v1.WorkspaceInstance - 21, // 7: gitpod.v1.ListenToWorkspaceInstanceResponse.instance_status:type_name -> gitpod.v1.WorkspaceInstanceStatus - 19, // 8: gitpod.v1.Workspace.context:type_name -> gitpod.v1.WorkspaceContext - 26, // 9: gitpod.v1.WorkspaceContext.git:type_name -> gitpod.v1.WorkspaceContext.Git - 27, // 10: gitpod.v1.WorkspaceContext.prebuild:type_name -> gitpod.v1.WorkspaceContext.Prebuild - 28, // 11: gitpod.v1.WorkspaceContext.snapshot:type_name -> gitpod.v1.WorkspaceContext.Snapshot - 31, // 12: gitpod.v1.WorkspaceInstance.created_at:type_name -> google.protobuf.Timestamp - 21, // 13: gitpod.v1.WorkspaceInstance.status:type_name -> gitpod.v1.WorkspaceInstanceStatus + 30, // 0: gitpod.v1.ListWorkspacesRequest.pagination:type_name -> gitpod.v1.Pagination + 31, // 1: gitpod.v1.ListWorkspacesRequest.field_mask:type_name -> google.protobuf.FieldMask + 26, // 2: gitpod.v1.ListWorkspacesResponse.result:type_name -> gitpod.v1.ListWorkspacesResponse.WorkspaceAndInstance + 20, // 3: gitpod.v1.GetWorkspaceResponse.result:type_name -> gitpod.v1.Workspace + 25, // 4: gitpod.v1.CreateAndStartWorkspaceRequest.start_spec:type_name -> gitpod.v1.StartWorkspaceSpec + 25, // 5: gitpod.v1.StartWorkspaceRequest.spec:type_name -> gitpod.v1.StartWorkspaceSpec + 22, // 6: gitpod.v1.GetActiveWorkspaceInstanceResponse.instance:type_name -> gitpod.v1.WorkspaceInstance + 23, // 7: gitpod.v1.ListenToWorkspaceInstanceResponse.instance_status:type_name -> gitpod.v1.WorkspaceInstanceStatus + 21, // 8: gitpod.v1.Workspace.context:type_name -> gitpod.v1.WorkspaceContext + 27, // 9: gitpod.v1.WorkspaceContext.git:type_name -> gitpod.v1.WorkspaceContext.Git + 28, // 10: gitpod.v1.WorkspaceContext.prebuild:type_name -> gitpod.v1.WorkspaceContext.Prebuild + 29, // 11: gitpod.v1.WorkspaceContext.snapshot:type_name -> gitpod.v1.WorkspaceContext.Snapshot + 32, // 12: gitpod.v1.WorkspaceInstance.created_at:type_name -> google.protobuf.Timestamp + 23, // 13: gitpod.v1.WorkspaceInstance.status:type_name -> gitpod.v1.WorkspaceInstanceStatus 0, // 14: gitpod.v1.WorkspaceInstanceStatus.phase:type_name -> gitpod.v1.WorkspaceInstancePhase - 22, // 15: gitpod.v1.WorkspaceInstanceStatus.conditions:type_name -> gitpod.v1.WorkspaceInstanceConditions - 23, // 16: gitpod.v1.WorkspaceInstanceStatus.auth:type_name -> gitpod.v1.WorkspaceInstanceAuthentication - 31, // 17: gitpod.v1.WorkspaceInstanceConditions.first_user_activity:type_name -> google.protobuf.Timestamp - 1, // 18: gitpod.v1.WorkspaceInstanceAuthentication.admission:type_name -> gitpod.v1.AdmissionLevel - 18, // 19: gitpod.v1.ListWorkspacesResponse.WorkspaceAndInstance.result:type_name -> gitpod.v1.Workspace - 20, // 20: gitpod.v1.ListWorkspacesResponse.WorkspaceAndInstance.last_active_instances:type_name -> gitpod.v1.WorkspaceInstance - 26, // 21: gitpod.v1.WorkspaceContext.Prebuild.original_context:type_name -> gitpod.v1.WorkspaceContext.Git - 2, // 22: gitpod.v1.WorkspacesService.ListWorkspaces:input_type -> gitpod.v1.ListWorkspacesRequest - 4, // 23: gitpod.v1.WorkspacesService.GetWorkspace:input_type -> gitpod.v1.GetWorkspaceRequest - 6, // 24: gitpod.v1.WorkspacesService.CreateAndStartWorkspace:input_type -> gitpod.v1.CreateAndStartWorkspaceRequest - 8, // 25: gitpod.v1.WorkspacesService.StartWorkspace:input_type -> gitpod.v1.StartWorkspaceRequest - 10, // 26: gitpod.v1.WorkspacesService.GetActiveWorkspaceInstance:input_type -> gitpod.v1.GetActiveWorkspaceInstanceRequest - 12, // 27: gitpod.v1.WorkspacesService.ListenToWorkspaceInstance:input_type -> gitpod.v1.ListenToWorkspaceInstanceRequest - 14, // 28: gitpod.v1.WorkspacesService.ListenToImageBuildLogs:input_type -> gitpod.v1.ListenToImageBuildLogsRequest - 16, // 29: gitpod.v1.WorkspacesService.StopWorkspace:input_type -> gitpod.v1.StopWorkspaceRequest + 24, // 15: gitpod.v1.WorkspaceInstanceStatus.conditions:type_name -> gitpod.v1.WorkspaceInstanceConditions + 1, // 16: gitpod.v1.WorkspaceInstanceStatus.admission:type_name -> gitpod.v1.AdmissionLevel + 32, // 17: gitpod.v1.WorkspaceInstanceConditions.first_user_activity:type_name -> google.protobuf.Timestamp + 20, // 18: gitpod.v1.ListWorkspacesResponse.WorkspaceAndInstance.result:type_name -> gitpod.v1.Workspace + 22, // 19: gitpod.v1.ListWorkspacesResponse.WorkspaceAndInstance.last_active_instances:type_name -> gitpod.v1.WorkspaceInstance + 27, // 20: gitpod.v1.WorkspaceContext.Prebuild.original_context:type_name -> gitpod.v1.WorkspaceContext.Git + 2, // 21: gitpod.v1.WorkspacesService.ListWorkspaces:input_type -> gitpod.v1.ListWorkspacesRequest + 4, // 22: gitpod.v1.WorkspacesService.GetWorkspace:input_type -> gitpod.v1.GetWorkspaceRequest + 6, // 23: gitpod.v1.WorkspacesService.CreateAndStartWorkspace:input_type -> gitpod.v1.CreateAndStartWorkspaceRequest + 8, // 24: gitpod.v1.WorkspacesService.StartWorkspace:input_type -> gitpod.v1.StartWorkspaceRequest + 10, // 25: gitpod.v1.WorkspacesService.GetActiveWorkspaceInstance:input_type -> gitpod.v1.GetActiveWorkspaceInstanceRequest + 12, // 26: gitpod.v1.WorkspacesService.GetWorkspaceInstanceOwnerToken:input_type -> gitpod.v1.GetWorkspaceInstanceOwnerTokenRequest + 14, // 27: gitpod.v1.WorkspacesService.ListenToWorkspaceInstance:input_type -> gitpod.v1.ListenToWorkspaceInstanceRequest + 16, // 28: gitpod.v1.WorkspacesService.ListenToImageBuildLogs:input_type -> gitpod.v1.ListenToImageBuildLogsRequest + 18, // 29: gitpod.v1.WorkspacesService.StopWorkspace:input_type -> gitpod.v1.StopWorkspaceRequest 3, // 30: gitpod.v1.WorkspacesService.ListWorkspaces:output_type -> gitpod.v1.ListWorkspacesResponse 5, // 31: gitpod.v1.WorkspacesService.GetWorkspace:output_type -> gitpod.v1.GetWorkspaceResponse 7, // 32: gitpod.v1.WorkspacesService.CreateAndStartWorkspace:output_type -> gitpod.v1.CreateAndStartWorkspaceResponse 9, // 33: gitpod.v1.WorkspacesService.StartWorkspace:output_type -> gitpod.v1.StartWorkspaceResponse 11, // 34: gitpod.v1.WorkspacesService.GetActiveWorkspaceInstance:output_type -> gitpod.v1.GetActiveWorkspaceInstanceResponse - 13, // 35: gitpod.v1.WorkspacesService.ListenToWorkspaceInstance:output_type -> gitpod.v1.ListenToWorkspaceInstanceResponse - 15, // 36: gitpod.v1.WorkspacesService.ListenToImageBuildLogs:output_type -> gitpod.v1.ListenToImageBuildLogsResponse - 17, // 37: gitpod.v1.WorkspacesService.StopWorkspace:output_type -> gitpod.v1.StopWorkspaceResponse - 30, // [30:38] is the sub-list for method output_type - 22, // [22:30] is the sub-list for method input_type - 22, // [22:22] is the sub-list for extension type_name - 22, // [22:22] is the sub-list for extension extendee - 0, // [0:22] is the sub-list for field type_name + 13, // 35: gitpod.v1.WorkspacesService.GetWorkspaceInstanceOwnerToken:output_type -> gitpod.v1.GetWorkspaceInstanceOwnerTokenResponse + 15, // 36: gitpod.v1.WorkspacesService.ListenToWorkspaceInstance:output_type -> gitpod.v1.ListenToWorkspaceInstanceResponse + 17, // 37: gitpod.v1.WorkspacesService.ListenToImageBuildLogs:output_type -> gitpod.v1.ListenToImageBuildLogsResponse + 19, // 38: gitpod.v1.WorkspacesService.StopWorkspace:output_type -> gitpod.v1.StopWorkspaceResponse + 30, // [30:39] is the sub-list for method output_type + 21, // [21:30] is the sub-list for method input_type + 21, // [21:21] is the sub-list for extension type_name + 21, // [21:21] is the sub-list for extension extendee + 0, // [0:21] is the sub-list for field type_name } func init() { file_gitpod_v1_workspaces_proto_init() } @@ -2299,7 +2347,7 @@ func file_gitpod_v1_workspaces_proto_init() { } } file_gitpod_v1_workspaces_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListenToWorkspaceInstanceRequest); i { + switch v := v.(*GetWorkspaceInstanceOwnerTokenRequest); i { case 0: return &v.state case 1: @@ -2311,7 +2359,7 @@ func file_gitpod_v1_workspaces_proto_init() { } } file_gitpod_v1_workspaces_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListenToWorkspaceInstanceResponse); i { + switch v := v.(*GetWorkspaceInstanceOwnerTokenResponse); i { case 0: return &v.state case 1: @@ -2323,7 +2371,7 @@ func file_gitpod_v1_workspaces_proto_init() { } } file_gitpod_v1_workspaces_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListenToImageBuildLogsRequest); i { + switch v := v.(*ListenToWorkspaceInstanceRequest); i { case 0: return &v.state case 1: @@ -2335,7 +2383,7 @@ func file_gitpod_v1_workspaces_proto_init() { } } file_gitpod_v1_workspaces_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListenToImageBuildLogsResponse); i { + switch v := v.(*ListenToWorkspaceInstanceResponse); i { case 0: return &v.state case 1: @@ -2347,7 +2395,7 @@ func file_gitpod_v1_workspaces_proto_init() { } } file_gitpod_v1_workspaces_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StopWorkspaceRequest); i { + switch v := v.(*ListenToImageBuildLogsRequest); i { case 0: return &v.state case 1: @@ -2359,7 +2407,7 @@ func file_gitpod_v1_workspaces_proto_init() { } } file_gitpod_v1_workspaces_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StopWorkspaceResponse); i { + switch v := v.(*ListenToImageBuildLogsResponse); i { case 0: return &v.state case 1: @@ -2371,7 +2419,7 @@ func file_gitpod_v1_workspaces_proto_init() { } } file_gitpod_v1_workspaces_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Workspace); i { + switch v := v.(*StopWorkspaceRequest); i { case 0: return &v.state case 1: @@ -2383,7 +2431,7 @@ func file_gitpod_v1_workspaces_proto_init() { } } file_gitpod_v1_workspaces_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WorkspaceContext); i { + switch v := v.(*StopWorkspaceResponse); i { case 0: return &v.state case 1: @@ -2395,7 +2443,7 @@ func file_gitpod_v1_workspaces_proto_init() { } } file_gitpod_v1_workspaces_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WorkspaceInstance); i { + switch v := v.(*Workspace); i { case 0: return &v.state case 1: @@ -2407,7 +2455,7 @@ func file_gitpod_v1_workspaces_proto_init() { } } file_gitpod_v1_workspaces_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WorkspaceInstanceStatus); i { + switch v := v.(*WorkspaceContext); i { case 0: return &v.state case 1: @@ -2419,7 +2467,7 @@ func file_gitpod_v1_workspaces_proto_init() { } } file_gitpod_v1_workspaces_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WorkspaceInstanceConditions); i { + switch v := v.(*WorkspaceInstance); i { case 0: return &v.state case 1: @@ -2431,7 +2479,7 @@ func file_gitpod_v1_workspaces_proto_init() { } } file_gitpod_v1_workspaces_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WorkspaceInstanceAuthentication); i { + switch v := v.(*WorkspaceInstanceStatus); i { case 0: return &v.state case 1: @@ -2443,7 +2491,7 @@ func file_gitpod_v1_workspaces_proto_init() { } } file_gitpod_v1_workspaces_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StartWorkspaceSpec); i { + switch v := v.(*WorkspaceInstanceConditions); i { case 0: return &v.state case 1: @@ -2455,7 +2503,7 @@ func file_gitpod_v1_workspaces_proto_init() { } } file_gitpod_v1_workspaces_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListWorkspacesResponse_WorkspaceAndInstance); i { + switch v := v.(*StartWorkspaceSpec); i { case 0: return &v.state case 1: @@ -2467,7 +2515,7 @@ func file_gitpod_v1_workspaces_proto_init() { } } file_gitpod_v1_workspaces_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WorkspaceContext_Git); i { + switch v := v.(*ListWorkspacesResponse_WorkspaceAndInstance); i { case 0: return &v.state case 1: @@ -2479,7 +2527,7 @@ func file_gitpod_v1_workspaces_proto_init() { } } file_gitpod_v1_workspaces_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WorkspaceContext_Prebuild); i { + switch v := v.(*WorkspaceContext_Git); i { case 0: return &v.state case 1: @@ -2491,6 +2539,18 @@ func file_gitpod_v1_workspaces_proto_init() { } } file_gitpod_v1_workspaces_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WorkspaceContext_Prebuild); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gitpod_v1_workspaces_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WorkspaceContext_Snapshot); i { case 0: return &v.state @@ -2507,19 +2567,19 @@ func file_gitpod_v1_workspaces_proto_init() { (*CreateAndStartWorkspaceRequest_IfAvailable)(nil), (*CreateAndStartWorkspaceRequest_PrebuildId)(nil), } - file_gitpod_v1_workspaces_proto_msgTypes[17].OneofWrappers = []interface{}{ + file_gitpod_v1_workspaces_proto_msgTypes[19].OneofWrappers = []interface{}{ (*WorkspaceContext_Git_)(nil), (*WorkspaceContext_Prebuild_)(nil), (*WorkspaceContext_Snapshot_)(nil), } - file_gitpod_v1_workspaces_proto_msgTypes[20].OneofWrappers = []interface{}{} + file_gitpod_v1_workspaces_proto_msgTypes[22].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_gitpod_v1_workspaces_proto_rawDesc, NumEnums: 2, - NumMessages: 27, + NumMessages: 28, NumExtensions: 0, NumServices: 1, }, diff --git a/components/public-api/go/v1/workspaces_grpc.pb.go b/components/public-api/go/v1/workspaces_grpc.pb.go index d06b8156e3b403..22141f6f9bb887 100644 --- a/components/public-api/go/v1/workspaces_grpc.pb.go +++ b/components/public-api/go/v1/workspaces_grpc.pb.go @@ -35,6 +35,10 @@ type WorkspacesServiceClient interface { // FAILED_PRECONDITION: if a workspace does not a currently active instance // GetActiveWorkspaceInstance(ctx context.Context, in *GetActiveWorkspaceInstanceRequest, opts ...grpc.CallOption) (*GetActiveWorkspaceInstanceResponse, error) + // GetWorkspaceInstanceOwnerToken returns the owner token of a workspace instance. + // Note: the owner token is not part of the workspace instance status so that we can scope its access on the + // API function level. + GetWorkspaceInstanceOwnerToken(ctx context.Context, in *GetWorkspaceInstanceOwnerTokenRequest, opts ...grpc.CallOption) (*GetWorkspaceInstanceOwnerTokenResponse, error) // ListenToWorkspaceInstance listens to workspace instance updates. ListenToWorkspaceInstance(ctx context.Context, in *ListenToWorkspaceInstanceRequest, opts ...grpc.CallOption) (WorkspacesService_ListenToWorkspaceInstanceClient, error) // ListenToImageBuildLogs streams (currently or previously) running workspace image build logs @@ -99,6 +103,15 @@ func (c *workspacesServiceClient) GetActiveWorkspaceInstance(ctx context.Context return out, nil } +func (c *workspacesServiceClient) GetWorkspaceInstanceOwnerToken(ctx context.Context, in *GetWorkspaceInstanceOwnerTokenRequest, opts ...grpc.CallOption) (*GetWorkspaceInstanceOwnerTokenResponse, error) { + out := new(GetWorkspaceInstanceOwnerTokenResponse) + err := c.cc.Invoke(ctx, "/gitpod.v1.WorkspacesService/GetWorkspaceInstanceOwnerToken", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *workspacesServiceClient) ListenToWorkspaceInstance(ctx context.Context, in *ListenToWorkspaceInstanceRequest, opts ...grpc.CallOption) (WorkspacesService_ListenToWorkspaceInstanceClient, error) { stream, err := c.cc.NewStream(ctx, &WorkspacesService_ServiceDesc.Streams[0], "/gitpod.v1.WorkspacesService/ListenToWorkspaceInstance", opts...) if err != nil { @@ -212,6 +225,10 @@ type WorkspacesServiceServer interface { // FAILED_PRECONDITION: if a workspace does not a currently active instance // GetActiveWorkspaceInstance(context.Context, *GetActiveWorkspaceInstanceRequest) (*GetActiveWorkspaceInstanceResponse, error) + // GetWorkspaceInstanceOwnerToken returns the owner token of a workspace instance. + // Note: the owner token is not part of the workspace instance status so that we can scope its access on the + // API function level. + GetWorkspaceInstanceOwnerToken(context.Context, *GetWorkspaceInstanceOwnerTokenRequest) (*GetWorkspaceInstanceOwnerTokenResponse, error) // ListenToWorkspaceInstance listens to workspace instance updates. ListenToWorkspaceInstance(*ListenToWorkspaceInstanceRequest, WorkspacesService_ListenToWorkspaceInstanceServer) error // ListenToImageBuildLogs streams (currently or previously) running workspace image build logs @@ -243,6 +260,9 @@ func (UnimplementedWorkspacesServiceServer) StartWorkspace(context.Context, *Sta func (UnimplementedWorkspacesServiceServer) GetActiveWorkspaceInstance(context.Context, *GetActiveWorkspaceInstanceRequest) (*GetActiveWorkspaceInstanceResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetActiveWorkspaceInstance not implemented") } +func (UnimplementedWorkspacesServiceServer) GetWorkspaceInstanceOwnerToken(context.Context, *GetWorkspaceInstanceOwnerTokenRequest) (*GetWorkspaceInstanceOwnerTokenResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetWorkspaceInstanceOwnerToken not implemented") +} func (UnimplementedWorkspacesServiceServer) ListenToWorkspaceInstance(*ListenToWorkspaceInstanceRequest, WorkspacesService_ListenToWorkspaceInstanceServer) error { return status.Errorf(codes.Unimplemented, "method ListenToWorkspaceInstance not implemented") } @@ -355,6 +375,24 @@ func _WorkspacesService_GetActiveWorkspaceInstance_Handler(srv interface{}, ctx return interceptor(ctx, in, info, handler) } +func _WorkspacesService_GetWorkspaceInstanceOwnerToken_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetWorkspaceInstanceOwnerTokenRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(WorkspacesServiceServer).GetWorkspaceInstanceOwnerToken(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/gitpod.v1.WorkspacesService/GetWorkspaceInstanceOwnerToken", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(WorkspacesServiceServer).GetWorkspaceInstanceOwnerToken(ctx, req.(*GetWorkspaceInstanceOwnerTokenRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _WorkspacesService_ListenToWorkspaceInstance_Handler(srv interface{}, stream grpc.ServerStream) error { m := new(ListenToWorkspaceInstanceRequest) if err := stream.RecvMsg(m); err != nil { @@ -445,6 +483,10 @@ var WorkspacesService_ServiceDesc = grpc.ServiceDesc{ MethodName: "GetActiveWorkspaceInstance", Handler: _WorkspacesService_GetActiveWorkspaceInstance_Handler, }, + { + MethodName: "GetWorkspaceInstanceOwnerToken", + Handler: _WorkspacesService_GetWorkspaceInstanceOwnerToken_Handler, + }, }, Streams: []grpc.StreamDesc{ { diff --git a/components/public-api/typescript/src/gitpod/v1/workspaces_grpc_pb.d.ts b/components/public-api/typescript/src/gitpod/v1/workspaces_grpc_pb.d.ts index f78de0b59f0c83..d31249ded72475 100644 --- a/components/public-api/typescript/src/gitpod/v1/workspaces_grpc_pb.d.ts +++ b/components/public-api/typescript/src/gitpod/v1/workspaces_grpc_pb.d.ts @@ -16,6 +16,7 @@ interface IWorkspacesServiceService extends grpc.ServiceDefinition; responseDeserialize: grpc.deserialize; } +interface IWorkspacesServiceService_IGetWorkspaceInstanceOwnerToken extends grpc.MethodDefinition { + path: "/gitpod.v1.WorkspacesService/GetWorkspaceInstanceOwnerToken"; + requestStream: false; + responseStream: false; + requestSerialize: grpc.serialize; + requestDeserialize: grpc.deserialize; + responseSerialize: grpc.serialize; + responseDeserialize: grpc.deserialize; +} interface IWorkspacesServiceService_IListenToWorkspaceInstance extends grpc.MethodDefinition { path: "/gitpod.v1.WorkspacesService/ListenToWorkspaceInstance"; requestStream: false; @@ -102,6 +112,7 @@ export interface IWorkspacesServiceServer extends grpc.UntypedServiceImplementat createAndStartWorkspace: grpc.handleUnaryCall; startWorkspace: grpc.handleUnaryCall; getActiveWorkspaceInstance: grpc.handleUnaryCall; + getWorkspaceInstanceOwnerToken: grpc.handleUnaryCall; listenToWorkspaceInstance: grpc.handleServerStreamingCall; listenToImageBuildLogs: grpc.handleServerStreamingCall; stopWorkspace: grpc.handleServerStreamingCall; @@ -123,6 +134,9 @@ export interface IWorkspacesServiceClient { getActiveWorkspaceInstance(request: gitpod_v1_workspaces_pb.GetActiveWorkspaceInstanceRequest, callback: (error: grpc.ServiceError | null, response: gitpod_v1_workspaces_pb.GetActiveWorkspaceInstanceResponse) => void): grpc.ClientUnaryCall; getActiveWorkspaceInstance(request: gitpod_v1_workspaces_pb.GetActiveWorkspaceInstanceRequest, metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: gitpod_v1_workspaces_pb.GetActiveWorkspaceInstanceResponse) => void): grpc.ClientUnaryCall; getActiveWorkspaceInstance(request: gitpod_v1_workspaces_pb.GetActiveWorkspaceInstanceRequest, metadata: grpc.Metadata, options: Partial, callback: (error: grpc.ServiceError | null, response: gitpod_v1_workspaces_pb.GetActiveWorkspaceInstanceResponse) => void): grpc.ClientUnaryCall; + getWorkspaceInstanceOwnerToken(request: gitpod_v1_workspaces_pb.GetWorkspaceInstanceOwnerTokenRequest, callback: (error: grpc.ServiceError | null, response: gitpod_v1_workspaces_pb.GetWorkspaceInstanceOwnerTokenResponse) => void): grpc.ClientUnaryCall; + getWorkspaceInstanceOwnerToken(request: gitpod_v1_workspaces_pb.GetWorkspaceInstanceOwnerTokenRequest, metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: gitpod_v1_workspaces_pb.GetWorkspaceInstanceOwnerTokenResponse) => void): grpc.ClientUnaryCall; + getWorkspaceInstanceOwnerToken(request: gitpod_v1_workspaces_pb.GetWorkspaceInstanceOwnerTokenRequest, metadata: grpc.Metadata, options: Partial, callback: (error: grpc.ServiceError | null, response: gitpod_v1_workspaces_pb.GetWorkspaceInstanceOwnerTokenResponse) => void): grpc.ClientUnaryCall; listenToWorkspaceInstance(request: gitpod_v1_workspaces_pb.ListenToWorkspaceInstanceRequest, options?: Partial): grpc.ClientReadableStream; listenToWorkspaceInstance(request: gitpod_v1_workspaces_pb.ListenToWorkspaceInstanceRequest, metadata?: grpc.Metadata, options?: Partial): grpc.ClientReadableStream; listenToImageBuildLogs(request: gitpod_v1_workspaces_pb.ListenToImageBuildLogsRequest, options?: Partial): grpc.ClientReadableStream; @@ -148,6 +162,9 @@ export class WorkspacesServiceClient extends grpc.Client implements IWorkspacesS public getActiveWorkspaceInstance(request: gitpod_v1_workspaces_pb.GetActiveWorkspaceInstanceRequest, callback: (error: grpc.ServiceError | null, response: gitpod_v1_workspaces_pb.GetActiveWorkspaceInstanceResponse) => void): grpc.ClientUnaryCall; public getActiveWorkspaceInstance(request: gitpod_v1_workspaces_pb.GetActiveWorkspaceInstanceRequest, metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: gitpod_v1_workspaces_pb.GetActiveWorkspaceInstanceResponse) => void): grpc.ClientUnaryCall; public getActiveWorkspaceInstance(request: gitpod_v1_workspaces_pb.GetActiveWorkspaceInstanceRequest, metadata: grpc.Metadata, options: Partial, callback: (error: grpc.ServiceError | null, response: gitpod_v1_workspaces_pb.GetActiveWorkspaceInstanceResponse) => void): grpc.ClientUnaryCall; + public getWorkspaceInstanceOwnerToken(request: gitpod_v1_workspaces_pb.GetWorkspaceInstanceOwnerTokenRequest, callback: (error: grpc.ServiceError | null, response: gitpod_v1_workspaces_pb.GetWorkspaceInstanceOwnerTokenResponse) => void): grpc.ClientUnaryCall; + public getWorkspaceInstanceOwnerToken(request: gitpod_v1_workspaces_pb.GetWorkspaceInstanceOwnerTokenRequest, metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: gitpod_v1_workspaces_pb.GetWorkspaceInstanceOwnerTokenResponse) => void): grpc.ClientUnaryCall; + public getWorkspaceInstanceOwnerToken(request: gitpod_v1_workspaces_pb.GetWorkspaceInstanceOwnerTokenRequest, metadata: grpc.Metadata, options: Partial, callback: (error: grpc.ServiceError | null, response: gitpod_v1_workspaces_pb.GetWorkspaceInstanceOwnerTokenResponse) => void): grpc.ClientUnaryCall; public listenToWorkspaceInstance(request: gitpod_v1_workspaces_pb.ListenToWorkspaceInstanceRequest, options?: Partial): grpc.ClientReadableStream; public listenToWorkspaceInstance(request: gitpod_v1_workspaces_pb.ListenToWorkspaceInstanceRequest, metadata?: grpc.Metadata, options?: Partial): grpc.ClientReadableStream; public listenToImageBuildLogs(request: gitpod_v1_workspaces_pb.ListenToImageBuildLogsRequest, options?: Partial): grpc.ClientReadableStream; diff --git a/components/public-api/typescript/src/gitpod/v1/workspaces_grpc_pb.js b/components/public-api/typescript/src/gitpod/v1/workspaces_grpc_pb.js index 2ece84e8354589..592f9a78fcd77c 100644 --- a/components/public-api/typescript/src/gitpod/v1/workspaces_grpc_pb.js +++ b/components/public-api/typescript/src/gitpod/v1/workspaces_grpc_pb.js @@ -51,6 +51,28 @@ function deserialize_gitpod_v1_GetActiveWorkspaceInstanceResponse(buffer_arg) { return gitpod_v1_workspaces_pb.GetActiveWorkspaceInstanceResponse.deserializeBinary(new Uint8Array(buffer_arg)); } +function serialize_gitpod_v1_GetWorkspaceInstanceOwnerTokenRequest(arg) { + if (!(arg instanceof gitpod_v1_workspaces_pb.GetWorkspaceInstanceOwnerTokenRequest)) { + throw new Error('Expected argument of type gitpod.v1.GetWorkspaceInstanceOwnerTokenRequest'); + } + return Buffer.from(arg.serializeBinary()); +} + +function deserialize_gitpod_v1_GetWorkspaceInstanceOwnerTokenRequest(buffer_arg) { + return gitpod_v1_workspaces_pb.GetWorkspaceInstanceOwnerTokenRequest.deserializeBinary(new Uint8Array(buffer_arg)); +} + +function serialize_gitpod_v1_GetWorkspaceInstanceOwnerTokenResponse(arg) { + if (!(arg instanceof gitpod_v1_workspaces_pb.GetWorkspaceInstanceOwnerTokenResponse)) { + throw new Error('Expected argument of type gitpod.v1.GetWorkspaceInstanceOwnerTokenResponse'); + } + return Buffer.from(arg.serializeBinary()); +} + +function deserialize_gitpod_v1_GetWorkspaceInstanceOwnerTokenResponse(buffer_arg) { + return gitpod_v1_workspaces_pb.GetWorkspaceInstanceOwnerTokenResponse.deserializeBinary(new Uint8Array(buffer_arg)); +} + function serialize_gitpod_v1_GetWorkspaceRequest(arg) { if (!(arg instanceof gitpod_v1_workspaces_pb.GetWorkspaceRequest)) { throw new Error('Expected argument of type gitpod.v1.GetWorkspaceRequest'); @@ -248,6 +270,20 @@ getActiveWorkspaceInstance: { responseSerialize: serialize_gitpod_v1_GetActiveWorkspaceInstanceResponse, responseDeserialize: deserialize_gitpod_v1_GetActiveWorkspaceInstanceResponse, }, + // GetWorkspaceInstanceOwnerToken returns the owner token of a workspace instance. +// Note: the owner token is not part of the workspace instance status so that we can scope its access on the +// API function level. +getWorkspaceInstanceOwnerToken: { + path: '/gitpod.v1.WorkspacesService/GetWorkspaceInstanceOwnerToken', + requestStream: false, + responseStream: false, + requestType: gitpod_v1_workspaces_pb.GetWorkspaceInstanceOwnerTokenRequest, + responseType: gitpod_v1_workspaces_pb.GetWorkspaceInstanceOwnerTokenResponse, + requestSerialize: serialize_gitpod_v1_GetWorkspaceInstanceOwnerTokenRequest, + requestDeserialize: deserialize_gitpod_v1_GetWorkspaceInstanceOwnerTokenRequest, + responseSerialize: serialize_gitpod_v1_GetWorkspaceInstanceOwnerTokenResponse, + responseDeserialize: deserialize_gitpod_v1_GetWorkspaceInstanceOwnerTokenResponse, + }, // ListenToWorkspaceInstance listens to workspace instance updates. listenToWorkspaceInstance: { path: '/gitpod.v1.WorkspacesService/ListenToWorkspaceInstance', diff --git a/components/public-api/typescript/src/gitpod/v1/workspaces_pb.d.ts b/components/public-api/typescript/src/gitpod/v1/workspaces_pb.d.ts index 01a6c2a7fa56b1..6a91204542761a 100644 --- a/components/public-api/typescript/src/gitpod/v1/workspaces_pb.d.ts +++ b/components/public-api/typescript/src/gitpod/v1/workspaces_pb.d.ts @@ -302,6 +302,46 @@ export namespace GetActiveWorkspaceInstanceResponse { } } +export class GetWorkspaceInstanceOwnerTokenRequest extends jspb.Message { + getInstanceId(): string; + setInstanceId(value: string): GetWorkspaceInstanceOwnerTokenRequest; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): GetWorkspaceInstanceOwnerTokenRequest.AsObject; + static toObject(includeInstance: boolean, msg: GetWorkspaceInstanceOwnerTokenRequest): GetWorkspaceInstanceOwnerTokenRequest.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: GetWorkspaceInstanceOwnerTokenRequest, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): GetWorkspaceInstanceOwnerTokenRequest; + static deserializeBinaryFromReader(message: GetWorkspaceInstanceOwnerTokenRequest, reader: jspb.BinaryReader): GetWorkspaceInstanceOwnerTokenRequest; +} + +export namespace GetWorkspaceInstanceOwnerTokenRequest { + export type AsObject = { + instanceId: string, + } +} + +export class GetWorkspaceInstanceOwnerTokenResponse extends jspb.Message { + getOwnerToken(): string; + setOwnerToken(value: string): GetWorkspaceInstanceOwnerTokenResponse; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): GetWorkspaceInstanceOwnerTokenResponse.AsObject; + static toObject(includeInstance: boolean, msg: GetWorkspaceInstanceOwnerTokenResponse): GetWorkspaceInstanceOwnerTokenResponse.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: GetWorkspaceInstanceOwnerTokenResponse, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): GetWorkspaceInstanceOwnerTokenResponse; + static deserializeBinaryFromReader(message: GetWorkspaceInstanceOwnerTokenResponse, reader: jspb.BinaryReader): GetWorkspaceInstanceOwnerTokenResponse; +} + +export namespace GetWorkspaceInstanceOwnerTokenResponse { + export type AsObject = { + ownerToken: string, + } +} + export class ListenToWorkspaceInstanceRequest extends jspb.Message { getInstanceId(): string; setInstanceId(value: string): ListenToWorkspaceInstanceRequest; @@ -628,11 +668,8 @@ export class WorkspaceInstanceStatus extends jspb.Message { setMessage(value: string): WorkspaceInstanceStatus; getUrl(): string; setUrl(value: string): WorkspaceInstanceStatus; - - hasAuth(): boolean; - clearAuth(): void; - getAuth(): WorkspaceInstanceAuthentication | undefined; - setAuth(value?: WorkspaceInstanceAuthentication): WorkspaceInstanceStatus; + getAdmission(): AdmissionLevel; + setAdmission(value: AdmissionLevel): WorkspaceInstanceStatus; serializeBinary(): Uint8Array; toObject(includeInstance?: boolean): WorkspaceInstanceStatus.AsObject; @@ -651,7 +688,7 @@ export namespace WorkspaceInstanceStatus { conditions?: WorkspaceInstanceConditions.AsObject, message: string, url: string, - auth?: WorkspaceInstanceAuthentication.AsObject, + admission: AdmissionLevel, } } @@ -690,29 +727,6 @@ export namespace WorkspaceInstanceConditions { } } -export class WorkspaceInstanceAuthentication extends jspb.Message { - getAdmission(): AdmissionLevel; - setAdmission(value: AdmissionLevel): WorkspaceInstanceAuthentication; - getOwnerToken(): string; - setOwnerToken(value: string): WorkspaceInstanceAuthentication; - - serializeBinary(): Uint8Array; - toObject(includeInstance?: boolean): WorkspaceInstanceAuthentication.AsObject; - static toObject(includeInstance: boolean, msg: WorkspaceInstanceAuthentication): WorkspaceInstanceAuthentication.AsObject; - static extensions: {[key: number]: jspb.ExtensionFieldInfo}; - static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; - static serializeBinaryToWriter(message: WorkspaceInstanceAuthentication, writer: jspb.BinaryWriter): void; - static deserializeBinary(bytes: Uint8Array): WorkspaceInstanceAuthentication; - static deserializeBinaryFromReader(message: WorkspaceInstanceAuthentication, reader: jspb.BinaryReader): WorkspaceInstanceAuthentication; -} - -export namespace WorkspaceInstanceAuthentication { - export type AsObject = { - admission: AdmissionLevel, - ownerToken: string, - } -} - export class StartWorkspaceSpec extends jspb.Message { serializeBinary(): Uint8Array; diff --git a/components/public-api/typescript/src/gitpod/v1/workspaces_pb.js b/components/public-api/typescript/src/gitpod/v1/workspaces_pb.js index c7849bffc1e713..2e1e0c9abb21d9 100644 --- a/components/public-api/typescript/src/gitpod/v1/workspaces_pb.js +++ b/components/public-api/typescript/src/gitpod/v1/workspaces_pb.js @@ -33,6 +33,8 @@ goog.exportSymbol('proto.gitpod.v1.CreateAndStartWorkspaceRequest.PrebuildCase', goog.exportSymbol('proto.gitpod.v1.CreateAndStartWorkspaceResponse', null, global); goog.exportSymbol('proto.gitpod.v1.GetActiveWorkspaceInstanceRequest', null, global); goog.exportSymbol('proto.gitpod.v1.GetActiveWorkspaceInstanceResponse', null, global); +goog.exportSymbol('proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenRequest', null, global); +goog.exportSymbol('proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenResponse', null, global); goog.exportSymbol('proto.gitpod.v1.GetWorkspaceRequest', null, global); goog.exportSymbol('proto.gitpod.v1.GetWorkspaceResponse', null, global); goog.exportSymbol('proto.gitpod.v1.ListWorkspacesRequest', null, global); @@ -54,7 +56,6 @@ goog.exportSymbol('proto.gitpod.v1.WorkspaceContext.Git', null, global); goog.exportSymbol('proto.gitpod.v1.WorkspaceContext.Prebuild', null, global); goog.exportSymbol('proto.gitpod.v1.WorkspaceContext.Snapshot', null, global); goog.exportSymbol('proto.gitpod.v1.WorkspaceInstance', null, global); -goog.exportSymbol('proto.gitpod.v1.WorkspaceInstanceAuthentication', null, global); goog.exportSymbol('proto.gitpod.v1.WorkspaceInstanceConditions', null, global); goog.exportSymbol('proto.gitpod.v1.WorkspaceInstancePhase', null, global); goog.exportSymbol('proto.gitpod.v1.WorkspaceInstanceStatus', null, global); @@ -289,6 +290,48 @@ if (goog.DEBUG && !COMPILED) { */ proto.gitpod.v1.GetActiveWorkspaceInstanceResponse.displayName = 'proto.gitpod.v1.GetActiveWorkspaceInstanceResponse'; } +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenRequest = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenRequest, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenRequest.displayName = 'proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenRequest'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenResponse = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenResponse, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenResponse.displayName = 'proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenResponse'; +} /** * Generated by JsPbCodeGenerator. * @param {Array=} opt_data Optional initial data array, typically from a @@ -583,27 +626,6 @@ if (goog.DEBUG && !COMPILED) { */ proto.gitpod.v1.WorkspaceInstanceConditions.displayName = 'proto.gitpod.v1.WorkspaceInstanceConditions'; } -/** - * Generated by JsPbCodeGenerator. - * @param {Array=} opt_data Optional initial data array, typically from a - * server response, or constructed directly in Javascript. The array is used - * in place and becomes part of the constructed object. It is not cloned. - * If no data is provided, the constructed object will be empty, but still - * valid. - * @extends {jspb.Message} - * @constructor - */ -proto.gitpod.v1.WorkspaceInstanceAuthentication = function(opt_data) { - jspb.Message.initialize(this, opt_data, 0, -1, null, null); -}; -goog.inherits(proto.gitpod.v1.WorkspaceInstanceAuthentication, jspb.Message); -if (goog.DEBUG && !COMPILED) { - /** - * @public - * @override - */ - proto.gitpod.v1.WorkspaceInstanceAuthentication.displayName = 'proto.gitpod.v1.WorkspaceInstanceAuthentication'; -} /** * Generated by JsPbCodeGenerator. * @param {Array=} opt_data Optional initial data array, typically from a @@ -2618,6 +2640,266 @@ proto.gitpod.v1.GetActiveWorkspaceInstanceResponse.prototype.hasInstance = funct +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenRequest.prototype.toObject = function(opt_includeInstance) { + return proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenRequest.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenRequest} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenRequest.toObject = function(includeInstance, msg) { + var f, obj = { + instanceId: jspb.Message.getFieldWithDefault(msg, 1, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenRequest} + */ +proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenRequest.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenRequest; + return proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenRequest.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenRequest} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenRequest} + */ +proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenRequest.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setInstanceId(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenRequest.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenRequest.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenRequest} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenRequest.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getInstanceId(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } +}; + + +/** + * optional string instance_id = 1; + * @return {string} + */ +proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenRequest.prototype.getInstanceId = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenRequest} returns this + */ +proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenRequest.prototype.setInstanceId = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenResponse.prototype.toObject = function(opt_includeInstance) { + return proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenResponse.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenResponse} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenResponse.toObject = function(includeInstance, msg) { + var f, obj = { + ownerToken: jspb.Message.getFieldWithDefault(msg, 2, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenResponse} + */ +proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenResponse.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenResponse; + return proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenResponse.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenResponse} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenResponse} + */ +proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenResponse.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 2: + var value = /** @type {string} */ (reader.readString()); + msg.setOwnerToken(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenResponse.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenResponse.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenResponse} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenResponse.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getOwnerToken(); + if (f.length > 0) { + writer.writeString( + 2, + f + ); + } +}; + + +/** + * optional string owner_token = 2; + * @return {string} + */ +proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenResponse.prototype.getOwnerToken = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +}; + + +/** + * @param {string} value + * @return {!proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenResponse} returns this + */ +proto.gitpod.v1.GetWorkspaceInstanceOwnerTokenResponse.prototype.setOwnerToken = function(value) { + return jspb.Message.setProto3StringField(this, 2, value); +}; + + + + + if (jspb.Message.GENERATE_TO_OBJECT) { /** * Creates an object representation of this proto. @@ -4768,7 +5050,7 @@ proto.gitpod.v1.WorkspaceInstanceStatus.toObject = function(includeInstance, msg conditions: (f = msg.getConditions()) && proto.gitpod.v1.WorkspaceInstanceConditions.toObject(includeInstance, f), message: jspb.Message.getFieldWithDefault(msg, 4, ""), url: jspb.Message.getFieldWithDefault(msg, 5, ""), - auth: (f = msg.getAuth()) && proto.gitpod.v1.WorkspaceInstanceAuthentication.toObject(includeInstance, f) + admission: jspb.Message.getFieldWithDefault(msg, 6, 0) }; if (includeInstance) { @@ -4827,9 +5109,8 @@ proto.gitpod.v1.WorkspaceInstanceStatus.deserializeBinaryFromReader = function(m msg.setUrl(value); break; case 6: - var value = new proto.gitpod.v1.WorkspaceInstanceAuthentication; - reader.readMessage(value,proto.gitpod.v1.WorkspaceInstanceAuthentication.deserializeBinaryFromReader); - msg.setAuth(value); + var value = /** @type {!proto.gitpod.v1.AdmissionLevel} */ (reader.readEnum()); + msg.setAdmission(value); break; default: reader.skipField(); @@ -4896,12 +5177,11 @@ proto.gitpod.v1.WorkspaceInstanceStatus.serializeBinaryToWriter = function(messa f ); } - f = message.getAuth(); - if (f != null) { - writer.writeMessage( + f = message.getAdmission(); + if (f !== 0.0) { + writer.writeEnum( 6, - f, - proto.gitpod.v1.WorkspaceInstanceAuthentication.serializeBinaryToWriter + f ); } }; @@ -5017,39 +5297,20 @@ proto.gitpod.v1.WorkspaceInstanceStatus.prototype.setUrl = function(value) { /** - * optional WorkspaceInstanceAuthentication auth = 6; - * @return {?proto.gitpod.v1.WorkspaceInstanceAuthentication} + * optional AdmissionLevel admission = 6; + * @return {!proto.gitpod.v1.AdmissionLevel} */ -proto.gitpod.v1.WorkspaceInstanceStatus.prototype.getAuth = function() { - return /** @type{?proto.gitpod.v1.WorkspaceInstanceAuthentication} */ ( - jspb.Message.getWrapperField(this, proto.gitpod.v1.WorkspaceInstanceAuthentication, 6)); +proto.gitpod.v1.WorkspaceInstanceStatus.prototype.getAdmission = function() { + return /** @type {!proto.gitpod.v1.AdmissionLevel} */ (jspb.Message.getFieldWithDefault(this, 6, 0)); }; /** - * @param {?proto.gitpod.v1.WorkspaceInstanceAuthentication|undefined} value - * @return {!proto.gitpod.v1.WorkspaceInstanceStatus} returns this -*/ -proto.gitpod.v1.WorkspaceInstanceStatus.prototype.setAuth = function(value) { - return jspb.Message.setWrapperField(this, 6, value); -}; - - -/** - * Clears the message field making it undefined. + * @param {!proto.gitpod.v1.AdmissionLevel} value * @return {!proto.gitpod.v1.WorkspaceInstanceStatus} returns this */ -proto.gitpod.v1.WorkspaceInstanceStatus.prototype.clearAuth = function() { - return this.setAuth(undefined); -}; - - -/** - * Returns whether this field is set. - * @return {boolean} - */ -proto.gitpod.v1.WorkspaceInstanceStatus.prototype.hasAuth = function() { - return jspb.Message.getField(this, 6) != null; +proto.gitpod.v1.WorkspaceInstanceStatus.prototype.setAdmission = function(value) { + return jspb.Message.setProto3EnumField(this, 6, value); }; @@ -5315,166 +5576,6 @@ proto.gitpod.v1.WorkspaceInstanceConditions.prototype.hasStoppedByRequest = func -if (jspb.Message.GENERATE_TO_OBJECT) { -/** - * Creates an object representation of this proto. - * Field names that are reserved in JavaScript and will be renamed to pb_name. - * Optional fields that are not set will be set to undefined. - * To access a reserved field use, foo.pb_, eg, foo.pb_default. - * For the list of reserved names please see: - * net/proto2/compiler/js/internal/generator.cc#kKeyword. - * @param {boolean=} opt_includeInstance Deprecated. whether to include the - * JSPB instance for transitional soy proto support: - * http://goto/soy-param-migration - * @return {!Object} - */ -proto.gitpod.v1.WorkspaceInstanceAuthentication.prototype.toObject = function(opt_includeInstance) { - return proto.gitpod.v1.WorkspaceInstanceAuthentication.toObject(opt_includeInstance, this); -}; - - -/** - * Static version of the {@see toObject} method. - * @param {boolean|undefined} includeInstance Deprecated. Whether to include - * the JSPB instance for transitional soy proto support: - * http://goto/soy-param-migration - * @param {!proto.gitpod.v1.WorkspaceInstanceAuthentication} msg The msg instance to transform. - * @return {!Object} - * @suppress {unusedLocalVariables} f is only used for nested messages - */ -proto.gitpod.v1.WorkspaceInstanceAuthentication.toObject = function(includeInstance, msg) { - var f, obj = { - admission: jspb.Message.getFieldWithDefault(msg, 1, 0), - ownerToken: jspb.Message.getFieldWithDefault(msg, 2, "") - }; - - if (includeInstance) { - obj.$jspbMessageInstance = msg; - } - return obj; -}; -} - - -/** - * Deserializes binary data (in protobuf wire format). - * @param {jspb.ByteSource} bytes The bytes to deserialize. - * @return {!proto.gitpod.v1.WorkspaceInstanceAuthentication} - */ -proto.gitpod.v1.WorkspaceInstanceAuthentication.deserializeBinary = function(bytes) { - var reader = new jspb.BinaryReader(bytes); - var msg = new proto.gitpod.v1.WorkspaceInstanceAuthentication; - return proto.gitpod.v1.WorkspaceInstanceAuthentication.deserializeBinaryFromReader(msg, reader); -}; - - -/** - * Deserializes binary data (in protobuf wire format) from the - * given reader into the given message object. - * @param {!proto.gitpod.v1.WorkspaceInstanceAuthentication} msg The message object to deserialize into. - * @param {!jspb.BinaryReader} reader The BinaryReader to use. - * @return {!proto.gitpod.v1.WorkspaceInstanceAuthentication} - */ -proto.gitpod.v1.WorkspaceInstanceAuthentication.deserializeBinaryFromReader = function(msg, reader) { - while (reader.nextField()) { - if (reader.isEndGroup()) { - break; - } - var field = reader.getFieldNumber(); - switch (field) { - case 1: - var value = /** @type {!proto.gitpod.v1.AdmissionLevel} */ (reader.readEnum()); - msg.setAdmission(value); - break; - case 2: - var value = /** @type {string} */ (reader.readString()); - msg.setOwnerToken(value); - break; - default: - reader.skipField(); - break; - } - } - return msg; -}; - - -/** - * Serializes the message to binary data (in protobuf wire format). - * @return {!Uint8Array} - */ -proto.gitpod.v1.WorkspaceInstanceAuthentication.prototype.serializeBinary = function() { - var writer = new jspb.BinaryWriter(); - proto.gitpod.v1.WorkspaceInstanceAuthentication.serializeBinaryToWriter(this, writer); - return writer.getResultBuffer(); -}; - - -/** - * Serializes the given message to binary data (in protobuf wire - * format), writing to the given BinaryWriter. - * @param {!proto.gitpod.v1.WorkspaceInstanceAuthentication} message - * @param {!jspb.BinaryWriter} writer - * @suppress {unusedLocalVariables} f is only used for nested messages - */ -proto.gitpod.v1.WorkspaceInstanceAuthentication.serializeBinaryToWriter = function(message, writer) { - var f = undefined; - f = message.getAdmission(); - if (f !== 0.0) { - writer.writeEnum( - 1, - f - ); - } - f = message.getOwnerToken(); - if (f.length > 0) { - writer.writeString( - 2, - f - ); - } -}; - - -/** - * optional AdmissionLevel admission = 1; - * @return {!proto.gitpod.v1.AdmissionLevel} - */ -proto.gitpod.v1.WorkspaceInstanceAuthentication.prototype.getAdmission = function() { - return /** @type {!proto.gitpod.v1.AdmissionLevel} */ (jspb.Message.getFieldWithDefault(this, 1, 0)); -}; - - -/** - * @param {!proto.gitpod.v1.AdmissionLevel} value - * @return {!proto.gitpod.v1.WorkspaceInstanceAuthentication} returns this - */ -proto.gitpod.v1.WorkspaceInstanceAuthentication.prototype.setAdmission = function(value) { - return jspb.Message.setProto3EnumField(this, 1, value); -}; - - -/** - * optional string owner_token = 2; - * @return {string} - */ -proto.gitpod.v1.WorkspaceInstanceAuthentication.prototype.getOwnerToken = function() { - return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); -}; - - -/** - * @param {string} value - * @return {!proto.gitpod.v1.WorkspaceInstanceAuthentication} returns this - */ -proto.gitpod.v1.WorkspaceInstanceAuthentication.prototype.setOwnerToken = function(value) { - return jspb.Message.setProto3StringField(this, 2, value); -}; - - - - - if (jspb.Message.GENERATE_TO_OBJECT) { /** * Creates an object representation of this proto.