feat: add workspace security setting definition

This commit is contained in:
johnnyjoy 2024-08-17 13:11:53 +08:00
parent faa6fcf31c
commit a5bc443db9
21 changed files with 488 additions and 650 deletions

View File

@ -28,7 +28,7 @@ function App() {
}, [workspaceStore.setting.customStyle]); }, [workspaceStore.setting.customStyle]);
useEffect(() => { useEffect(() => {
const hasCustomBranding = workspaceStore.profile.plan === PlanType.PRO; const hasCustomBranding = workspaceStore.profile.subscription?.plan === PlanType.PRO;
if (!hasCustomBranding || !workspaceStore.setting.branding) { if (!hasCustomBranding || !workspaceStore.setting.branding) {
return; return;
} }

View File

@ -35,10 +35,10 @@ const Header: React.FC = () => {
<Logo className="mr-2" /> <Logo className="mr-2" />
Slash Slash
</Link> </Link>
{[PlanType.PRO, PlanType.ENTERPRISE].includes(profile.plan) && ( {profile.subscription?.plan && [PlanType.PRO, PlanType.ENTERPRISE].includes(profile.subscription.plan) && (
<span className="ml-1 text-xs px-1.5 leading-5 border rounded-full bg-blue-600 border-blue-700 text-white shadow dark:opacity-70"> <span className="ml-1 text-xs px-1.5 leading-5 border rounded-full bg-blue-600 border-blue-700 text-white shadow dark:opacity-70">
{/* PRO or ENT */} {/* PRO or ENT */}
{profile.plan.substring(0, 3)} {profile.subscription.plan.substring(0, 3)}
</span> </span>
)} )}
{shouldShowRouterSwitch && ( {shouldShowRouterSwitch && (

View File

@ -9,7 +9,7 @@ interface Props {
const Logo = ({ className }: Props) => { const Logo = ({ className }: Props) => {
const workspaceStore = useWorkspaceStore(); const workspaceStore = useWorkspaceStore();
const hasCustomBranding = workspaceStore.profile.plan === PlanType.PRO; const hasCustomBranding = workspaceStore.profile.subscription?.plan === PlanType.PRO;
const branding = hasCustomBranding && workspaceStore.setting.branding ? new TextDecoder().decode(workspaceStore.setting.branding) : ""; const branding = hasCustomBranding && workspaceStore.setting.branding ? new TextDecoder().decode(workspaceStore.setting.branding) : "";
return ( return (
<div className={classNames("w-8 h-auto dark:text-gray-500 rounded-lg overflow-hidden", className)}> <div className={classNames("w-8 h-auto dark:text-gray-500 rounded-lg overflow-hidden", className)}>

View File

@ -35,7 +35,7 @@ const WorkspaceSection = () => {
const [workspaceSetting, setWorkspaceSetting] = useState<WorkspaceSetting>(workspaceStore.setting); const [workspaceSetting, setWorkspaceSetting] = useState<WorkspaceSetting>(workspaceStore.setting);
const originalWorkspaceSetting = useRef<WorkspaceSetting>(workspaceStore.setting); const originalWorkspaceSetting = useRef<WorkspaceSetting>(workspaceStore.setting);
const allowSave = !isEqual(originalWorkspaceSetting.current, workspaceSetting); const allowSave = !isEqual(originalWorkspaceSetting.current, workspaceSetting);
const hasCustomBranding = workspaceStore.profile.plan === PlanType.PRO; const hasCustomBranding = workspaceStore.profile.subscription?.plan === PlanType.PRO;
const branding = hasCustomBranding && workspaceSetting.branding ? new TextDecoder().decode(workspaceSetting.branding) : ""; const branding = hasCustomBranding && workspaceSetting.branding ? new TextDecoder().decode(workspaceSetting.branding) : "";
const onBrandingChange = async (event: React.ChangeEvent<HTMLInputElement>) => { const onBrandingChange = async (event: React.ChangeEvent<HTMLInputElement>) => {
@ -80,12 +80,10 @@ const WorkspaceSection = () => {
} }
try { try {
const setting = ( const setting = await workspaceServiceClient.updateWorkspaceSetting({
await workspaceServiceClient.updateWorkspaceSetting({ setting: workspaceSetting,
setting: workspaceSetting, updateMask: updateMask,
updateMask: updateMask, });
})
).setting as WorkspaceSetting;
setWorkspaceSetting(setting); setWorkspaceSetting(setting);
await workspaceStore.fetchWorkspaceSetting(); await workspaceStore.fetchWorkspaceSetting();
originalWorkspaceSetting.current = setting; originalWorkspaceSetting.current = setting;

View File

@ -58,7 +58,7 @@ const SubscriptionSetting: React.FC = () => {
<p className="text-2xl shrink-0 font-semibold text-gray-900 dark:text-gray-500">Subscription</p> <p className="text-2xl shrink-0 font-semibold text-gray-900 dark:text-gray-500">Subscription</p>
<div className="mt-2"> <div className="mt-2">
<span className="text-gray-500 mr-2">Current plan:</span> <span className="text-gray-500 mr-2">Current plan:</span>
<span className="text-2xl mr-4 dark:text-gray-400">{stringifyPlanType(profile.plan)}</span> <span className="text-2xl mr-4 dark:text-gray-400">{stringifyPlanType(profile.subscription?.plan)}</span>
</div> </div>
<Textarea <Textarea
className="w-full mt-2" className="w-full mt-2"
@ -70,7 +70,7 @@ const SubscriptionSetting: React.FC = () => {
/> />
<div className="w-full flex justify-between items-center mt-4"> <div className="w-full flex justify-between items-center mt-4">
<div> <div>
{profile.plan === PlanType.FREE && ( {profile.subscription?.plan === PlanType.FREE && (
<Link href="https://yourselfhosted.lemonsqueezy.com/checkout/buy/947e9a56-c93a-4294-8d71-2ea4b0f3ec51" target="_blank"> <Link href="https://yourselfhosted.lemonsqueezy.com/checkout/buy/947e9a56-c93a-4294-8d71-2ea4b0f3ec51" target="_blank">
Buy a license key Buy a license key
<Icon.ExternalLink className="w-4 h-auto ml-1" /> <Icon.ExternalLink className="w-4 h-auto ml-1" />
@ -78,7 +78,7 @@ const SubscriptionSetting: React.FC = () => {
)} )}
</div> </div>
<div className="flex justify-end items-center gap-2"> <div className="flex justify-end items-center gap-2">
{profile.plan !== PlanType.FREE && ( {profile.subscription?.plan !== PlanType.FREE && (
<Button color="neutral" variant="plain" onClick={handleDeleteLicenseKey}> <Button color="neutral" variant="plain" onClick={handleDeleteLicenseKey}>
Reset Reset
</Button> </Button>

View File

@ -33,7 +33,7 @@ const WorkspaceSetting = () => {
<p className="text-2xl shrink-0 font-semibold text-gray-900 dark:text-gray-500">Subscription</p> <p className="text-2xl shrink-0 font-semibold text-gray-900 dark:text-gray-500">Subscription</p>
<div className="mt-2"> <div className="mt-2">
<span className="text-gray-500 mr-2">Current plan:</span> <span className="text-gray-500 mr-2">Current plan:</span>
<span className="text-2xl mr-4 dark:text-gray-400">{stringifyPlanType(profile.plan)}</span> <span className="text-2xl mr-4 dark:text-gray-400">{stringifyPlanType(profile.subscription?.plan)}</span>
<Link to="/setting/subscription" unstable_viewTransition> <Link to="/setting/subscription" unstable_viewTransition>
<Button size="sm" variant="outlined" startDecorator={<Icon.Settings className="w-4 h-auto" />}> <Button size="sm" variant="outlined" startDecorator={<Icon.Settings className="w-4 h-auto" />}>
Manage Manage

View File

@ -1,6 +1,6 @@
import { PlanType } from "@/types/proto/api/v1/subscription_service"; import { PlanType } from "@/types/proto/api/v1/subscription_service";
export const stringifyPlanType = (planType: PlanType) => { export const stringifyPlanType = (planType: PlanType = PlanType.FREE) => {
if (planType === PlanType.FREE) { if (planType === PlanType.FREE) {
return "Free"; return "Free";
} else if (planType === PlanType.PRO) { } else if (planType === PlanType.PRO) {

View File

@ -24,17 +24,17 @@ const useWorkspaceStore = create<WorkspaceState>()((set, get) => ({
profile: WorkspaceProfile.fromPartial({}), profile: WorkspaceProfile.fromPartial({}),
setting: WorkspaceSetting.fromPartial({}), setting: WorkspaceSetting.fromPartial({}),
fetchWorkspaceProfile: async () => { fetchWorkspaceProfile: async () => {
const workspaceProfile = (await workspaceServiceClient.getWorkspaceProfile({})).profile as WorkspaceProfile; const workspaceProfile = await workspaceServiceClient.getWorkspaceProfile({});
set({ ...get(), profile: workspaceProfile }); set({ ...get(), profile: workspaceProfile });
return workspaceProfile; return workspaceProfile;
}, },
fetchWorkspaceSetting: async () => { fetchWorkspaceSetting: async () => {
const workspaceSetting = (await workspaceServiceClient.getWorkspaceSetting({})).setting as WorkspaceSetting; const workspaceSetting = await workspaceServiceClient.getWorkspaceSetting({});
set({ ...get(), setting: workspaceSetting }); set({ ...get(), setting: workspaceSetting });
return workspaceSetting; return workspaceSetting;
}, },
checkFeatureAvailable: (feature: FeatureType): boolean => { checkFeatureAvailable: (feature: FeatureType): boolean => {
return get().profile.features.includes(feature); return get().profile.subscription?.features.includes(feature) || false;
}, },
})); }));

View File

@ -11,13 +11,13 @@ import "google/protobuf/field_mask.proto";
option go_package = "gen/api/v1"; option go_package = "gen/api/v1";
service WorkspaceService { service WorkspaceService {
rpc GetWorkspaceProfile(GetWorkspaceProfileRequest) returns (GetWorkspaceProfileResponse) { rpc GetWorkspaceProfile(GetWorkspaceProfileRequest) returns (WorkspaceProfile) {
option (google.api.http) = {get: "/api/v1/workspace/profile"}; option (google.api.http) = {get: "/api/v1/workspace/profile"};
} }
rpc GetWorkspaceSetting(GetWorkspaceSettingRequest) returns (GetWorkspaceSettingResponse) { rpc GetWorkspaceSetting(GetWorkspaceSettingRequest) returns (WorkspaceSetting) {
option (google.api.http) = {get: "/api/v1/workspace/setting"}; option (google.api.http) = {get: "/api/v1/workspace/setting"};
} }
rpc UpdateWorkspaceSetting(UpdateWorkspaceSettingRequest) returns (UpdateWorkspaceSettingResponse) { rpc UpdateWorkspaceSetting(UpdateWorkspaceSettingRequest) returns (WorkspaceSetting) {
option (google.api.http) = { option (google.api.http) = {
patch: "/api/v1/workspace/setting" patch: "/api/v1/workspace/setting"
body: "setting" body: "setting"
@ -31,8 +31,8 @@ message WorkspaceProfile {
string mode = 1; string mode = 1;
// Current workspace version. // Current workspace version.
string version = 2; string version = 2;
// The workspace plan. // The workspace subscription.
PlanType plan = 3; Subscription subscription = 3;
// Whether to enable other users to sign up. // Whether to enable other users to sign up.
bool enable_signup = 4; bool enable_signup = 4;
// The custom style. // The custom style.
@ -42,8 +42,6 @@ message WorkspaceProfile {
string owner = 6; string owner = 6;
// The workspace branding. // The workspace branding.
bytes branding = 7; bytes branding = 7;
// The workspace available features.
repeated string features = 8;
} }
message WorkspaceSetting { message WorkspaceSetting {
@ -94,26 +92,11 @@ message IdentityProviderConfig {
message GetWorkspaceProfileRequest {} message GetWorkspaceProfileRequest {}
message GetWorkspaceProfileResponse {
// The workspace profile.
WorkspaceProfile profile = 1;
}
message GetWorkspaceSettingRequest {} message GetWorkspaceSettingRequest {}
message GetWorkspaceSettingResponse {
// The user setting.
WorkspaceSetting setting = 1;
}
message UpdateWorkspaceSettingRequest { message UpdateWorkspaceSettingRequest {
// The user setting. // The user setting.
WorkspaceSetting setting = 1; WorkspaceSetting setting = 1;
// The update mask. // The update mask.
google.protobuf.FieldMask update_mask = 2; google.protobuf.FieldMask update_mask = 2;
} }
message UpdateWorkspaceSettingResponse {
// The user setting.
WorkspaceSetting setting = 1;
}

View File

@ -102,15 +102,12 @@
- [api/v1/workspace_service.proto](#api_v1_workspace_service-proto) - [api/v1/workspace_service.proto](#api_v1_workspace_service-proto)
- [GetWorkspaceProfileRequest](#slash-api-v1-GetWorkspaceProfileRequest) - [GetWorkspaceProfileRequest](#slash-api-v1-GetWorkspaceProfileRequest)
- [GetWorkspaceProfileResponse](#slash-api-v1-GetWorkspaceProfileResponse)
- [GetWorkspaceSettingRequest](#slash-api-v1-GetWorkspaceSettingRequest) - [GetWorkspaceSettingRequest](#slash-api-v1-GetWorkspaceSettingRequest)
- [GetWorkspaceSettingResponse](#slash-api-v1-GetWorkspaceSettingResponse)
- [IdentityProvider](#slash-api-v1-IdentityProvider) - [IdentityProvider](#slash-api-v1-IdentityProvider)
- [IdentityProviderConfig](#slash-api-v1-IdentityProviderConfig) - [IdentityProviderConfig](#slash-api-v1-IdentityProviderConfig)
- [IdentityProviderConfig.FieldMapping](#slash-api-v1-IdentityProviderConfig-FieldMapping) - [IdentityProviderConfig.FieldMapping](#slash-api-v1-IdentityProviderConfig-FieldMapping)
- [IdentityProviderConfig.OAuth2Config](#slash-api-v1-IdentityProviderConfig-OAuth2Config) - [IdentityProviderConfig.OAuth2Config](#slash-api-v1-IdentityProviderConfig-OAuth2Config)
- [UpdateWorkspaceSettingRequest](#slash-api-v1-UpdateWorkspaceSettingRequest) - [UpdateWorkspaceSettingRequest](#slash-api-v1-UpdateWorkspaceSettingRequest)
- [UpdateWorkspaceSettingResponse](#slash-api-v1-UpdateWorkspaceSettingResponse)
- [WorkspaceProfile](#slash-api-v1-WorkspaceProfile) - [WorkspaceProfile](#slash-api-v1-WorkspaceProfile)
- [WorkspaceSetting](#slash-api-v1-WorkspaceSetting) - [WorkspaceSetting](#slash-api-v1-WorkspaceSetting)
@ -1368,21 +1365,6 @@
<a name="slash-api-v1-GetWorkspaceProfileResponse"></a>
### GetWorkspaceProfileResponse
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| profile | [WorkspaceProfile](#slash-api-v1-WorkspaceProfile) | | The workspace profile. |
<a name="slash-api-v1-GetWorkspaceSettingRequest"></a> <a name="slash-api-v1-GetWorkspaceSettingRequest"></a>
### GetWorkspaceSettingRequest ### GetWorkspaceSettingRequest
@ -1393,21 +1375,6 @@
<a name="slash-api-v1-GetWorkspaceSettingResponse"></a>
### GetWorkspaceSettingResponse
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| setting | [WorkspaceSetting](#slash-api-v1-WorkspaceSetting) | | The user setting. |
<a name="slash-api-v1-IdentityProvider"></a> <a name="slash-api-v1-IdentityProvider"></a>
### IdentityProvider ### IdentityProvider
@ -1494,21 +1461,6 @@
<a name="slash-api-v1-UpdateWorkspaceSettingResponse"></a>
### UpdateWorkspaceSettingResponse
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| setting | [WorkspaceSetting](#slash-api-v1-WorkspaceSetting) | | The user setting. |
<a name="slash-api-v1-WorkspaceProfile"></a> <a name="slash-api-v1-WorkspaceProfile"></a>
### WorkspaceProfile ### WorkspaceProfile
@ -1519,12 +1471,11 @@
| ----- | ---- | ----- | ----------- | | ----- | ---- | ----- | ----------- |
| mode | [string](#string) | | Current workspace mode: dev, prod. | | mode | [string](#string) | | Current workspace mode: dev, prod. |
| version | [string](#string) | | Current workspace version. | | version | [string](#string) | | Current workspace version. |
| plan | [PlanType](#slash-api-v1-PlanType) | | The workspace plan. | | subscription | [Subscription](#slash-api-v1-Subscription) | | The workspace subscription. |
| enable_signup | [bool](#bool) | | Whether to enable other users to sign up. | | enable_signup | [bool](#bool) | | Whether to enable other users to sign up. |
| custom_style | [string](#string) | | The custom style. | | custom_style | [string](#string) | | The custom style. |
| owner | [string](#string) | | The owner name. Format: &#34;users/{id}&#34; | | owner | [string](#string) | | The owner name. Format: &#34;users/{id}&#34; |
| branding | [bytes](#bytes) | | The workspace branding. | | branding | [bytes](#bytes) | | The workspace branding. |
| features | [string](#string) | repeated | The workspace available features. |
@ -1574,9 +1525,9 @@
| Method Name | Request Type | Response Type | Description | | Method Name | Request Type | Response Type | Description |
| ----------- | ------------ | ------------- | ------------| | ----------- | ------------ | ------------- | ------------|
| GetWorkspaceProfile | [GetWorkspaceProfileRequest](#slash-api-v1-GetWorkspaceProfileRequest) | [GetWorkspaceProfileResponse](#slash-api-v1-GetWorkspaceProfileResponse) | | | GetWorkspaceProfile | [GetWorkspaceProfileRequest](#slash-api-v1-GetWorkspaceProfileRequest) | [WorkspaceProfile](#slash-api-v1-WorkspaceProfile) | |
| GetWorkspaceSetting | [GetWorkspaceSettingRequest](#slash-api-v1-GetWorkspaceSettingRequest) | [GetWorkspaceSettingResponse](#slash-api-v1-GetWorkspaceSettingResponse) | | | GetWorkspaceSetting | [GetWorkspaceSettingRequest](#slash-api-v1-GetWorkspaceSettingRequest) | [WorkspaceSetting](#slash-api-v1-WorkspaceSetting) | |
| UpdateWorkspaceSetting | [UpdateWorkspaceSettingRequest](#slash-api-v1-UpdateWorkspaceSettingRequest) | [UpdateWorkspaceSettingResponse](#slash-api-v1-UpdateWorkspaceSettingResponse) | | | UpdateWorkspaceSetting | [UpdateWorkspaceSettingRequest](#slash-api-v1-UpdateWorkspaceSettingRequest) | [WorkspaceSetting](#slash-api-v1-WorkspaceSetting) | |

View File

@ -77,8 +77,8 @@ type WorkspaceProfile struct {
Mode string `protobuf:"bytes,1,opt,name=mode,proto3" json:"mode,omitempty"` Mode string `protobuf:"bytes,1,opt,name=mode,proto3" json:"mode,omitempty"`
// Current workspace version. // Current workspace version.
Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
// The workspace plan. // The workspace subscription.
Plan PlanType `protobuf:"varint,3,opt,name=plan,proto3,enum=slash.api.v1.PlanType" json:"plan,omitempty"` Subscription *Subscription `protobuf:"bytes,3,opt,name=subscription,proto3" json:"subscription,omitempty"`
// Whether to enable other users to sign up. // Whether to enable other users to sign up.
EnableSignup bool `protobuf:"varint,4,opt,name=enable_signup,json=enableSignup,proto3" json:"enable_signup,omitempty"` EnableSignup bool `protobuf:"varint,4,opt,name=enable_signup,json=enableSignup,proto3" json:"enable_signup,omitempty"`
// The custom style. // The custom style.
@ -88,8 +88,6 @@ type WorkspaceProfile struct {
Owner string `protobuf:"bytes,6,opt,name=owner,proto3" json:"owner,omitempty"` Owner string `protobuf:"bytes,6,opt,name=owner,proto3" json:"owner,omitempty"`
// The workspace branding. // The workspace branding.
Branding []byte `protobuf:"bytes,7,opt,name=branding,proto3" json:"branding,omitempty"` Branding []byte `protobuf:"bytes,7,opt,name=branding,proto3" json:"branding,omitempty"`
// The workspace available features.
Features []string `protobuf:"bytes,8,rep,name=features,proto3" json:"features,omitempty"`
} }
func (x *WorkspaceProfile) Reset() { func (x *WorkspaceProfile) Reset() {
@ -138,11 +136,11 @@ func (x *WorkspaceProfile) GetVersion() string {
return "" return ""
} }
func (x *WorkspaceProfile) GetPlan() PlanType { func (x *WorkspaceProfile) GetSubscription() *Subscription {
if x != nil { if x != nil {
return x.Plan return x.Subscription
} }
return PlanType_PLAN_TYPE_UNSPECIFIED return nil
} }
func (x *WorkspaceProfile) GetEnableSignup() bool { func (x *WorkspaceProfile) GetEnableSignup() bool {
@ -173,13 +171,6 @@ func (x *WorkspaceProfile) GetBranding() []byte {
return nil return nil
} }
func (x *WorkspaceProfile) GetFeatures() []string {
if x != nil {
return x.Features
}
return nil
}
type WorkspaceSetting struct { type WorkspaceSetting struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
@ -432,54 +423,6 @@ func (*GetWorkspaceProfileRequest) Descriptor() ([]byte, []int) {
return file_api_v1_workspace_service_proto_rawDescGZIP(), []int{4} return file_api_v1_workspace_service_proto_rawDescGZIP(), []int{4}
} }
type GetWorkspaceProfileResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The workspace profile.
Profile *WorkspaceProfile `protobuf:"bytes,1,opt,name=profile,proto3" json:"profile,omitempty"`
}
func (x *GetWorkspaceProfileResponse) Reset() {
*x = GetWorkspaceProfileResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_api_v1_workspace_service_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *GetWorkspaceProfileResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GetWorkspaceProfileResponse) ProtoMessage() {}
func (x *GetWorkspaceProfileResponse) ProtoReflect() protoreflect.Message {
mi := &file_api_v1_workspace_service_proto_msgTypes[5]
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 GetWorkspaceProfileResponse.ProtoReflect.Descriptor instead.
func (*GetWorkspaceProfileResponse) Descriptor() ([]byte, []int) {
return file_api_v1_workspace_service_proto_rawDescGZIP(), []int{5}
}
func (x *GetWorkspaceProfileResponse) GetProfile() *WorkspaceProfile {
if x != nil {
return x.Profile
}
return nil
}
type GetWorkspaceSettingRequest struct { type GetWorkspaceSettingRequest struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
@ -489,7 +432,7 @@ type GetWorkspaceSettingRequest struct {
func (x *GetWorkspaceSettingRequest) Reset() { func (x *GetWorkspaceSettingRequest) Reset() {
*x = GetWorkspaceSettingRequest{} *x = GetWorkspaceSettingRequest{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_api_v1_workspace_service_proto_msgTypes[6] mi := &file_api_v1_workspace_service_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -502,7 +445,7 @@ func (x *GetWorkspaceSettingRequest) String() string {
func (*GetWorkspaceSettingRequest) ProtoMessage() {} func (*GetWorkspaceSettingRequest) ProtoMessage() {}
func (x *GetWorkspaceSettingRequest) ProtoReflect() protoreflect.Message { func (x *GetWorkspaceSettingRequest) ProtoReflect() protoreflect.Message {
mi := &file_api_v1_workspace_service_proto_msgTypes[6] mi := &file_api_v1_workspace_service_proto_msgTypes[5]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -515,55 +458,7 @@ func (x *GetWorkspaceSettingRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetWorkspaceSettingRequest.ProtoReflect.Descriptor instead. // Deprecated: Use GetWorkspaceSettingRequest.ProtoReflect.Descriptor instead.
func (*GetWorkspaceSettingRequest) Descriptor() ([]byte, []int) { func (*GetWorkspaceSettingRequest) Descriptor() ([]byte, []int) {
return file_api_v1_workspace_service_proto_rawDescGZIP(), []int{6} return file_api_v1_workspace_service_proto_rawDescGZIP(), []int{5}
}
type GetWorkspaceSettingResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The user setting.
Setting *WorkspaceSetting `protobuf:"bytes,1,opt,name=setting,proto3" json:"setting,omitempty"`
}
func (x *GetWorkspaceSettingResponse) Reset() {
*x = GetWorkspaceSettingResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_api_v1_workspace_service_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *GetWorkspaceSettingResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GetWorkspaceSettingResponse) ProtoMessage() {}
func (x *GetWorkspaceSettingResponse) ProtoReflect() protoreflect.Message {
mi := &file_api_v1_workspace_service_proto_msgTypes[7]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use GetWorkspaceSettingResponse.ProtoReflect.Descriptor instead.
func (*GetWorkspaceSettingResponse) Descriptor() ([]byte, []int) {
return file_api_v1_workspace_service_proto_rawDescGZIP(), []int{7}
}
func (x *GetWorkspaceSettingResponse) GetSetting() *WorkspaceSetting {
if x != nil {
return x.Setting
}
return nil
} }
type UpdateWorkspaceSettingRequest struct { type UpdateWorkspaceSettingRequest struct {
@ -580,7 +475,7 @@ type UpdateWorkspaceSettingRequest struct {
func (x *UpdateWorkspaceSettingRequest) Reset() { func (x *UpdateWorkspaceSettingRequest) Reset() {
*x = UpdateWorkspaceSettingRequest{} *x = UpdateWorkspaceSettingRequest{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_api_v1_workspace_service_proto_msgTypes[8] mi := &file_api_v1_workspace_service_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -593,7 +488,7 @@ func (x *UpdateWorkspaceSettingRequest) String() string {
func (*UpdateWorkspaceSettingRequest) ProtoMessage() {} func (*UpdateWorkspaceSettingRequest) ProtoMessage() {}
func (x *UpdateWorkspaceSettingRequest) ProtoReflect() protoreflect.Message { func (x *UpdateWorkspaceSettingRequest) ProtoReflect() protoreflect.Message {
mi := &file_api_v1_workspace_service_proto_msgTypes[8] mi := &file_api_v1_workspace_service_proto_msgTypes[6]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -606,7 +501,7 @@ func (x *UpdateWorkspaceSettingRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use UpdateWorkspaceSettingRequest.ProtoReflect.Descriptor instead. // Deprecated: Use UpdateWorkspaceSettingRequest.ProtoReflect.Descriptor instead.
func (*UpdateWorkspaceSettingRequest) Descriptor() ([]byte, []int) { func (*UpdateWorkspaceSettingRequest) Descriptor() ([]byte, []int) {
return file_api_v1_workspace_service_proto_rawDescGZIP(), []int{8} return file_api_v1_workspace_service_proto_rawDescGZIP(), []int{6}
} }
func (x *UpdateWorkspaceSettingRequest) GetSetting() *WorkspaceSetting { func (x *UpdateWorkspaceSettingRequest) GetSetting() *WorkspaceSetting {
@ -623,54 +518,6 @@ func (x *UpdateWorkspaceSettingRequest) GetUpdateMask() *fieldmaskpb.FieldMask {
return nil return nil
} }
type UpdateWorkspaceSettingResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The user setting.
Setting *WorkspaceSetting `protobuf:"bytes,1,opt,name=setting,proto3" json:"setting,omitempty"`
}
func (x *UpdateWorkspaceSettingResponse) Reset() {
*x = UpdateWorkspaceSettingResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_api_v1_workspace_service_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *UpdateWorkspaceSettingResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UpdateWorkspaceSettingResponse) ProtoMessage() {}
func (x *UpdateWorkspaceSettingResponse) ProtoReflect() protoreflect.Message {
mi := &file_api_v1_workspace_service_proto_msgTypes[9]
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 UpdateWorkspaceSettingResponse.ProtoReflect.Descriptor instead.
func (*UpdateWorkspaceSettingResponse) Descriptor() ([]byte, []int) {
return file_api_v1_workspace_service_proto_rawDescGZIP(), []int{9}
}
func (x *UpdateWorkspaceSettingResponse) GetSetting() *WorkspaceSetting {
if x != nil {
return x.Setting
}
return nil
}
type IdentityProviderConfig_FieldMapping struct { type IdentityProviderConfig_FieldMapping struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
@ -683,7 +530,7 @@ type IdentityProviderConfig_FieldMapping struct {
func (x *IdentityProviderConfig_FieldMapping) Reset() { func (x *IdentityProviderConfig_FieldMapping) Reset() {
*x = IdentityProviderConfig_FieldMapping{} *x = IdentityProviderConfig_FieldMapping{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_api_v1_workspace_service_proto_msgTypes[10] mi := &file_api_v1_workspace_service_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -696,7 +543,7 @@ func (x *IdentityProviderConfig_FieldMapping) String() string {
func (*IdentityProviderConfig_FieldMapping) ProtoMessage() {} func (*IdentityProviderConfig_FieldMapping) ProtoMessage() {}
func (x *IdentityProviderConfig_FieldMapping) ProtoReflect() protoreflect.Message { func (x *IdentityProviderConfig_FieldMapping) ProtoReflect() protoreflect.Message {
mi := &file_api_v1_workspace_service_proto_msgTypes[10] mi := &file_api_v1_workspace_service_proto_msgTypes[7]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -743,7 +590,7 @@ type IdentityProviderConfig_OAuth2Config struct {
func (x *IdentityProviderConfig_OAuth2Config) Reset() { func (x *IdentityProviderConfig_OAuth2Config) Reset() {
*x = IdentityProviderConfig_OAuth2Config{} *x = IdentityProviderConfig_OAuth2Config{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_api_v1_workspace_service_proto_msgTypes[11] mi := &file_api_v1_workspace_service_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -756,7 +603,7 @@ func (x *IdentityProviderConfig_OAuth2Config) String() string {
func (*IdentityProviderConfig_OAuth2Config) ProtoMessage() {} func (*IdentityProviderConfig_OAuth2Config) ProtoMessage() {}
func (x *IdentityProviderConfig_OAuth2Config) ProtoReflect() protoreflect.Message { func (x *IdentityProviderConfig_OAuth2Config) ProtoReflect() protoreflect.Message {
mi := &file_api_v1_workspace_service_proto_msgTypes[11] mi := &file_api_v1_workspace_service_proto_msgTypes[8]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -836,154 +683,135 @@ var file_api_v1_workspace_service_proto_rawDesc = []byte{
0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67,
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66,
0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22,
0x82, 0x02, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x72, 0x6f, 0xfa, 0x01, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x72, 0x6f,
0x66, 0x69, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73,
0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69,
0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x04, 0x70, 0x6c, 0x61, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
0x32, 0x16, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68,
0x50, 0x6c, 0x61, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x70, 0x6c, 0x61, 0x6e, 0x12, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70,
0x0a, 0x0d, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x18, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x69, 0x67, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x67,
0x6e, 0x75, 0x70, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x73, 0x74, 0x6e, 0x75, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x65, 0x6e, 0x61, 0x62, 0x6c,
0x79, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f,
0x6d, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x6d, 0x5f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63,
0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77,
0x62, 0x72, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6e, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72,
0x62, 0x72, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x07, 0x20, 0x01,
0x75, 0x72, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x28, 0x0c, 0x52, 0x08, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x22, 0xe9, 0x01, 0x0a,
0x75, 0x72, 0x65, 0x73, 0x22, 0xe9, 0x01, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x10, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e,
0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x72, 0x61, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20,
0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x62, 0x72, 0x61, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x21, 0x0a,
0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x02, 0x20,
0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x75, 0x73, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x53, 0x74, 0x79, 0x6c, 0x65,
0x74, 0x6f, 0x6d, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x47, 0x0a, 0x12, 0x64, 0x65, 0x66, 0x61, 0x12, 0x47, 0x0a, 0x12, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x69, 0x73, 0x69,
0x75, 0x6c, 0x74, 0x5f, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x03, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x73,
0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x69, 0x73, 0x69,
0x2e, 0x76, 0x31, 0x2e, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x11, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x11, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56,
0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x4d, 0x0a, 0x12, 0x69, 0x64, 0x65,
0x79, 0x12, 0x4d, 0x0a, 0x12, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x18,
0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x61, 0x70,
0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x64, 0x65,
0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x11, 0x69,
0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73,
0x22, 0xd9, 0x01, 0x0a, 0x10, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f,
0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x37, 0x0a, 0x04, 0x74,
0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x73, 0x6c, 0x61, 0x73,
0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74,
0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04,
0x74, 0x79, 0x70, 0x65, 0x12, 0x3c, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x61, 0x70, 0x69,
0x2e, 0x76, 0x31, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76,
0x69, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66,
0x69, 0x67, 0x22, 0x28, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x59,
0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00,
0x12, 0x0a, 0x0a, 0x06, 0x4f, 0x41, 0x55, 0x54, 0x48, 0x32, 0x10, 0x01, 0x22, 0xe1, 0x03, 0x0a,
0x16, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65,
0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4b, 0x0a, 0x06, 0x6f, 0x61, 0x75, 0x74, 0x68,
0x32, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e,
0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50,
0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4f, 0x41,
0x75, 0x74, 0x68, 0x32, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x06, 0x6f, 0x61,
0x75, 0x74, 0x68, 0x32, 0x1a, 0x51, 0x0a, 0x0c, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x70,
0x70, 0x69, 0x6e, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69,
0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69,
0x66, 0x69, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f,
0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70,
0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x9c, 0x02, 0x0a, 0x0c, 0x4f, 0x41, 0x75, 0x74,
0x68, 0x32, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65,
0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69,
0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f,
0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6c,
0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x75,
0x74, 0x68, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x75,
0x74, 0x68, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x75,
0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x55,
0x72, 0x6c, 0x12, 0x22, 0x0a, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x5f,
0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x49,
0x6e, 0x66, 0x6f, 0x55, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73,
0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x12, 0x56,
0x0a, 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x18,
0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x61, 0x70,
0x69, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f,
0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x11, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50,
0x64, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x22, 0xd9, 0x01, 0x0a, 0x10, 0x49, 0x64, 0x65,
0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x42, 0x08, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x0e, 0x0a,
0x22, 0x1c, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a,
0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x57, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69,
0x0a, 0x1b, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x72, 0x74, 0x6c, 0x65, 0x12, 0x37, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0e, 0x32, 0x23, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65,
0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x3c, 0x0a, 0x06,
0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73,
0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x22, 0x1c, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x64, 0x65, 0x6e,
0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66,
0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x57, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x28, 0x0a, 0x04, 0x54, 0x79,
0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45,
0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x07, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4f, 0x41, 0x55, 0x54,
0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x61, 0x70, 0x48, 0x32, 0x10, 0x01, 0x22, 0xe1, 0x03, 0x0a, 0x16, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74,
0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12,
0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x22, 0x96, 0x4b, 0x0a, 0x06, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x32, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x01, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x31, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x49,
0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43,
0x12, 0x38, 0x0a, 0x07, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x32, 0x43, 0x6f, 0x6e, 0x66,
0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x69, 0x67, 0x48, 0x00, 0x52, 0x06, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x32, 0x1a, 0x51, 0x0a, 0x0c,
0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x1e, 0x0a, 0x0a,
0x67, 0x52, 0x07, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c,
0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x1a,
0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x5a, 0x0a, 0x1e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x9c, 0x02, 0x0a, 0x0c, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x32, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x07, 0x73, 0x65, 0x74, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x23, 0x0a,
0x74, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x6c, 0x61, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x02,
0x73, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72,
0x61, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x73, 0x65, 0x74, 0x74, 0x65, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03,
0x69, 0x6e, 0x67, 0x32, 0xea, 0x03, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x75, 0x74, 0x68, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a,
0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x8d, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x09, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x08, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x22, 0x0a, 0x0d, 0x75, 0x73,
0x12, 0x28, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28,
0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x09, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x55, 0x72, 0x6c, 0x12, 0x16,
0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x73, 0x6c, 0x61, 0x0a, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06,
0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x12, 0x56, 0x0a, 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f,
0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e,
0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x64, 0x65,
0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e,
0x66, 0x69, 0x67, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67,
0x52, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x42, 0x08,
0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x1c, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x57,
0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x1c, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72,
0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x22, 0x96, 0x01, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57,
0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x07, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e,
0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e,
0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65,
0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,
0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18,
0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73,
0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x32, 0xc6, 0x03,
0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69,
0x63, 0x65, 0x12, 0x82, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70,
0x61, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x28, 0x2e, 0x73, 0x6c, 0x61,
0x73, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x73, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72,
0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x12, 0x19, 0x2f, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x61, 0x70, 0x69,
0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x72, 0x6f,
0x2f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x8d, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x66, 0x69, 0x6c, 0x65, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x12, 0x19, 0x2f, 0x61,
0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2f,
0x12, 0x28, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x82, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x57,
0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12,
0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x73, 0x6c, 0x61, 0x28, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47,
0x73, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69,
0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x73, 0x6c, 0x61, 0x73,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x12, 0x19, 0x2f, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61,
0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02,
0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0xb5, 0x01, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x1b, 0x12, 0x19, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x73,
0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x70, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0xa7, 0x01, 0x0a,
0x69, 0x6e, 0x67, 0x12, 0x2b, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65,
0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x2b, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e,
0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72,
0x1a, 0x2c, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71,
0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x61, 0x70, 0x69,
0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x40, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74,
0xda, 0x41, 0x13, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x22, 0x40, 0xda, 0x41, 0x13, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,
0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x3a, 0x07, 0x73, 0x65, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93,
0x74, 0x74, 0x69, 0x6e, 0x67, 0x32, 0x19, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x02, 0x24, 0x3a, 0x07, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x32, 0x19, 0x2f, 0x61, 0x70,
0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2f, 0x73,
0x42, 0xb3, 0x01, 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x61, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x42, 0xb3, 0x01, 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x2e, 0x73,
0x70, 0x69, 0x2e, 0x76, 0x31, 0x42, 0x15, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x42, 0x15, 0x57, 0x6f, 0x72,
0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x36, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f,
0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x79, 0x6f, 0x75, 0x72, 0x73, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
0x65, 0x6c, 0x66, 0x68, 0x6f, 0x73, 0x74, 0x65, 0x64, 0x2f, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2f, 0x2f, 0x79, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x6c, 0x66, 0x68, 0x6f, 0x73, 0x74, 0x65, 0x64, 0x2f,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f,
0x3b, 0x61, 0x70, 0x69, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x53, 0x41, 0x58, 0xaa, 0x02, 0x0c, 0x53, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x3b, 0x61, 0x70, 0x69, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x53,
0x6c, 0x61, 0x73, 0x68, 0x2e, 0x41, 0x70, 0x69, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0c, 0x53, 0x6c, 0x41, 0x58, 0xaa, 0x02, 0x0c, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x41, 0x70, 0x69, 0x2e, 0x56,
0x61, 0x73, 0x68, 0x5c, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x18, 0x53, 0x6c, 0x61, 0x31, 0xca, 0x02, 0x0c, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x5c, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31,
0x73, 0x68, 0x5c, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0xe2, 0x02, 0x18, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x5c, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x31, 0x5c,
0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x3a, 0x3a, 0x41, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e, 0x53, 0x6c,
0x70, 0x69, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x61, 0x73, 0x68, 0x3a, 0x3a, 0x41, 0x70, 0x69, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x33,
} }
var ( var (
@ -999,7 +827,7 @@ func file_api_v1_workspace_service_proto_rawDescGZIP() []byte {
} }
var file_api_v1_workspace_service_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_api_v1_workspace_service_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_api_v1_workspace_service_proto_msgTypes = make([]protoimpl.MessageInfo, 12) var file_api_v1_workspace_service_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
var file_api_v1_workspace_service_proto_goTypes = []any{ var file_api_v1_workspace_service_proto_goTypes = []any{
(IdentityProvider_Type)(0), // 0: slash.api.v1.IdentityProvider.Type (IdentityProvider_Type)(0), // 0: slash.api.v1.IdentityProvider.Type
(*WorkspaceProfile)(nil), // 1: slash.api.v1.WorkspaceProfile (*WorkspaceProfile)(nil), // 1: slash.api.v1.WorkspaceProfile
@ -1007,41 +835,35 @@ var file_api_v1_workspace_service_proto_goTypes = []any{
(*IdentityProvider)(nil), // 3: slash.api.v1.IdentityProvider (*IdentityProvider)(nil), // 3: slash.api.v1.IdentityProvider
(*IdentityProviderConfig)(nil), // 4: slash.api.v1.IdentityProviderConfig (*IdentityProviderConfig)(nil), // 4: slash.api.v1.IdentityProviderConfig
(*GetWorkspaceProfileRequest)(nil), // 5: slash.api.v1.GetWorkspaceProfileRequest (*GetWorkspaceProfileRequest)(nil), // 5: slash.api.v1.GetWorkspaceProfileRequest
(*GetWorkspaceProfileResponse)(nil), // 6: slash.api.v1.GetWorkspaceProfileResponse (*GetWorkspaceSettingRequest)(nil), // 6: slash.api.v1.GetWorkspaceSettingRequest
(*GetWorkspaceSettingRequest)(nil), // 7: slash.api.v1.GetWorkspaceSettingRequest (*UpdateWorkspaceSettingRequest)(nil), // 7: slash.api.v1.UpdateWorkspaceSettingRequest
(*GetWorkspaceSettingResponse)(nil), // 8: slash.api.v1.GetWorkspaceSettingResponse (*IdentityProviderConfig_FieldMapping)(nil), // 8: slash.api.v1.IdentityProviderConfig.FieldMapping
(*UpdateWorkspaceSettingRequest)(nil), // 9: slash.api.v1.UpdateWorkspaceSettingRequest (*IdentityProviderConfig_OAuth2Config)(nil), // 9: slash.api.v1.IdentityProviderConfig.OAuth2Config
(*UpdateWorkspaceSettingResponse)(nil), // 10: slash.api.v1.UpdateWorkspaceSettingResponse (*Subscription)(nil), // 10: slash.api.v1.Subscription
(*IdentityProviderConfig_FieldMapping)(nil), // 11: slash.api.v1.IdentityProviderConfig.FieldMapping (Visibility)(0), // 11: slash.api.v1.Visibility
(*IdentityProviderConfig_OAuth2Config)(nil), // 12: slash.api.v1.IdentityProviderConfig.OAuth2Config (*fieldmaskpb.FieldMask)(nil), // 12: google.protobuf.FieldMask
(PlanType)(0), // 13: slash.api.v1.PlanType
(Visibility)(0), // 14: slash.api.v1.Visibility
(*fieldmaskpb.FieldMask)(nil), // 15: google.protobuf.FieldMask
} }
var file_api_v1_workspace_service_proto_depIdxs = []int32{ var file_api_v1_workspace_service_proto_depIdxs = []int32{
13, // 0: slash.api.v1.WorkspaceProfile.plan:type_name -> slash.api.v1.PlanType 10, // 0: slash.api.v1.WorkspaceProfile.subscription:type_name -> slash.api.v1.Subscription
14, // 1: slash.api.v1.WorkspaceSetting.default_visibility:type_name -> slash.api.v1.Visibility 11, // 1: slash.api.v1.WorkspaceSetting.default_visibility:type_name -> slash.api.v1.Visibility
3, // 2: slash.api.v1.WorkspaceSetting.identity_providers:type_name -> slash.api.v1.IdentityProvider 3, // 2: slash.api.v1.WorkspaceSetting.identity_providers:type_name -> slash.api.v1.IdentityProvider
0, // 3: slash.api.v1.IdentityProvider.type:type_name -> slash.api.v1.IdentityProvider.Type 0, // 3: slash.api.v1.IdentityProvider.type:type_name -> slash.api.v1.IdentityProvider.Type
4, // 4: slash.api.v1.IdentityProvider.config:type_name -> slash.api.v1.IdentityProviderConfig 4, // 4: slash.api.v1.IdentityProvider.config:type_name -> slash.api.v1.IdentityProviderConfig
12, // 5: slash.api.v1.IdentityProviderConfig.oauth2:type_name -> slash.api.v1.IdentityProviderConfig.OAuth2Config 9, // 5: slash.api.v1.IdentityProviderConfig.oauth2:type_name -> slash.api.v1.IdentityProviderConfig.OAuth2Config
1, // 6: slash.api.v1.GetWorkspaceProfileResponse.profile:type_name -> slash.api.v1.WorkspaceProfile 2, // 6: slash.api.v1.UpdateWorkspaceSettingRequest.setting:type_name -> slash.api.v1.WorkspaceSetting
2, // 7: slash.api.v1.GetWorkspaceSettingResponse.setting:type_name -> slash.api.v1.WorkspaceSetting 12, // 7: slash.api.v1.UpdateWorkspaceSettingRequest.update_mask:type_name -> google.protobuf.FieldMask
2, // 8: slash.api.v1.UpdateWorkspaceSettingRequest.setting:type_name -> slash.api.v1.WorkspaceSetting 8, // 8: slash.api.v1.IdentityProviderConfig.OAuth2Config.field_mapping:type_name -> slash.api.v1.IdentityProviderConfig.FieldMapping
15, // 9: slash.api.v1.UpdateWorkspaceSettingRequest.update_mask:type_name -> google.protobuf.FieldMask 5, // 9: slash.api.v1.WorkspaceService.GetWorkspaceProfile:input_type -> slash.api.v1.GetWorkspaceProfileRequest
2, // 10: slash.api.v1.UpdateWorkspaceSettingResponse.setting:type_name -> slash.api.v1.WorkspaceSetting 6, // 10: slash.api.v1.WorkspaceService.GetWorkspaceSetting:input_type -> slash.api.v1.GetWorkspaceSettingRequest
11, // 11: slash.api.v1.IdentityProviderConfig.OAuth2Config.field_mapping:type_name -> slash.api.v1.IdentityProviderConfig.FieldMapping 7, // 11: slash.api.v1.WorkspaceService.UpdateWorkspaceSetting:input_type -> slash.api.v1.UpdateWorkspaceSettingRequest
5, // 12: slash.api.v1.WorkspaceService.GetWorkspaceProfile:input_type -> slash.api.v1.GetWorkspaceProfileRequest 1, // 12: slash.api.v1.WorkspaceService.GetWorkspaceProfile:output_type -> slash.api.v1.WorkspaceProfile
7, // 13: slash.api.v1.WorkspaceService.GetWorkspaceSetting:input_type -> slash.api.v1.GetWorkspaceSettingRequest 2, // 13: slash.api.v1.WorkspaceService.GetWorkspaceSetting:output_type -> slash.api.v1.WorkspaceSetting
9, // 14: slash.api.v1.WorkspaceService.UpdateWorkspaceSetting:input_type -> slash.api.v1.UpdateWorkspaceSettingRequest 2, // 14: slash.api.v1.WorkspaceService.UpdateWorkspaceSetting:output_type -> slash.api.v1.WorkspaceSetting
6, // 15: slash.api.v1.WorkspaceService.GetWorkspaceProfile:output_type -> slash.api.v1.GetWorkspaceProfileResponse 12, // [12:15] is the sub-list for method output_type
8, // 16: slash.api.v1.WorkspaceService.GetWorkspaceSetting:output_type -> slash.api.v1.GetWorkspaceSettingResponse 9, // [9:12] is the sub-list for method input_type
10, // 17: slash.api.v1.WorkspaceService.UpdateWorkspaceSetting:output_type -> slash.api.v1.UpdateWorkspaceSettingResponse 9, // [9:9] is the sub-list for extension type_name
15, // [15:18] is the sub-list for method output_type 9, // [9:9] is the sub-list for extension extendee
12, // [12:15] is the sub-list for method input_type 0, // [0:9] is the sub-list for field type_name
12, // [12:12] is the sub-list for extension type_name
12, // [12:12] is the sub-list for extension extendee
0, // [0:12] is the sub-list for field type_name
} }
func init() { file_api_v1_workspace_service_proto_init() } func init() { file_api_v1_workspace_service_proto_init() }
@ -1113,18 +935,6 @@ func file_api_v1_workspace_service_proto_init() {
} }
} }
file_api_v1_workspace_service_proto_msgTypes[5].Exporter = func(v any, i int) any { file_api_v1_workspace_service_proto_msgTypes[5].Exporter = func(v any, i int) any {
switch v := v.(*GetWorkspaceProfileResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_v1_workspace_service_proto_msgTypes[6].Exporter = func(v any, i int) any {
switch v := v.(*GetWorkspaceSettingRequest); i { switch v := v.(*GetWorkspaceSettingRequest); i {
case 0: case 0:
return &v.state return &v.state
@ -1136,19 +946,7 @@ func file_api_v1_workspace_service_proto_init() {
return nil return nil
} }
} }
file_api_v1_workspace_service_proto_msgTypes[7].Exporter = func(v any, i int) any { file_api_v1_workspace_service_proto_msgTypes[6].Exporter = func(v any, i int) any {
switch v := v.(*GetWorkspaceSettingResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_v1_workspace_service_proto_msgTypes[8].Exporter = func(v any, i int) any {
switch v := v.(*UpdateWorkspaceSettingRequest); i { switch v := v.(*UpdateWorkspaceSettingRequest); i {
case 0: case 0:
return &v.state return &v.state
@ -1160,19 +958,7 @@ func file_api_v1_workspace_service_proto_init() {
return nil return nil
} }
} }
file_api_v1_workspace_service_proto_msgTypes[9].Exporter = func(v any, i int) any { file_api_v1_workspace_service_proto_msgTypes[7].Exporter = func(v any, i int) any {
switch v := v.(*UpdateWorkspaceSettingResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_api_v1_workspace_service_proto_msgTypes[10].Exporter = func(v any, i int) any {
switch v := v.(*IdentityProviderConfig_FieldMapping); i { switch v := v.(*IdentityProviderConfig_FieldMapping); i {
case 0: case 0:
return &v.state return &v.state
@ -1184,7 +970,7 @@ func file_api_v1_workspace_service_proto_init() {
return nil return nil
} }
} }
file_api_v1_workspace_service_proto_msgTypes[11].Exporter = func(v any, i int) any { file_api_v1_workspace_service_proto_msgTypes[8].Exporter = func(v any, i int) any {
switch v := v.(*IdentityProviderConfig_OAuth2Config); i { switch v := v.(*IdentityProviderConfig_OAuth2Config); i {
case 0: case 0:
return &v.state return &v.state
@ -1206,7 +992,7 @@ func file_api_v1_workspace_service_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(), GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_api_v1_workspace_service_proto_rawDesc, RawDescriptor: file_api_v1_workspace_service_proto_rawDesc,
NumEnums: 1, NumEnums: 1,
NumMessages: 12, NumMessages: 9,
NumExtensions: 0, NumExtensions: 0,
NumServices: 1, NumServices: 1,
}, },

View File

@ -28,9 +28,9 @@ const (
// //
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type WorkspaceServiceClient interface { type WorkspaceServiceClient interface {
GetWorkspaceProfile(ctx context.Context, in *GetWorkspaceProfileRequest, opts ...grpc.CallOption) (*GetWorkspaceProfileResponse, error) GetWorkspaceProfile(ctx context.Context, in *GetWorkspaceProfileRequest, opts ...grpc.CallOption) (*WorkspaceProfile, error)
GetWorkspaceSetting(ctx context.Context, in *GetWorkspaceSettingRequest, opts ...grpc.CallOption) (*GetWorkspaceSettingResponse, error) GetWorkspaceSetting(ctx context.Context, in *GetWorkspaceSettingRequest, opts ...grpc.CallOption) (*WorkspaceSetting, error)
UpdateWorkspaceSetting(ctx context.Context, in *UpdateWorkspaceSettingRequest, opts ...grpc.CallOption) (*UpdateWorkspaceSettingResponse, error) UpdateWorkspaceSetting(ctx context.Context, in *UpdateWorkspaceSettingRequest, opts ...grpc.CallOption) (*WorkspaceSetting, error)
} }
type workspaceServiceClient struct { type workspaceServiceClient struct {
@ -41,9 +41,9 @@ func NewWorkspaceServiceClient(cc grpc.ClientConnInterface) WorkspaceServiceClie
return &workspaceServiceClient{cc} return &workspaceServiceClient{cc}
} }
func (c *workspaceServiceClient) GetWorkspaceProfile(ctx context.Context, in *GetWorkspaceProfileRequest, opts ...grpc.CallOption) (*GetWorkspaceProfileResponse, error) { func (c *workspaceServiceClient) GetWorkspaceProfile(ctx context.Context, in *GetWorkspaceProfileRequest, opts ...grpc.CallOption) (*WorkspaceProfile, error) {
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
out := new(GetWorkspaceProfileResponse) out := new(WorkspaceProfile)
err := c.cc.Invoke(ctx, WorkspaceService_GetWorkspaceProfile_FullMethodName, in, out, cOpts...) err := c.cc.Invoke(ctx, WorkspaceService_GetWorkspaceProfile_FullMethodName, in, out, cOpts...)
if err != nil { if err != nil {
return nil, err return nil, err
@ -51,9 +51,9 @@ func (c *workspaceServiceClient) GetWorkspaceProfile(ctx context.Context, in *Ge
return out, nil return out, nil
} }
func (c *workspaceServiceClient) GetWorkspaceSetting(ctx context.Context, in *GetWorkspaceSettingRequest, opts ...grpc.CallOption) (*GetWorkspaceSettingResponse, error) { func (c *workspaceServiceClient) GetWorkspaceSetting(ctx context.Context, in *GetWorkspaceSettingRequest, opts ...grpc.CallOption) (*WorkspaceSetting, error) {
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
out := new(GetWorkspaceSettingResponse) out := new(WorkspaceSetting)
err := c.cc.Invoke(ctx, WorkspaceService_GetWorkspaceSetting_FullMethodName, in, out, cOpts...) err := c.cc.Invoke(ctx, WorkspaceService_GetWorkspaceSetting_FullMethodName, in, out, cOpts...)
if err != nil { if err != nil {
return nil, err return nil, err
@ -61,9 +61,9 @@ func (c *workspaceServiceClient) GetWorkspaceSetting(ctx context.Context, in *Ge
return out, nil return out, nil
} }
func (c *workspaceServiceClient) UpdateWorkspaceSetting(ctx context.Context, in *UpdateWorkspaceSettingRequest, opts ...grpc.CallOption) (*UpdateWorkspaceSettingResponse, error) { func (c *workspaceServiceClient) UpdateWorkspaceSetting(ctx context.Context, in *UpdateWorkspaceSettingRequest, opts ...grpc.CallOption) (*WorkspaceSetting, error) {
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
out := new(UpdateWorkspaceSettingResponse) out := new(WorkspaceSetting)
err := c.cc.Invoke(ctx, WorkspaceService_UpdateWorkspaceSetting_FullMethodName, in, out, cOpts...) err := c.cc.Invoke(ctx, WorkspaceService_UpdateWorkspaceSetting_FullMethodName, in, out, cOpts...)
if err != nil { if err != nil {
return nil, err return nil, err
@ -75,9 +75,9 @@ func (c *workspaceServiceClient) UpdateWorkspaceSetting(ctx context.Context, in
// All implementations must embed UnimplementedWorkspaceServiceServer // All implementations must embed UnimplementedWorkspaceServiceServer
// for forward compatibility. // for forward compatibility.
type WorkspaceServiceServer interface { type WorkspaceServiceServer interface {
GetWorkspaceProfile(context.Context, *GetWorkspaceProfileRequest) (*GetWorkspaceProfileResponse, error) GetWorkspaceProfile(context.Context, *GetWorkspaceProfileRequest) (*WorkspaceProfile, error)
GetWorkspaceSetting(context.Context, *GetWorkspaceSettingRequest) (*GetWorkspaceSettingResponse, error) GetWorkspaceSetting(context.Context, *GetWorkspaceSettingRequest) (*WorkspaceSetting, error)
UpdateWorkspaceSetting(context.Context, *UpdateWorkspaceSettingRequest) (*UpdateWorkspaceSettingResponse, error) UpdateWorkspaceSetting(context.Context, *UpdateWorkspaceSettingRequest) (*WorkspaceSetting, error)
mustEmbedUnimplementedWorkspaceServiceServer() mustEmbedUnimplementedWorkspaceServiceServer()
} }
@ -88,13 +88,13 @@ type WorkspaceServiceServer interface {
// pointer dereference when methods are called. // pointer dereference when methods are called.
type UnimplementedWorkspaceServiceServer struct{} type UnimplementedWorkspaceServiceServer struct{}
func (UnimplementedWorkspaceServiceServer) GetWorkspaceProfile(context.Context, *GetWorkspaceProfileRequest) (*GetWorkspaceProfileResponse, error) { func (UnimplementedWorkspaceServiceServer) GetWorkspaceProfile(context.Context, *GetWorkspaceProfileRequest) (*WorkspaceProfile, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetWorkspaceProfile not implemented") return nil, status.Errorf(codes.Unimplemented, "method GetWorkspaceProfile not implemented")
} }
func (UnimplementedWorkspaceServiceServer) GetWorkspaceSetting(context.Context, *GetWorkspaceSettingRequest) (*GetWorkspaceSettingResponse, error) { func (UnimplementedWorkspaceServiceServer) GetWorkspaceSetting(context.Context, *GetWorkspaceSettingRequest) (*WorkspaceSetting, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetWorkspaceSetting not implemented") return nil, status.Errorf(codes.Unimplemented, "method GetWorkspaceSetting not implemented")
} }
func (UnimplementedWorkspaceServiceServer) UpdateWorkspaceSetting(context.Context, *UpdateWorkspaceSettingRequest) (*UpdateWorkspaceSettingResponse, error) { func (UnimplementedWorkspaceServiceServer) UpdateWorkspaceSetting(context.Context, *UpdateWorkspaceSettingRequest) (*WorkspaceSetting, error) {
return nil, status.Errorf(codes.Unimplemented, "method UpdateWorkspaceSetting not implemented") return nil, status.Errorf(codes.Unimplemented, "method UpdateWorkspaceSetting not implemented")
} }
func (UnimplementedWorkspaceServiceServer) mustEmbedUnimplementedWorkspaceServiceServer() {} func (UnimplementedWorkspaceServiceServer) mustEmbedUnimplementedWorkspaceServiceServer() {}

View File

@ -665,7 +665,7 @@ paths:
"200": "200":
description: A successful response. description: A successful response.
schema: schema:
$ref: '#/definitions/v1GetWorkspaceProfileResponse' $ref: '#/definitions/v1WorkspaceProfile'
default: default:
description: An unexpected error response. description: An unexpected error response.
schema: schema:
@ -679,7 +679,7 @@ paths:
"200": "200":
description: A successful response. description: A successful response.
schema: schema:
$ref: '#/definitions/v1GetWorkspaceSettingResponse' $ref: '#/definitions/apiv1WorkspaceSetting'
default: default:
description: An unexpected error response. description: An unexpected error response.
schema: schema:
@ -692,7 +692,7 @@ paths:
"200": "200":
description: A successful response. description: A successful response.
schema: schema:
$ref: '#/definitions/v1UpdateWorkspaceSettingResponse' $ref: '#/definitions/apiv1WorkspaceSetting'
default: default:
description: An unexpected error response. description: An unexpected error response.
schema: schema:
@ -773,9 +773,7 @@ definitions:
expiresAt: expiresAt:
type: string type: string
format: date-time format: date-time
description: |- description: "expires_at is the expiration time of the access token.\r\nIf expires_at is not set, the access token will never expire."
expires_at is the expiration time of the access token.
If expires_at is not set, the access token will never expire.
apiv1Collection: apiv1Collection:
type: object type: object
properties: properties:
@ -1062,18 +1060,6 @@ definitions:
properties: properties:
userSetting: userSetting:
$ref: '#/definitions/apiv1UserSetting' $ref: '#/definitions/apiv1UserSetting'
v1GetWorkspaceProfileResponse:
type: object
properties:
profile:
$ref: '#/definitions/v1WorkspaceProfile'
description: The workspace profile.
v1GetWorkspaceSettingResponse:
type: object
properties:
setting:
$ref: '#/definitions/apiv1WorkspaceSetting'
description: The user setting.
v1ListCollectionsResponse: v1ListCollectionsResponse:
type: object type: object
properties: properties:
@ -1179,12 +1165,6 @@ definitions:
properties: properties:
userSetting: userSetting:
$ref: '#/definitions/apiv1UserSetting' $ref: '#/definitions/apiv1UserSetting'
v1UpdateWorkspaceSettingResponse:
type: object
properties:
setting:
$ref: '#/definitions/apiv1WorkspaceSetting'
description: The user setting.
v1User: v1User:
type: object type: object
properties: properties:
@ -1229,9 +1209,9 @@ definitions:
version: version:
type: string type: string
description: Current workspace version. description: Current workspace version.
plan: subscription:
$ref: '#/definitions/v1PlanType' $ref: '#/definitions/v1Subscription'
description: The workspace plan. description: The workspace subscription.
enableSignup: enableSignup:
type: boolean type: boolean
description: Whether to enable other users to sign up. description: Whether to enable other users to sign up.
@ -1240,15 +1220,8 @@ definitions:
description: The custom style. description: The custom style.
owner: owner:
type: string type: string
title: |- title: "The owner name.\r\nFormat: \"users/{id}\""
The owner name.
Format: "users/{id}"
branding: branding:
type: string type: string
format: byte format: byte
description: The workspace branding. description: The workspace branding.
features:
type: array
items:
type: string
description: The workspace available features.

View File

@ -38,6 +38,7 @@
- [WorkspaceSetting](#slash-store-WorkspaceSetting) - [WorkspaceSetting](#slash-store-WorkspaceSetting)
- [WorkspaceSetting.GeneralSetting](#slash-store-WorkspaceSetting-GeneralSetting) - [WorkspaceSetting.GeneralSetting](#slash-store-WorkspaceSetting-GeneralSetting)
- [WorkspaceSetting.IdentityProviderSetting](#slash-store-WorkspaceSetting-IdentityProviderSetting) - [WorkspaceSetting.IdentityProviderSetting](#slash-store-WorkspaceSetting-IdentityProviderSetting)
- [WorkspaceSetting.SecuritySetting](#slash-store-WorkspaceSetting-SecuritySetting)
- [WorkspaceSetting.ShortcutRelatedSetting](#slash-store-WorkspaceSetting-ShortcutRelatedSetting) - [WorkspaceSetting.ShortcutRelatedSetting](#slash-store-WorkspaceSetting-ShortcutRelatedSetting)
- [WorkspaceSettingKey](#slash-store-WorkspaceSettingKey) - [WorkspaceSettingKey](#slash-store-WorkspaceSettingKey)
@ -446,6 +447,7 @@
| key | [WorkspaceSettingKey](#slash-store-WorkspaceSettingKey) | | | | key | [WorkspaceSettingKey](#slash-store-WorkspaceSettingKey) | | |
| raw | [string](#string) | | | | raw | [string](#string) | | |
| general | [WorkspaceSetting.GeneralSetting](#slash-store-WorkspaceSetting-GeneralSetting) | | | | general | [WorkspaceSetting.GeneralSetting](#slash-store-WorkspaceSetting-GeneralSetting) | | |
| security | [WorkspaceSetting.SecuritySetting](#slash-store-WorkspaceSetting-SecuritySetting) | | |
| shortcut_related | [WorkspaceSetting.ShortcutRelatedSetting](#slash-store-WorkspaceSetting-ShortcutRelatedSetting) | | | | shortcut_related | [WorkspaceSetting.ShortcutRelatedSetting](#slash-store-WorkspaceSetting-ShortcutRelatedSetting) | | |
| identity_provider | [WorkspaceSetting.IdentityProviderSetting](#slash-store-WorkspaceSetting-IdentityProviderSetting) | | | | identity_provider | [WorkspaceSetting.IdentityProviderSetting](#slash-store-WorkspaceSetting-IdentityProviderSetting) | | |
@ -464,6 +466,7 @@
| ----- | ---- | ----- | ----------- | | ----- | ---- | ----- | ----------- |
| secret_session | [string](#string) | | | | secret_session | [string](#string) | | |
| license_key | [string](#string) | | | | license_key | [string](#string) | | |
| instance_url | [string](#string) | | |
| branding | [bytes](#bytes) | | | | branding | [bytes](#bytes) | | |
| custom_style | [string](#string) | | | | custom_style | [string](#string) | | |
@ -487,6 +490,21 @@
<a name="slash-store-WorkspaceSetting-SecuritySetting"></a>
### WorkspaceSetting.SecuritySetting
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| disallow_user_registration | [bool](#bool) | | |
<a name="slash-store-WorkspaceSetting-ShortcutRelatedSetting"></a> <a name="slash-store-WorkspaceSetting-ShortcutRelatedSetting"></a>
### WorkspaceSetting.ShortcutRelatedSetting ### WorkspaceSetting.ShortcutRelatedSetting
@ -513,8 +531,9 @@
| ---- | ------ | ----------- | | ---- | ------ | ----------- |
| WORKSPACE_SETTING_KEY_UNSPECIFIED | 0 | | | WORKSPACE_SETTING_KEY_UNSPECIFIED | 0 | |
| WORKSPACE_SETTING_GENERAL | 1 | Workspace general settings. | | WORKSPACE_SETTING_GENERAL | 1 | Workspace general settings. |
| WORKSPACE_SETTING_SHORTCUT_RELATED | 2 | Workspace shortcut-related settings. | | WORKSPACE_SETTING_SECURITY | 2 | Workspace security settings. |
| WORKSPACE_SETTING_IDENTITY_PROVIDER | 3 | Workspace identity provider settings. | | WORKSPACE_SETTING_SHORTCUT_RELATED | 3 | Workspace shortcut-related settings. |
| WORKSPACE_SETTING_IDENTITY_PROVIDER | 4 | Workspace identity provider settings. |
| WORKSPACE_SETTING_LICENSE_KEY | 10 | TODO: remove the following keys. The license key. | | WORKSPACE_SETTING_LICENSE_KEY | 10 | TODO: remove the following keys. The license key. |
| WORKSPACE_SETTING_SECRET_SESSION | 11 | The secret session key used to encrypt session data. | | WORKSPACE_SETTING_SECRET_SESSION | 11 | The secret session key used to encrypt session data. |
| WORKSPACE_SETTING_CUSTOM_STYLE | 12 | The custom style. | | WORKSPACE_SETTING_CUSTOM_STYLE | 12 | The custom style. |

View File

@ -26,10 +26,12 @@ const (
WorkspaceSettingKey_WORKSPACE_SETTING_KEY_UNSPECIFIED WorkspaceSettingKey = 0 WorkspaceSettingKey_WORKSPACE_SETTING_KEY_UNSPECIFIED WorkspaceSettingKey = 0
// Workspace general settings. // Workspace general settings.
WorkspaceSettingKey_WORKSPACE_SETTING_GENERAL WorkspaceSettingKey = 1 WorkspaceSettingKey_WORKSPACE_SETTING_GENERAL WorkspaceSettingKey = 1
// Workspace security settings.
WorkspaceSettingKey_WORKSPACE_SETTING_SECURITY WorkspaceSettingKey = 2
// Workspace shortcut-related settings. // Workspace shortcut-related settings.
WorkspaceSettingKey_WORKSPACE_SETTING_SHORTCUT_RELATED WorkspaceSettingKey = 2 WorkspaceSettingKey_WORKSPACE_SETTING_SHORTCUT_RELATED WorkspaceSettingKey = 3
// Workspace identity provider settings. // Workspace identity provider settings.
WorkspaceSettingKey_WORKSPACE_SETTING_IDENTITY_PROVIDER WorkspaceSettingKey = 3 WorkspaceSettingKey_WORKSPACE_SETTING_IDENTITY_PROVIDER WorkspaceSettingKey = 4
// TODO: remove the following keys. // TODO: remove the following keys.
// The license key. // The license key.
WorkspaceSettingKey_WORKSPACE_SETTING_LICENSE_KEY WorkspaceSettingKey = 10 WorkspaceSettingKey_WORKSPACE_SETTING_LICENSE_KEY WorkspaceSettingKey = 10
@ -46,8 +48,9 @@ var (
WorkspaceSettingKey_name = map[int32]string{ WorkspaceSettingKey_name = map[int32]string{
0: "WORKSPACE_SETTING_KEY_UNSPECIFIED", 0: "WORKSPACE_SETTING_KEY_UNSPECIFIED",
1: "WORKSPACE_SETTING_GENERAL", 1: "WORKSPACE_SETTING_GENERAL",
2: "WORKSPACE_SETTING_SHORTCUT_RELATED", 2: "WORKSPACE_SETTING_SECURITY",
3: "WORKSPACE_SETTING_IDENTITY_PROVIDER", 3: "WORKSPACE_SETTING_SHORTCUT_RELATED",
4: "WORKSPACE_SETTING_IDENTITY_PROVIDER",
10: "WORKSPACE_SETTING_LICENSE_KEY", 10: "WORKSPACE_SETTING_LICENSE_KEY",
11: "WORKSPACE_SETTING_SECRET_SESSION", 11: "WORKSPACE_SETTING_SECRET_SESSION",
12: "WORKSPACE_SETTING_CUSTOM_STYLE", 12: "WORKSPACE_SETTING_CUSTOM_STYLE",
@ -56,8 +59,9 @@ var (
WorkspaceSettingKey_value = map[string]int32{ WorkspaceSettingKey_value = map[string]int32{
"WORKSPACE_SETTING_KEY_UNSPECIFIED": 0, "WORKSPACE_SETTING_KEY_UNSPECIFIED": 0,
"WORKSPACE_SETTING_GENERAL": 1, "WORKSPACE_SETTING_GENERAL": 1,
"WORKSPACE_SETTING_SHORTCUT_RELATED": 2, "WORKSPACE_SETTING_SECURITY": 2,
"WORKSPACE_SETTING_IDENTITY_PROVIDER": 3, "WORKSPACE_SETTING_SHORTCUT_RELATED": 3,
"WORKSPACE_SETTING_IDENTITY_PROVIDER": 4,
"WORKSPACE_SETTING_LICENSE_KEY": 10, "WORKSPACE_SETTING_LICENSE_KEY": 10,
"WORKSPACE_SETTING_SECRET_SESSION": 11, "WORKSPACE_SETTING_SECRET_SESSION": 11,
"WORKSPACE_SETTING_CUSTOM_STYLE": 12, "WORKSPACE_SETTING_CUSTOM_STYLE": 12,
@ -102,6 +106,7 @@ type WorkspaceSetting struct {
// Types that are assignable to Value: // Types that are assignable to Value:
// //
// *WorkspaceSetting_General // *WorkspaceSetting_General
// *WorkspaceSetting_Security
// *WorkspaceSetting_ShortcutRelated // *WorkspaceSetting_ShortcutRelated
// *WorkspaceSetting_IdentityProvider // *WorkspaceSetting_IdentityProvider
Value isWorkspaceSetting_Value `protobuf_oneof:"value"` Value isWorkspaceSetting_Value `protobuf_oneof:"value"`
@ -167,6 +172,13 @@ func (x *WorkspaceSetting) GetGeneral() *WorkspaceSetting_GeneralSetting {
return nil return nil
} }
func (x *WorkspaceSetting) GetSecurity() *WorkspaceSetting_SecuritySetting {
if x, ok := x.GetValue().(*WorkspaceSetting_Security); ok {
return x.Security
}
return nil
}
func (x *WorkspaceSetting) GetShortcutRelated() *WorkspaceSetting_ShortcutRelatedSetting { func (x *WorkspaceSetting) GetShortcutRelated() *WorkspaceSetting_ShortcutRelatedSetting {
if x, ok := x.GetValue().(*WorkspaceSetting_ShortcutRelated); ok { if x, ok := x.GetValue().(*WorkspaceSetting_ShortcutRelated); ok {
return x.ShortcutRelated return x.ShortcutRelated
@ -189,16 +201,22 @@ type WorkspaceSetting_General struct {
General *WorkspaceSetting_GeneralSetting `protobuf:"bytes,3,opt,name=general,proto3,oneof"` General *WorkspaceSetting_GeneralSetting `protobuf:"bytes,3,opt,name=general,proto3,oneof"`
} }
type WorkspaceSetting_Security struct {
Security *WorkspaceSetting_SecuritySetting `protobuf:"bytes,4,opt,name=security,proto3,oneof"`
}
type WorkspaceSetting_ShortcutRelated struct { type WorkspaceSetting_ShortcutRelated struct {
ShortcutRelated *WorkspaceSetting_ShortcutRelatedSetting `protobuf:"bytes,4,opt,name=shortcut_related,json=shortcutRelated,proto3,oneof"` ShortcutRelated *WorkspaceSetting_ShortcutRelatedSetting `protobuf:"bytes,5,opt,name=shortcut_related,json=shortcutRelated,proto3,oneof"`
} }
type WorkspaceSetting_IdentityProvider struct { type WorkspaceSetting_IdentityProvider struct {
IdentityProvider *WorkspaceSetting_IdentityProviderSetting `protobuf:"bytes,5,opt,name=identity_provider,json=identityProvider,proto3,oneof"` IdentityProvider *WorkspaceSetting_IdentityProviderSetting `protobuf:"bytes,6,opt,name=identity_provider,json=identityProvider,proto3,oneof"`
} }
func (*WorkspaceSetting_General) isWorkspaceSetting_Value() {} func (*WorkspaceSetting_General) isWorkspaceSetting_Value() {}
func (*WorkspaceSetting_Security) isWorkspaceSetting_Value() {}
func (*WorkspaceSetting_ShortcutRelated) isWorkspaceSetting_Value() {} func (*WorkspaceSetting_ShortcutRelated) isWorkspaceSetting_Value() {}
func (*WorkspaceSetting_IdentityProvider) isWorkspaceSetting_Value() {} func (*WorkspaceSetting_IdentityProvider) isWorkspaceSetting_Value() {}
@ -210,8 +228,9 @@ type WorkspaceSetting_GeneralSetting struct {
SecretSession string `protobuf:"bytes,1,opt,name=secret_session,json=secretSession,proto3" json:"secret_session,omitempty"` SecretSession string `protobuf:"bytes,1,opt,name=secret_session,json=secretSession,proto3" json:"secret_session,omitempty"`
LicenseKey string `protobuf:"bytes,2,opt,name=license_key,json=licenseKey,proto3" json:"license_key,omitempty"` LicenseKey string `protobuf:"bytes,2,opt,name=license_key,json=licenseKey,proto3" json:"license_key,omitempty"`
Branding []byte `protobuf:"bytes,3,opt,name=branding,proto3" json:"branding,omitempty"` InstanceUrl string `protobuf:"bytes,3,opt,name=instance_url,json=instanceUrl,proto3" json:"instance_url,omitempty"`
CustomStyle string `protobuf:"bytes,4,opt,name=custom_style,json=customStyle,proto3" json:"custom_style,omitempty"` Branding []byte `protobuf:"bytes,4,opt,name=branding,proto3" json:"branding,omitempty"`
CustomStyle string `protobuf:"bytes,5,opt,name=custom_style,json=customStyle,proto3" json:"custom_style,omitempty"`
} }
func (x *WorkspaceSetting_GeneralSetting) Reset() { func (x *WorkspaceSetting_GeneralSetting) Reset() {
@ -260,6 +279,13 @@ func (x *WorkspaceSetting_GeneralSetting) GetLicenseKey() string {
return "" return ""
} }
func (x *WorkspaceSetting_GeneralSetting) GetInstanceUrl() string {
if x != nil {
return x.InstanceUrl
}
return ""
}
func (x *WorkspaceSetting_GeneralSetting) GetBranding() []byte { func (x *WorkspaceSetting_GeneralSetting) GetBranding() []byte {
if x != nil { if x != nil {
return x.Branding return x.Branding
@ -274,6 +300,53 @@ func (x *WorkspaceSetting_GeneralSetting) GetCustomStyle() string {
return "" return ""
} }
type WorkspaceSetting_SecuritySetting struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
DisallowUserRegistration bool `protobuf:"varint,1,opt,name=disallow_user_registration,json=disallowUserRegistration,proto3" json:"disallow_user_registration,omitempty"`
}
func (x *WorkspaceSetting_SecuritySetting) Reset() {
*x = WorkspaceSetting_SecuritySetting{}
if protoimpl.UnsafeEnabled {
mi := &file_store_workspace_setting_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *WorkspaceSetting_SecuritySetting) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*WorkspaceSetting_SecuritySetting) ProtoMessage() {}
func (x *WorkspaceSetting_SecuritySetting) ProtoReflect() protoreflect.Message {
mi := &file_store_workspace_setting_proto_msgTypes[2]
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 WorkspaceSetting_SecuritySetting.ProtoReflect.Descriptor instead.
func (*WorkspaceSetting_SecuritySetting) Descriptor() ([]byte, []int) {
return file_store_workspace_setting_proto_rawDescGZIP(), []int{0, 1}
}
func (x *WorkspaceSetting_SecuritySetting) GetDisallowUserRegistration() bool {
if x != nil {
return x.DisallowUserRegistration
}
return false
}
type WorkspaceSetting_ShortcutRelatedSetting struct { type WorkspaceSetting_ShortcutRelatedSetting struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
@ -285,7 +358,7 @@ type WorkspaceSetting_ShortcutRelatedSetting struct {
func (x *WorkspaceSetting_ShortcutRelatedSetting) Reset() { func (x *WorkspaceSetting_ShortcutRelatedSetting) Reset() {
*x = WorkspaceSetting_ShortcutRelatedSetting{} *x = WorkspaceSetting_ShortcutRelatedSetting{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_store_workspace_setting_proto_msgTypes[2] mi := &file_store_workspace_setting_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -298,7 +371,7 @@ func (x *WorkspaceSetting_ShortcutRelatedSetting) String() string {
func (*WorkspaceSetting_ShortcutRelatedSetting) ProtoMessage() {} func (*WorkspaceSetting_ShortcutRelatedSetting) ProtoMessage() {}
func (x *WorkspaceSetting_ShortcutRelatedSetting) ProtoReflect() protoreflect.Message { func (x *WorkspaceSetting_ShortcutRelatedSetting) ProtoReflect() protoreflect.Message {
mi := &file_store_workspace_setting_proto_msgTypes[2] mi := &file_store_workspace_setting_proto_msgTypes[3]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -311,7 +384,7 @@ func (x *WorkspaceSetting_ShortcutRelatedSetting) ProtoReflect() protoreflect.Me
// Deprecated: Use WorkspaceSetting_ShortcutRelatedSetting.ProtoReflect.Descriptor instead. // Deprecated: Use WorkspaceSetting_ShortcutRelatedSetting.ProtoReflect.Descriptor instead.
func (*WorkspaceSetting_ShortcutRelatedSetting) Descriptor() ([]byte, []int) { func (*WorkspaceSetting_ShortcutRelatedSetting) Descriptor() ([]byte, []int) {
return file_store_workspace_setting_proto_rawDescGZIP(), []int{0, 1} return file_store_workspace_setting_proto_rawDescGZIP(), []int{0, 2}
} }
func (x *WorkspaceSetting_ShortcutRelatedSetting) GetDefaultVisibility() Visibility { func (x *WorkspaceSetting_ShortcutRelatedSetting) GetDefaultVisibility() Visibility {
@ -332,7 +405,7 @@ type WorkspaceSetting_IdentityProviderSetting struct {
func (x *WorkspaceSetting_IdentityProviderSetting) Reset() { func (x *WorkspaceSetting_IdentityProviderSetting) Reset() {
*x = WorkspaceSetting_IdentityProviderSetting{} *x = WorkspaceSetting_IdentityProviderSetting{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_store_workspace_setting_proto_msgTypes[3] mi := &file_store_workspace_setting_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -345,7 +418,7 @@ func (x *WorkspaceSetting_IdentityProviderSetting) String() string {
func (*WorkspaceSetting_IdentityProviderSetting) ProtoMessage() {} func (*WorkspaceSetting_IdentityProviderSetting) ProtoMessage() {}
func (x *WorkspaceSetting_IdentityProviderSetting) ProtoReflect() protoreflect.Message { func (x *WorkspaceSetting_IdentityProviderSetting) ProtoReflect() protoreflect.Message {
mi := &file_store_workspace_setting_proto_msgTypes[3] mi := &file_store_workspace_setting_proto_msgTypes[4]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -358,7 +431,7 @@ func (x *WorkspaceSetting_IdentityProviderSetting) ProtoReflect() protoreflect.M
// Deprecated: Use WorkspaceSetting_IdentityProviderSetting.ProtoReflect.Descriptor instead. // Deprecated: Use WorkspaceSetting_IdentityProviderSetting.ProtoReflect.Descriptor instead.
func (*WorkspaceSetting_IdentityProviderSetting) Descriptor() ([]byte, []int) { func (*WorkspaceSetting_IdentityProviderSetting) Descriptor() ([]byte, []int) {
return file_store_workspace_setting_proto_rawDescGZIP(), []int{0, 2} return file_store_workspace_setting_proto_rawDescGZIP(), []int{0, 3}
} }
func (x *WorkspaceSetting_IdentityProviderSetting) GetIdentityProviders() []*IdentityProvider { func (x *WorkspaceSetting_IdentityProviderSetting) GetIdentityProviders() []*IdentityProvider {
@ -376,7 +449,7 @@ var file_store_workspace_setting_proto_rawDesc = []byte{
0x0b, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x1a, 0x12, 0x73, 0x74, 0x0b, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x1a, 0x12, 0x73, 0x74,
0x6f, 0x72, 0x65, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x6f, 0x72, 0x65, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x1a, 0x0f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2f, 0x69, 0x64, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x1a, 0x0f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2f, 0x69, 0x64, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x22, 0xd9, 0x05, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x6f, 0x22, 0x9a, 0x07, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53,
0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x32, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x32, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x73, 0x74, 0x6f, 0x72,
0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69,
@ -386,74 +459,88 @@ var file_store_workspace_setting_proto_rawDesc = []byte{
0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b,
0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x47, 0x65, 0x6e, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x47, 0x65, 0x6e,
0x65, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x07, 0x67, 0x65, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x07, 0x67,
0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x12, 0x61, 0x0a, 0x10, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x63, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x12, 0x4b, 0x0a, 0x08, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69,
0x75, 0x74, 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68,
0x32, 0x34, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65,
0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79,
0x53, 0x68, 0x6f, 0x72, 0x74, 0x63, 0x75, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x53, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x08, 0x73, 0x65, 0x63, 0x75, 0x72,
0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x0f, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x63, 0x69, 0x74, 0x79, 0x12, 0x61, 0x0a, 0x10, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x63, 0x75, 0x74, 0x5f,
0x75, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x12, 0x64, 0x0a, 0x11, 0x69, 0x64, 0x65, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e,
0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x05, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x73, 0x74, 0x6f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x68, 0x6f,
0x72, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74,
0x69, 0x6e, 0x67, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76,
0x69, 0x64, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x10, 0x69,
0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x1a,
0x97, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69,
0x6e, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x73, 0x65, 0x73,
0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x65, 0x63, 0x72,
0x65, 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x69, 0x63,
0x65, 0x6e, 0x73, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x72,
0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x62, 0x72,
0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d,
0x5f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x75,
0x73, 0x74, 0x6f, 0x6d, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x1a, 0x60, 0x0a, 0x16, 0x53, 0x68, 0x6f,
0x72, 0x74, 0x63, 0x75, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x74, 0x72, 0x74, 0x63, 0x75, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x74,
0x69, 0x6e, 0x67, 0x12, 0x46, 0x0a, 0x12, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x0f, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x63, 0x75, 0x74, 0x52,
0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x12, 0x64, 0x0a, 0x11, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69,
0x17, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x56, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28,
0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x11, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x0b, 0x32, 0x35, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e,
0x74, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x1a, 0x67, 0x0a, 0x17, 0x49, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67,
0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x53,
0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x4c, 0x0a, 0x12, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69,
0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x65,
0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65,
0x72, 0x52, 0x11, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x10, 0x69, 0x64, 0x65, 0x6e,
0x64, 0x65, 0x72, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x2a, 0xc3, 0x02, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x1a, 0xba, 0x01, 0x0a,
0x0a, 0x13, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x0e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12,
0x6e, 0x67, 0x4b, 0x65, 0x79, 0x12, 0x25, 0x0a, 0x21, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x25, 0x0a, 0x0e, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f,
0x43, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x55, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x53,
0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x19, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73,
0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x69, 0x63,
0x65, 0x6e, 0x73, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x61,
0x6e, 0x63, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69,
0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x72,
0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x62, 0x72,
0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d,
0x5f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x75,
0x73, 0x74, 0x6f, 0x6d, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x1a, 0x4f, 0x0a, 0x0f, 0x53, 0x65, 0x63,
0x75, 0x72, 0x69, 0x74, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x3c, 0x0a, 0x1a,
0x64, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x72, 0x65,
0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08,
0x52, 0x18, 0x64, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65,
0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x60, 0x0a, 0x16, 0x53, 0x68,
0x6f, 0x72, 0x74, 0x63, 0x75, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74,
0x74, 0x69, 0x6e, 0x67, 0x12, 0x46, 0x0a, 0x12, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f,
0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e,
0x32, 0x17, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x56,
0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x11, 0x64, 0x65, 0x66, 0x61, 0x75,
0x6c, 0x74, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x1a, 0x67, 0x0a, 0x17,
0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72,
0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x4c, 0x0a, 0x12, 0x69, 0x64, 0x65, 0x6e, 0x74,
0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x73, 0x74, 0x6f, 0x72,
0x65, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64,
0x65, 0x72, 0x52, 0x11, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76,
0x69, 0x64, 0x65, 0x72, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x2a, 0xe3,
0x02, 0x0a, 0x13, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74,
0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x12, 0x25, 0x0a, 0x21, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50,
0x41, 0x43, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x4b, 0x45, 0x59, 0x5f,
0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1d, 0x0a,
0x19, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49,
0x4e, 0x47, 0x5f, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x1e, 0x0a, 0x1a,
0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e,
0x47, 0x5f, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x26, 0x0a, 0x22, 0x57, 0x47, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, 0x59, 0x10, 0x02, 0x12, 0x26, 0x0a, 0x22,
0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47,
0x5f, 0x53, 0x48, 0x4f, 0x52, 0x54, 0x43, 0x55, 0x54, 0x5f, 0x52, 0x45, 0x4c, 0x41, 0x54, 0x45,
0x44, 0x10, 0x02, 0x12, 0x27, 0x0a, 0x23, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45,
0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x44, 0x45, 0x4e, 0x54, 0x49, 0x54,
0x59, 0x5f, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52, 0x10, 0x03, 0x12, 0x21, 0x0a, 0x1d,
0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e,
0x47, 0x5f, 0x4c, 0x49, 0x43, 0x45, 0x4e, 0x53, 0x45, 0x5f, 0x4b, 0x45, 0x59, 0x10, 0x0a, 0x12, 0x47, 0x5f, 0x53, 0x48, 0x4f, 0x52, 0x54, 0x43, 0x55, 0x54, 0x5f, 0x52, 0x45, 0x4c, 0x41, 0x54,
0x24, 0x0a, 0x20, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x45, 0x44, 0x10, 0x03, 0x12, 0x27, 0x0a, 0x23, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43,
0x54, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x45, 0x43, 0x52, 0x45, 0x54, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x44, 0x45, 0x4e, 0x54, 0x49,
0x49, 0x4f, 0x4e, 0x10, 0x0b, 0x12, 0x22, 0x0a, 0x1e, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x54, 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52, 0x10, 0x04, 0x12, 0x21, 0x0a,
0x43, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x1d, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49,
0x4d, 0x5f, 0x53, 0x54, 0x59, 0x4c, 0x45, 0x10, 0x0c, 0x12, 0x28, 0x0a, 0x24, 0x57, 0x4f, 0x52, 0x4e, 0x47, 0x5f, 0x4c, 0x49, 0x43, 0x45, 0x4e, 0x53, 0x45, 0x5f, 0x4b, 0x45, 0x59, 0x10, 0x0a,
0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x44, 0x12, 0x24, 0x0a, 0x20, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x53, 0x45,
0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x56, 0x49, 0x53, 0x49, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x45, 0x43, 0x52, 0x45, 0x54, 0x5f, 0x53, 0x45, 0x53,
0x59, 0x10, 0x0d, 0x42, 0xa6, 0x01, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6c, 0x61, 0x73, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x0b, 0x12, 0x22, 0x0a, 0x1e, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50,
0x68, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, 0x15, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x41, 0x43, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x55, 0x53, 0x54,
0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x4f, 0x4d, 0x5f, 0x53, 0x54, 0x59, 0x4c, 0x45, 0x10, 0x0c, 0x12, 0x28, 0x0a, 0x24, 0x57, 0x4f,
0x5a, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x79, 0x6f, 0x75, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x5f,
0x72, 0x73, 0x65, 0x6c, 0x66, 0x68, 0x6f, 0x73, 0x74, 0x65, 0x64, 0x2f, 0x73, 0x6c, 0x61, 0x73, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x56, 0x49, 0x53, 0x49, 0x42, 0x49, 0x4c, 0x49,
0x68, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x54, 0x59, 0x10, 0x0d, 0x42, 0xa6, 0x01, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x6c, 0x61,
0x65, 0xa2, 0x02, 0x03, 0x53, 0x53, 0x58, 0xaa, 0x02, 0x0b, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x2e, 0x73, 0x68, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, 0x15, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70,
0x53, 0x74, 0x6f, 0x72, 0x65, 0xca, 0x02, 0x0b, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x5c, 0x53, 0x74, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50,
0x6f, 0x72, 0x65, 0xe2, 0x02, 0x17, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x5c, 0x53, 0x74, 0x6f, 0x72, 0x01, 0x5a, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x79, 0x6f,
0x65, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0c, 0x75, 0x72, 0x73, 0x65, 0x6c, 0x66, 0x68, 0x6f, 0x73, 0x74, 0x65, 0x64, 0x2f, 0x73, 0x6c, 0x61,
0x53, 0x6c, 0x61, 0x73, 0x68, 0x3a, 0x3a, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x73, 0x68, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x73, 0x74, 0x6f,
0x6f, 0x74, 0x6f, 0x33, 0x72, 0x65, 0xa2, 0x02, 0x03, 0x53, 0x53, 0x58, 0xaa, 0x02, 0x0b, 0x53, 0x6c, 0x61, 0x73, 0x68,
0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0xca, 0x02, 0x0b, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x5c, 0x53,
0x74, 0x6f, 0x72, 0x65, 0xe2, 0x02, 0x17, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x5c, 0x53, 0x74, 0x6f,
0x72, 0x65, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02,
0x0c, 0x53, 0x6c, 0x61, 0x73, 0x68, 0x3a, 0x3a, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x62, 0x06, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x33,
} }
var ( var (
@ -469,28 +556,30 @@ func file_store_workspace_setting_proto_rawDescGZIP() []byte {
} }
var file_store_workspace_setting_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_store_workspace_setting_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_store_workspace_setting_proto_msgTypes = make([]protoimpl.MessageInfo, 4) var file_store_workspace_setting_proto_msgTypes = make([]protoimpl.MessageInfo, 5)
var file_store_workspace_setting_proto_goTypes = []any{ var file_store_workspace_setting_proto_goTypes = []any{
(WorkspaceSettingKey)(0), // 0: slash.store.WorkspaceSettingKey (WorkspaceSettingKey)(0), // 0: slash.store.WorkspaceSettingKey
(*WorkspaceSetting)(nil), // 1: slash.store.WorkspaceSetting (*WorkspaceSetting)(nil), // 1: slash.store.WorkspaceSetting
(*WorkspaceSetting_GeneralSetting)(nil), // 2: slash.store.WorkspaceSetting.GeneralSetting (*WorkspaceSetting_GeneralSetting)(nil), // 2: slash.store.WorkspaceSetting.GeneralSetting
(*WorkspaceSetting_ShortcutRelatedSetting)(nil), // 3: slash.store.WorkspaceSetting.ShortcutRelatedSetting (*WorkspaceSetting_SecuritySetting)(nil), // 3: slash.store.WorkspaceSetting.SecuritySetting
(*WorkspaceSetting_IdentityProviderSetting)(nil), // 4: slash.store.WorkspaceSetting.IdentityProviderSetting (*WorkspaceSetting_ShortcutRelatedSetting)(nil), // 4: slash.store.WorkspaceSetting.ShortcutRelatedSetting
(Visibility)(0), // 5: slash.store.Visibility (*WorkspaceSetting_IdentityProviderSetting)(nil), // 5: slash.store.WorkspaceSetting.IdentityProviderSetting
(*IdentityProvider)(nil), // 6: slash.store.IdentityProvider (Visibility)(0), // 6: slash.store.Visibility
(*IdentityProvider)(nil), // 7: slash.store.IdentityProvider
} }
var file_store_workspace_setting_proto_depIdxs = []int32{ var file_store_workspace_setting_proto_depIdxs = []int32{
0, // 0: slash.store.WorkspaceSetting.key:type_name -> slash.store.WorkspaceSettingKey 0, // 0: slash.store.WorkspaceSetting.key:type_name -> slash.store.WorkspaceSettingKey
2, // 1: slash.store.WorkspaceSetting.general:type_name -> slash.store.WorkspaceSetting.GeneralSetting 2, // 1: slash.store.WorkspaceSetting.general:type_name -> slash.store.WorkspaceSetting.GeneralSetting
3, // 2: slash.store.WorkspaceSetting.shortcut_related:type_name -> slash.store.WorkspaceSetting.ShortcutRelatedSetting 3, // 2: slash.store.WorkspaceSetting.security:type_name -> slash.store.WorkspaceSetting.SecuritySetting
4, // 3: slash.store.WorkspaceSetting.identity_provider:type_name -> slash.store.WorkspaceSetting.IdentityProviderSetting 4, // 3: slash.store.WorkspaceSetting.shortcut_related:type_name -> slash.store.WorkspaceSetting.ShortcutRelatedSetting
5, // 4: slash.store.WorkspaceSetting.ShortcutRelatedSetting.default_visibility:type_name -> slash.store.Visibility 5, // 4: slash.store.WorkspaceSetting.identity_provider:type_name -> slash.store.WorkspaceSetting.IdentityProviderSetting
6, // 5: slash.store.WorkspaceSetting.IdentityProviderSetting.identity_providers:type_name -> slash.store.IdentityProvider 6, // 5: slash.store.WorkspaceSetting.ShortcutRelatedSetting.default_visibility:type_name -> slash.store.Visibility
6, // [6:6] is the sub-list for method output_type 7, // 6: slash.store.WorkspaceSetting.IdentityProviderSetting.identity_providers:type_name -> slash.store.IdentityProvider
6, // [6:6] is the sub-list for method input_type 7, // [7:7] is the sub-list for method output_type
6, // [6:6] is the sub-list for extension type_name 7, // [7:7] is the sub-list for method input_type
6, // [6:6] is the sub-list for extension extendee 7, // [7:7] is the sub-list for extension type_name
0, // [0:6] is the sub-list for field type_name 7, // [7:7] is the sub-list for extension extendee
0, // [0:7] is the sub-list for field type_name
} }
func init() { file_store_workspace_setting_proto_init() } func init() { file_store_workspace_setting_proto_init() }
@ -526,7 +615,7 @@ func file_store_workspace_setting_proto_init() {
} }
} }
file_store_workspace_setting_proto_msgTypes[2].Exporter = func(v any, i int) any { file_store_workspace_setting_proto_msgTypes[2].Exporter = func(v any, i int) any {
switch v := v.(*WorkspaceSetting_ShortcutRelatedSetting); i { switch v := v.(*WorkspaceSetting_SecuritySetting); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
@ -538,6 +627,18 @@ func file_store_workspace_setting_proto_init() {
} }
} }
file_store_workspace_setting_proto_msgTypes[3].Exporter = func(v any, i int) any { file_store_workspace_setting_proto_msgTypes[3].Exporter = func(v any, i int) any {
switch v := v.(*WorkspaceSetting_ShortcutRelatedSetting); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_store_workspace_setting_proto_msgTypes[4].Exporter = func(v any, i int) any {
switch v := v.(*WorkspaceSetting_IdentityProviderSetting); i { switch v := v.(*WorkspaceSetting_IdentityProviderSetting); i {
case 0: case 0:
return &v.state return &v.state
@ -552,6 +653,7 @@ func file_store_workspace_setting_proto_init() {
} }
file_store_workspace_setting_proto_msgTypes[0].OneofWrappers = []any{ file_store_workspace_setting_proto_msgTypes[0].OneofWrappers = []any{
(*WorkspaceSetting_General)(nil), (*WorkspaceSetting_General)(nil),
(*WorkspaceSetting_Security)(nil),
(*WorkspaceSetting_ShortcutRelated)(nil), (*WorkspaceSetting_ShortcutRelated)(nil),
(*WorkspaceSetting_IdentityProvider)(nil), (*WorkspaceSetting_IdentityProvider)(nil),
} }
@ -561,7 +663,7 @@ func file_store_workspace_setting_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(), GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_store_workspace_setting_proto_rawDesc, RawDescriptor: file_store_workspace_setting_proto_rawDesc,
NumEnums: 1, NumEnums: 1,
NumMessages: 4, NumMessages: 5,
NumExtensions: 0, NumExtensions: 0,
NumServices: 0, NumServices: 0,
}, },

View File

@ -13,15 +13,21 @@ message WorkspaceSetting {
oneof value { oneof value {
GeneralSetting general = 3; GeneralSetting general = 3;
ShortcutRelatedSetting shortcut_related = 4; SecuritySetting security = 4;
IdentityProviderSetting identity_provider = 5; ShortcutRelatedSetting shortcut_related = 5;
IdentityProviderSetting identity_provider = 6;
} }
message GeneralSetting { message GeneralSetting {
string secret_session = 1; string secret_session = 1;
string license_key = 2; string license_key = 2;
bytes branding = 3; string instance_url = 3;
string custom_style = 4; bytes branding = 4;
string custom_style = 5;
}
message SecuritySetting {
bool disallow_user_registration = 1;
} }
message ShortcutRelatedSetting { message ShortcutRelatedSetting {
@ -37,10 +43,12 @@ enum WorkspaceSettingKey {
WORKSPACE_SETTING_KEY_UNSPECIFIED = 0; WORKSPACE_SETTING_KEY_UNSPECIFIED = 0;
// Workspace general settings. // Workspace general settings.
WORKSPACE_SETTING_GENERAL = 1; WORKSPACE_SETTING_GENERAL = 1;
// Workspace security settings.
WORKSPACE_SETTING_SECURITY = 2;
// Workspace shortcut-related settings. // Workspace shortcut-related settings.
WORKSPACE_SETTING_SHORTCUT_RELATED = 2; WORKSPACE_SETTING_SHORTCUT_RELATED = 3;
// Workspace identity provider settings. // Workspace identity provider settings.
WORKSPACE_SETTING_IDENTITY_PROVIDER = 3; WORKSPACE_SETTING_IDENTITY_PROVIDER = 4;
// TODO: remove the following keys. // TODO: remove the following keys.
// The license key. // The license key.

View File

@ -158,11 +158,10 @@ func (s *APIV1Service) CreateShortcut(ctx context.Context, request *v1pb.CreateS
OgMetadata: &storepb.OpenGraphMetadata{}, OgMetadata: &storepb.OpenGraphMetadata{},
} }
if shortcutCreate.Visibility == storepb.Visibility_VISIBILITY_UNSPECIFIED { if shortcutCreate.Visibility == storepb.Visibility_VISIBILITY_UNSPECIFIED {
getWorkspaceSettingResponse, err := s.GetWorkspaceSetting(ctx, nil) workspaceSetting, err := s.GetWorkspaceSetting(ctx, nil)
if err != nil { if err != nil {
return nil, status.Errorf(codes.Internal, "failed to get workspace setting, err: %v", err) return nil, status.Errorf(codes.Internal, "failed to get workspace setting, err: %v", err)
} }
workspaceSetting := getWorkspaceSettingResponse.Setting
visibility := v1pb.Visibility_PRIVATE visibility := v1pb.Visibility_PRIVATE
if workspaceSetting.DefaultVisibility != v1pb.Visibility_VISIBILITY_UNSPECIFIED { if workspaceSetting.DefaultVisibility != v1pb.Visibility_VISIBILITY_UNSPECIFIED {
visibility = workspaceSetting.DefaultVisibility visibility = workspaceSetting.DefaultVisibility

View File

@ -13,18 +13,16 @@ import (
"github.com/yourselfhosted/slash/store" "github.com/yourselfhosted/slash/store"
) )
func (s *APIV1Service) GetWorkspaceProfile(ctx context.Context, _ *v1pb.GetWorkspaceProfileRequest) (*v1pb.GetWorkspaceProfileResponse, error) { func (s *APIV1Service) GetWorkspaceProfile(ctx context.Context, _ *v1pb.GetWorkspaceProfileRequest) (*v1pb.WorkspaceProfile, error) {
workspaceProfile := &v1pb.WorkspaceProfile{ workspaceProfile := &v1pb.WorkspaceProfile{
Mode: s.Profile.Mode, Mode: s.Profile.Mode,
Version: s.Profile.Version, Version: s.Profile.Version,
Plan: v1pb.PlanType_FREE,
EnableSignup: s.Profile.Public, EnableSignup: s.Profile.Public,
} }
// Load subscription plan from license service. // Load subscription plan from license service.
subscription := s.LicenseService.GetSubscription() subscription := s.LicenseService.GetSubscription()
workspaceProfile.Plan = subscription.Plan workspaceProfile.Subscription = subscription
workspaceProfile.Features = subscription.Features
owner, err := s.GetInstanceOwner(ctx) owner, err := s.GetInstanceOwner(ctx)
if err != nil { if err != nil {
@ -45,12 +43,10 @@ func (s *APIV1Service) GetWorkspaceProfile(ctx context.Context, _ *v1pb.GetWorks
workspaceProfile.Branding = generalSetting.GetBranding() workspaceProfile.Branding = generalSetting.GetBranding()
} }
return &v1pb.GetWorkspaceProfileResponse{ return workspaceProfile, nil
Profile: workspaceProfile,
}, nil
} }
func (s *APIV1Service) GetWorkspaceSetting(ctx context.Context, _ *v1pb.GetWorkspaceSettingRequest) (*v1pb.GetWorkspaceSettingResponse, error) { func (s *APIV1Service) GetWorkspaceSetting(ctx context.Context, _ *v1pb.GetWorkspaceSettingRequest) (*v1pb.WorkspaceSetting, error) {
currentUser, err := getCurrentUser(ctx, s.Store) currentUser, err := getCurrentUser(ctx, s.Store)
if err != nil { if err != nil {
return nil, status.Errorf(codes.Unauthenticated, "failed to get current user: %v", err) return nil, status.Errorf(codes.Unauthenticated, "failed to get current user: %v", err)
@ -83,12 +79,10 @@ func (s *APIV1Service) GetWorkspaceSetting(ctx context.Context, _ *v1pb.GetWorks
} }
} }
} }
return &v1pb.GetWorkspaceSettingResponse{ return workspaceSetting, nil
Setting: workspaceSetting,
}, nil
} }
func (s *APIV1Service) UpdateWorkspaceSetting(ctx context.Context, request *v1pb.UpdateWorkspaceSettingRequest) (*v1pb.UpdateWorkspaceSettingResponse, error) { func (s *APIV1Service) UpdateWorkspaceSetting(ctx context.Context, request *v1pb.UpdateWorkspaceSettingRequest) (*v1pb.WorkspaceSetting, error) {
if request.UpdateMask == nil || len(request.UpdateMask.Paths) == 0 { if request.UpdateMask == nil || len(request.UpdateMask.Paths) == 0 {
return nil, status.Errorf(codes.InvalidArgument, "update mask is empty") return nil, status.Errorf(codes.InvalidArgument, "update mask is empty")
} }
@ -184,13 +178,11 @@ func (s *APIV1Service) UpdateWorkspaceSetting(ctx context.Context, request *v1pb
} }
} }
getWorkspaceSettingResponse, err := s.GetWorkspaceSetting(ctx, &v1pb.GetWorkspaceSettingRequest{}) workspaceSetting, err := s.GetWorkspaceSetting(ctx, &v1pb.GetWorkspaceSettingRequest{})
if err != nil { if err != nil {
return nil, status.Errorf(codes.Internal, "failed to get workspace setting: %v", err) return nil, status.Errorf(codes.Internal, "failed to get workspace setting: %v", err)
} }
return &v1pb.UpdateWorkspaceSettingResponse{ return workspaceSetting, nil
Setting: getWorkspaceSettingResponse.Setting,
}, nil
} }
var ownerCache *v1pb.User var ownerCache *v1pb.User

View File

@ -29,6 +29,12 @@ func (d *DB) UpsertWorkspaceSetting(ctx context.Context, upsert *storepb.Workspa
return nil, err return nil, err
} }
valueString = string(valueBytes) valueString = string(valueBytes)
} else if upsert.Key == storepb.WorkspaceSettingKey_WORKSPACE_SETTING_SECURITY {
valueBytes, err := protojson.Marshal(upsert.GetSecurity())
if err != nil {
return nil, err
}
valueString = string(valueBytes)
} else if upsert.Key == storepb.WorkspaceSettingKey_WORKSPACE_SETTING_SHORTCUT_RELATED { } else if upsert.Key == storepb.WorkspaceSettingKey_WORKSPACE_SETTING_SHORTCUT_RELATED {
valueBytes, err := protojson.Marshal(upsert.GetShortcutRelated()) valueBytes, err := protojson.Marshal(upsert.GetShortcutRelated())
if err != nil { if err != nil {
@ -92,6 +98,14 @@ func (d *DB) ListWorkspaceSettings(ctx context.Context, find *store.FindWorkspac
workspaceSetting.Value = &storepb.WorkspaceSetting_General{ workspaceSetting.Value = &storepb.WorkspaceSetting_General{
General: workspaceSettingGeneral, General: workspaceSettingGeneral,
} }
} else if workspaceSetting.Key == storepb.WorkspaceSettingKey_WORKSPACE_SETTING_SECURITY {
workspaceSettingSecurity := &storepb.WorkspaceSetting_SecuritySetting{}
if err := protojsonUnmarshaler.Unmarshal([]byte(valueString), workspaceSettingSecurity); err != nil {
return nil, err
}
workspaceSetting.Value = &storepb.WorkspaceSetting_Security{
Security: workspaceSettingSecurity,
}
} else if workspaceSetting.Key == storepb.WorkspaceSettingKey_WORKSPACE_SETTING_SHORTCUT_RELATED { } else if workspaceSetting.Key == storepb.WorkspaceSettingKey_WORKSPACE_SETTING_SHORTCUT_RELATED {
workspaceSettingShortcutRelated := &storepb.WorkspaceSetting_ShortcutRelatedSetting{} workspaceSettingShortcutRelated := &storepb.WorkspaceSetting_ShortcutRelatedSetting{}
if err := protojsonUnmarshaler.Unmarshal([]byte(valueString), workspaceSettingShortcutRelated); err != nil { if err := protojsonUnmarshaler.Unmarshal([]byte(valueString), workspaceSettingShortcutRelated); err != nil {

View File

@ -29,6 +29,12 @@ func (d *DB) UpsertWorkspaceSetting(ctx context.Context, upsert *storepb.Workspa
return nil, err return nil, err
} }
valueString = string(valueBytes) valueString = string(valueBytes)
} else if upsert.Key == storepb.WorkspaceSettingKey_WORKSPACE_SETTING_SECURITY {
valueBytes, err := protojson.Marshal(upsert.GetSecurity())
if err != nil {
return nil, err
}
valueString = string(valueBytes)
} else if upsert.Key == storepb.WorkspaceSettingKey_WORKSPACE_SETTING_SHORTCUT_RELATED { } else if upsert.Key == storepb.WorkspaceSettingKey_WORKSPACE_SETTING_SHORTCUT_RELATED {
valueBytes, err := protojson.Marshal(upsert.GetShortcutRelated()) valueBytes, err := protojson.Marshal(upsert.GetShortcutRelated())
if err != nil { if err != nil {
@ -92,6 +98,14 @@ func (d *DB) ListWorkspaceSettings(ctx context.Context, find *store.FindWorkspac
workspaceSetting.Value = &storepb.WorkspaceSetting_General{ workspaceSetting.Value = &storepb.WorkspaceSetting_General{
General: workspaceSettingGeneral, General: workspaceSettingGeneral,
} }
} else if workspaceSetting.Key == storepb.WorkspaceSettingKey_WORKSPACE_SETTING_SECURITY {
workspaceSettingSecurity := &storepb.WorkspaceSetting_SecuritySetting{}
if err := protojsonUnmarshaler.Unmarshal([]byte(valueString), workspaceSettingSecurity); err != nil {
return nil, err
}
workspaceSetting.Value = &storepb.WorkspaceSetting_Security{
Security: workspaceSettingSecurity,
}
} else if workspaceSetting.Key == storepb.WorkspaceSettingKey_WORKSPACE_SETTING_SHORTCUT_RELATED { } else if workspaceSetting.Key == storepb.WorkspaceSettingKey_WORKSPACE_SETTING_SHORTCUT_RELATED {
workspaceSettingShortcutRelated := &storepb.WorkspaceSetting_ShortcutRelatedSetting{} workspaceSettingShortcutRelated := &storepb.WorkspaceSetting_ShortcutRelatedSetting{}
if err := protojsonUnmarshaler.Unmarshal([]byte(valueString), workspaceSettingShortcutRelated); err != nil { if err := protojsonUnmarshaler.Unmarshal([]byte(valueString), workspaceSettingShortcutRelated); err != nil {

View File

@ -43,7 +43,6 @@ func (s *Store) GetWorkspaceSetting(ctx context.Context, find *FindWorkspaceSett
if err != nil { if err != nil {
return nil, err return nil, err
} }
if len(list) == 0 { if len(list) == 0 {
return nil, nil return nil, nil
} }