diff --git a/components/dashboard/src/admin/TeamDetail.tsx b/components/dashboard/src/admin/TeamDetail.tsx index 1d35b31ee9b90e..8d301f0bca5c72 100644 --- a/components/dashboard/src/admin/TeamDetail.tsx +++ b/components/dashboard/src/admin/TeamDetail.tsx @@ -6,7 +6,7 @@ import dayjs from "dayjs"; import { useEffect, useState } from "react"; -import { Team, TeamMemberInfo, TeamMemberRole } from "@gitpod/gitpod-protocol"; +import { Team, TeamMemberInfo, TeamMemberRole, VALID_ORG_MEMBER_ROLES } from "@gitpod/gitpod-protocol"; import { getGitpodService } from "../service/service"; import { Item, ItemField, ItemsList } from "../components/ItemsList"; import DropDown from "../components/DropDown"; @@ -205,20 +205,10 @@ export default function TeamDetail(props: { team: Team }) { setTeamMemberRole(m.userId, "owner"), - }, - { - title: "member", - onClick: () => setTeamMemberRole(m.userId, "member"), - }, - { - title: "collaborator", - onClick: () => setTeamMemberRole(m.userId, "collaborator"), - }, - ]} + entries={VALID_ORG_MEMBER_ROLES.map((role) => ({ + title: role, + onClick: () => setTeamMemberRole(m.userId, role), + }))} /> diff --git a/components/dashboard/src/components/OrgMemberPermissionsOptions.tsx b/components/dashboard/src/components/OrgMemberPermissionsOptions.tsx new file mode 100644 index 00000000000000..e1cf7a1d0f9e25 --- /dev/null +++ b/components/dashboard/src/components/OrgMemberPermissionsOptions.tsx @@ -0,0 +1,160 @@ +/** + * Copyright (c) 2024 Gitpod GmbH. All rights reserved. + * Licensed under the GNU Affero General Public License (AGPL). + * See License.AGPL.txt in the project root for license information. + */ + +import { useState } from "react"; +import { LoadingButton } from "@podkit/buttons/LoadingButton"; +import { Button } from "@podkit/buttons/Button"; +import { SwitchInputField } from "@podkit/switch/Switch"; +import { cn } from "@podkit/lib/cn"; +import { UserIcon } from "lucide-react"; +import { UseMutationResult } from "@tanstack/react-query"; +import { AllowedWorkspaceClass } from "../data/workspaces/workspace-classes-query"; +import { useToast } from "./toasts/Toasts"; +import Modal, { ModalBaseFooter, ModalBody, ModalHeader } from "./Modal"; +import { LoadingState } from "@podkit/loading/LoadingState"; +import { VALID_ORG_MEMBER_ROLES } from "@gitpod/gitpod-protocol"; +import { OrganizationPermission, RoleRestrictionEntry } from "@gitpod/public-api/lib/gitpod/v1/organization_pb"; +import { PlainMessage } from "@bufbuild/protobuf"; +import { PublicAPIConverter } from "@gitpod/public-api-common/lib/public-api-converter"; + +const converter = new PublicAPIConverter(); + +interface WorkspaceClassesOptionsProps { + roleRestrictions: RoleRestrictionEntry[]; + defaultClass?: string; + className?: string; +} + +export const OrgMemberPermissionRestrictionsOptions = ({ + roleRestrictions, + className, +}: WorkspaceClassesOptionsProps) => { + const rolesRestrictingArbitraryRepositories = roleRestrictions.filter((entry) => + entry.permissions.includes(OrganizationPermission.START_ARBITRARY_REPOS), + ); + const rolesAllowedToOpenArbitraryRepositories = VALID_ORG_MEMBER_ROLES.filter( + (role) => + !rolesRestrictingArbitraryRepositories.some((entry) => entry.role === converter.toOrgMemberRole(role)), + ); + + if (rolesAllowedToOpenArbitraryRepositories.length === 0) { + return
Nobody in the organization can open repositories that are not imported
; + } + + return ( +
+ {rolesAllowedToOpenArbitraryRepositories.map((entry) => ( +
+ +
+ {entry} +
+
+ ))} +
+ ); +}; + +export type OrganizationRoleRestrictionModalProps = { + isLoading: boolean; + defaultClass?: string; + roleRestrictions: RoleRestrictionEntry[]; + showSetDefaultButton: boolean; + showSwitchTitle: boolean; + + allowedClasses: AllowedWorkspaceClass[]; + updateMutation: UseMutationResult[] }>; + + onClose: () => void; +}; + +export const OrganizationRoleRestrictionModal = ({ + onClose, + updateMutation, + showSetDefaultButton, + showSwitchTitle, + ...props +}: OrganizationRoleRestrictionModalProps) => { + const [restrictedRoles, setRestrictedClasses] = useState( + props.roleRestrictions + .filter((entry) => entry.permissions.includes(OrganizationPermission.START_ARBITRARY_REPOS)) + .map((entry) => converter.fromOrgMemberRole(entry.role)), + ); + + const { toast } = useToast(); + + const handleUpdate = async () => { + updateMutation.mutate( + { + roleRestrictions: restrictedRoles.map((role) => { + return { + role: converter.toOrgMemberRole(role), + permissions: [OrganizationPermission.START_ARBITRARY_REPOS], + }; + }), + }, + { + onSuccess: () => { + toast({ message: "Role restrictions updated" }); + onClose(); + }, + }, + ); + }; + + return ( + + Allow roles to start workspaces from non-imported repos + + {props.isLoading ? ( + + ) : ( + VALID_ORG_MEMBER_ROLES.map((role) => ( + { + console.log(role, { checked }); + if (!checked) { + setRestrictedClasses((prev) => [...prev, role]); + } else { + setRestrictedClasses((prev) => prev.filter((r) => r !== role)); + } + }} + /> + )) + )} + + +
+ + + Save + +
+
+
+ ); +}; + +interface OrganizationRoleRestrictionSwitchProps { + role: string; + checked: boolean; + onCheckedChange: (checked: boolean) => void; +} +const OrganizationRoleRestrictionSwitch = ({ + role, + checked, + onCheckedChange, +}: OrganizationRoleRestrictionSwitchProps) => { + return ( +
+ +
+ ); +}; diff --git a/components/dashboard/src/data/organizations/members-query.ts b/components/dashboard/src/data/organizations/members-query.ts index dbd781c32df671..e82571d22c1676 100644 --- a/components/dashboard/src/data/organizations/members-query.ts +++ b/components/dashboard/src/data/organizations/members-query.ts @@ -44,7 +44,7 @@ export function useIsOwner(): boolean { return role === OrganizationRole.OWNER; } -function useMemberRole(): OrganizationRole { +export function useMemberRole(): OrganizationRole { const user = useCurrentUser(); const members = useListOrganizationMembers(); return useMemo( diff --git a/components/dashboard/src/data/organizations/update-org-settings-mutation.ts b/components/dashboard/src/data/organizations/update-org-settings-mutation.ts index 058b105b97a481..ddd9d339bc503a 100644 --- a/components/dashboard/src/data/organizations/update-org-settings-mutation.ts +++ b/components/dashboard/src/data/organizations/update-org-settings-mutation.ts @@ -23,6 +23,7 @@ type UpdateOrganizationSettingsArgs = Partial< | "restrictedEditorNames" | "defaultRole" | "timeoutSettings" + | "roleRestrictions" > >; @@ -41,6 +42,7 @@ export const useUpdateOrgSettingsMutation = () => { restrictedEditorNames, defaultRole, timeoutSettings, + roleRestrictions, }) => { const settings = await organizationClient.updateOrganizationSettings({ organizationId: teamId, @@ -53,6 +55,8 @@ export const useUpdateOrgSettingsMutation = () => { updateRestrictedEditorNames: !!restrictedEditorNames, defaultRole, timeoutSettings, + roleRestrictions, + updateRoleRestrictions: !!roleRestrictions, }); return settings.settings!; }, diff --git a/components/dashboard/src/service/json-rpc-organization-client.ts b/components/dashboard/src/service/json-rpc-organization-client.ts index 25c735f7007052..6c3d18675ef819 100644 --- a/components/dashboard/src/service/json-rpc-organization-client.ts +++ b/components/dashboard/src/service/json-rpc-organization-client.ts @@ -41,7 +41,7 @@ import { import { getGitpodService } from "./service"; import { converter } from "./public-api"; import { ApplicationError, ErrorCodes } from "@gitpod/gitpod-protocol/lib/messaging/error"; -import { OrgMemberRole } from "@gitpod/gitpod-protocol"; +import { OrgMemberRole, RoleRestrictions } from "@gitpod/gitpod-protocol"; export class JsonRpcOrganizationClient implements PromiseClient { async createOrganization( @@ -251,6 +251,24 @@ export class JsonRpcOrganizationClient implements PromiseClient converter.fromOrganizationPermission(p)); + + roleRestrictions[role] = permissions; + } + } else if (request.roleRestrictions && Object.keys(request.roleRestrictions).length > 0) { + throw new ApplicationError( + ErrorCodes.BAD_REQUEST, + "updateRoleRestrictions is required to be true to update roleRestrictions", + ); + } + await getGitpodService().server.updateOrgSettings(request.organizationId, { ...update, defaultRole: request.defaultRole as OrgMemberRole, @@ -258,6 +276,7 @@ export class JsonRpcOrganizationClient implements PromiseClient + + @@ -314,6 +326,71 @@ const OrgWorkspaceClassesOptions = ({ ); }; +type RolePermissionsRestrictionsProps = { + settings: OrganizationSettings | undefined; + isOwner: boolean; + handleUpdateTeamSettings: ( + newSettings: Partial>, + options?: { throwMutateError?: boolean }, + ) => Promise; +}; + +const RolePermissionsRestrictions = ({ + settings, + isOwner, + handleUpdateTeamSettings, +}: RolePermissionsRestrictionsProps) => { + const [showModal, setShowModal] = useState(false); + + const updateMutation: OrganizationRoleRestrictionModalProps["updateMutation"] = useMutation({ + mutationFn: async ({ roleRestrictions }) => { + await handleUpdateTeamSettings({ roleRestrictions }, { throwMutateError: true }); + }, + }); + + return ( + + Roles allowed to start workspaces from non-imported repos + + Restrict specific roles from initiating workspaces using non-imported repositories. This setting + requires Owner permissions to modify. +
+ + {" "} + + Tip: Imported repositories are those listed under{" "} + + Repository settings + + . + + +
+ + + + {isOwner && ( + + )} + + {showModal && ( + setShowModal(false)} + /> + )} +
+ ); +}; + interface EditorOptionsProps { settings: OrganizationSettings | undefined; isOwner: boolean; diff --git a/components/dashboard/src/workspaces/CreateWorkspacePage.tsx b/components/dashboard/src/workspaces/CreateWorkspacePage.tsx index 8d75dbdebe9d14..a86a82018ffcaf 100644 --- a/components/dashboard/src/workspaces/CreateWorkspacePage.tsx +++ b/components/dashboard/src/workspaces/CreateWorkspacePage.tsx @@ -57,6 +57,8 @@ import { isGitpodIo } from "../utils"; import { useListConfigurations } from "../data/configurations/configuration-queries"; import { flattenPagedConfigurations } from "../data/git-providers/unified-repositories-search-query"; import { Configuration } from "@gitpod/public-api/lib/gitpod/v1/configuration_pb"; +import { useMemberRole } from "../data/organizations/members-query"; +import { OrganizationPermission } from "@gitpod/public-api/lib/gitpod/v1/organization_pb"; type NextLoadOption = "searchParams" | "autoStart" | "allDone"; @@ -107,6 +109,7 @@ export function CreateWorkspacePage() { const defaultWorkspaceClass = props.workspaceClass ?? computedDefaultClass; const showExamples = props.showExamples ?? false; const { data: orgSettings } = useOrgSettingsQuery(); + const memberRole = useMemberRole(); const [selectedWsClass, setSelectedWsClass, selectedWsClassIsDirty] = useDirtyState(defaultWorkspaceClass); const [errorWsClass, setErrorWsClass] = useState(undefined); const [errorIde, setErrorIde] = useState(undefined); @@ -556,6 +559,15 @@ export function CreateWorkspacePage() { selectedContextURL={contextURL} selectedConfigurationId={selectedProjectID} expanded={!contextURL} + onlyConfigurations={ + orgSettings?.roleRestrictions.some( + (roleRestriction) => + roleRestriction.role === memberRole && + roleRestriction.permissions.includes( + OrganizationPermission.START_ARBITRARY_REPOS, + ), + ) ?? false + } disabled={createWorkspaceMutation.isStarting} showExamples={showExamples} /> diff --git a/components/gitpod-db/src/typeorm/entity/db-team-settings.ts b/components/gitpod-db/src/typeorm/entity/db-team-settings.ts index 39df34df939700..a8ef134f3c206d 100644 --- a/components/gitpod-db/src/typeorm/entity/db-team-settings.ts +++ b/components/gitpod-db/src/typeorm/entity/db-team-settings.ts @@ -4,7 +4,7 @@ * See License.AGPL.txt in the project root for license information. */ -import { OrgMemberRole, OrganizationSettings, TimeoutSettings } from "@gitpod/gitpod-protocol"; +import { OrgMemberRole, OrganizationSettings, RoleRestrictions, TimeoutSettings } from "@gitpod/gitpod-protocol"; import { Entity, Column, PrimaryColumn } from "typeorm"; import { TypeORM } from "../typeorm"; @@ -36,6 +36,9 @@ export class DBOrgSettings implements OrganizationSettings { @Column("json", { nullable: true }) timeoutSettings?: TimeoutSettings | undefined; + @Column("json", { nullable: true }) + roleRestrictions?: RoleRestrictions | undefined; + @Column() deleted: boolean; } diff --git a/components/gitpod-db/src/typeorm/migration/1727033423127-AddOrgRoleRestrictionSettings.ts b/components/gitpod-db/src/typeorm/migration/1727033423127-AddOrgRoleRestrictionSettings.ts new file mode 100644 index 00000000000000..40c316b491ce06 --- /dev/null +++ b/components/gitpod-db/src/typeorm/migration/1727033423127-AddOrgRoleRestrictionSettings.ts @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2024 Gitpod GmbH. All rights reserved. + * Licensed under the GNU Affero General Public License (AGPL). + * See License.AGPL.txt in the project root for license information. + */ + +import { MigrationInterface, QueryRunner } from "typeorm"; +import { columnExists } from "./helper/helper"; + +const table = "d_b_org_settings"; +const newColumn = "roleRestrictions"; + +export class AddOrgRoleRestrictionSettings1727033423127 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + if (!(await columnExists(queryRunner, table, newColumn))) { + await queryRunner.query(`ALTER TABLE ${table} ADD COLUMN ${newColumn} JSON NULL`); + } + } + + public async down(queryRunner: QueryRunner): Promise { + if (await columnExists(queryRunner, table, newColumn)) { + await queryRunner.query(`ALTER TABLE ${table} DROP COLUMN ${newColumn}`); + } + } +} diff --git a/components/gitpod-db/src/typeorm/team-db-impl.ts b/components/gitpod-db/src/typeorm/team-db-impl.ts index ead8efd55d2c31..6b5a328c37773b 100644 --- a/components/gitpod-db/src/typeorm/team-db-impl.ts +++ b/components/gitpod-db/src/typeorm/team-db-impl.ts @@ -369,6 +369,7 @@ export class TeamDBImpl extends TransactionalDBImpl implements TeamDB { "restrictedEditorNames", "defaultRole", "timeoutSettings", + "roleRestrictions", ], }); } diff --git a/components/gitpod-protocol/src/teams-projects-protocol.ts b/components/gitpod-protocol/src/teams-projects-protocol.ts index bb0e755983c237..8778a14c73797f 100644 --- a/components/gitpod-protocol/src/teams-projects-protocol.ts +++ b/components/gitpod-protocol/src/teams-projects-protocol.ts @@ -231,6 +231,8 @@ export interface OrganizationSettings { // the default organization-wide timeout settings for workspaces timeoutSettings?: TimeoutSettings; + + roleRestrictions?: RoleRestrictions; } export type TimeoutSettings = { @@ -241,12 +243,17 @@ export type TimeoutSettings = { denyUserTimeouts?: boolean; }; +export const VALID_ORG_MEMBER_ROLES = ["owner", "member", "collaborator"] as const; + export type TeamMemberRole = OrgMemberRole; -export type OrgMemberRole = "owner" | "member" | "collaborator"; +export type OrgMemberRole = typeof VALID_ORG_MEMBER_ROLES[number]; + +export type OrgMemberPermission = "start_arbitrary_repositories"; +export type RoleRestrictions = Partial>; export namespace TeamMemberRole { - export function isValid(role: any): role is TeamMemberRole { - return role === "owner" || role === "member" || role === "collaborator"; + export function isValid(role: unknown): role is TeamMemberRole { + return VALID_ORG_MEMBER_ROLES.includes(role as TeamMemberRole); } } diff --git a/components/public-api/gitpod/v1/organization.proto b/components/public-api/gitpod/v1/organization.proto index 29bf72f85a0d92..30c632ddfaa3c2 100644 --- a/components/public-api/gitpod/v1/organization.proto +++ b/components/public-api/gitpod/v1/organization.proto @@ -34,6 +34,20 @@ enum OrganizationRole { ORGANIZATION_ROLE_COLLABORATOR = 3; } +// OrganizationPermissions define permissions that are restrictable using RoleRestrictions +enum OrganizationPermission { + ORGANIZATION_PERMISSION_UNSPECIFIED = 0; + ORGANIZATION_PERMISSION_START_ARBITRARY_REPOS = 1; +} + +message RoleRestrictionEntry { + // role is the role that is restricted + OrganizationRole role = 1; + + // permissions are the permissions that are restricted + repeated OrganizationPermission permissions = 2; +} + message OrganizationSettings { bool workspace_sharing_disabled = 1; string default_workspace_image = 2; @@ -42,6 +56,7 @@ message OrganizationSettings { map pinned_editor_versions = 5; string default_role = 6; TimeoutSettings timeout_settings = 7; + repeated RoleRestrictionEntry role_restrictions = 8; } service OrganizationService { @@ -159,6 +174,11 @@ message UpdateOrganizationSettingsRequest { // timeout_settings are the settings for workspace timeouts optional TimeoutSettings timeout_settings = 11; + + repeated RoleRestrictionEntry role_restrictions = 12; + + // Specifies whether role_restrictions should be updated. + optional bool update_role_restrictions = 13; } message UpdateOrganizationSettingsResponse { diff --git a/components/public-api/go/v1/organization.pb.go b/components/public-api/go/v1/organization.pb.go index b4833a82a6d385..56292b97a3d523 100644 --- a/components/public-api/go/v1/organization.pb.go +++ b/components/public-api/go/v1/organization.pb.go @@ -78,6 +78,53 @@ func (OrganizationRole) EnumDescriptor() ([]byte, []int) { return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{0} } +// OrganizationPermissions define permissions that are restrictable using RoleRestrictions +type OrganizationPermission int32 + +const ( + OrganizationPermission_ORGANIZATION_PERMISSION_UNSPECIFIED OrganizationPermission = 0 + OrganizationPermission_ORGANIZATION_PERMISSION_START_ARBITRARY_REPOS OrganizationPermission = 1 +) + +// Enum value maps for OrganizationPermission. +var ( + OrganizationPermission_name = map[int32]string{ + 0: "ORGANIZATION_PERMISSION_UNSPECIFIED", + 1: "ORGANIZATION_PERMISSION_START_ARBITRARY_REPOS", + } + OrganizationPermission_value = map[string]int32{ + "ORGANIZATION_PERMISSION_UNSPECIFIED": 0, + "ORGANIZATION_PERMISSION_START_ARBITRARY_REPOS": 1, + } +) + +func (x OrganizationPermission) Enum() *OrganizationPermission { + p := new(OrganizationPermission) + *p = x + return p +} + +func (x OrganizationPermission) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (OrganizationPermission) Descriptor() protoreflect.EnumDescriptor { + return file_gitpod_v1_organization_proto_enumTypes[1].Descriptor() +} + +func (OrganizationPermission) Type() protoreflect.EnumType { + return &file_gitpod_v1_organization_proto_enumTypes[1] +} + +func (x OrganizationPermission) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use OrganizationPermission.Descriptor instead. +func (OrganizationPermission) EnumDescriptor() ([]byte, []int) { + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{1} +} + type ListOrganizationsRequest_Scope int32 const ( @@ -111,11 +158,11 @@ func (x ListOrganizationsRequest_Scope) String() string { } func (ListOrganizationsRequest_Scope) Descriptor() protoreflect.EnumDescriptor { - return file_gitpod_v1_organization_proto_enumTypes[1].Descriptor() + return file_gitpod_v1_organization_proto_enumTypes[2].Descriptor() } func (ListOrganizationsRequest_Scope) Type() protoreflect.EnumType { - return &file_gitpod_v1_organization_proto_enumTypes[1] + return &file_gitpod_v1_organization_proto_enumTypes[2] } func (x ListOrganizationsRequest_Scope) Number() protoreflect.EnumNumber { @@ -124,7 +171,7 @@ func (x ListOrganizationsRequest_Scope) Number() protoreflect.EnumNumber { // Deprecated: Use ListOrganizationsRequest_Scope.Descriptor instead. func (ListOrganizationsRequest_Scope) EnumDescriptor() ([]byte, []int) { - return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{16, 0} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{17, 0} } type Organization struct { @@ -293,24 +340,82 @@ func (x *OrganizationMember) GetOwnedByOrganization() bool { return false } +type RoleRestrictionEntry struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // role is the role that is restricted + Role OrganizationRole `protobuf:"varint,1,opt,name=role,proto3,enum=gitpod.v1.OrganizationRole" json:"role,omitempty"` + // permissions are the permissions that are restricted + Permissions []OrganizationPermission `protobuf:"varint,2,rep,packed,name=permissions,proto3,enum=gitpod.v1.OrganizationPermission" json:"permissions,omitempty"` +} + +func (x *RoleRestrictionEntry) Reset() { + *x = RoleRestrictionEntry{} + if protoimpl.UnsafeEnabled { + mi := &file_gitpod_v1_organization_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RoleRestrictionEntry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RoleRestrictionEntry) ProtoMessage() {} + +func (x *RoleRestrictionEntry) ProtoReflect() protoreflect.Message { + mi := &file_gitpod_v1_organization_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 RoleRestrictionEntry.ProtoReflect.Descriptor instead. +func (*RoleRestrictionEntry) Descriptor() ([]byte, []int) { + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{2} +} + +func (x *RoleRestrictionEntry) GetRole() OrganizationRole { + if x != nil { + return x.Role + } + return OrganizationRole_ORGANIZATION_ROLE_UNSPECIFIED +} + +func (x *RoleRestrictionEntry) GetPermissions() []OrganizationPermission { + if x != nil { + return x.Permissions + } + return nil +} + type OrganizationSettings struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - WorkspaceSharingDisabled bool `protobuf:"varint,1,opt,name=workspace_sharing_disabled,json=workspaceSharingDisabled,proto3" json:"workspace_sharing_disabled,omitempty"` - DefaultWorkspaceImage string `protobuf:"bytes,2,opt,name=default_workspace_image,json=defaultWorkspaceImage,proto3" json:"default_workspace_image,omitempty"` - AllowedWorkspaceClasses []string `protobuf:"bytes,3,rep,name=allowed_workspace_classes,json=allowedWorkspaceClasses,proto3" json:"allowed_workspace_classes,omitempty"` - RestrictedEditorNames []string `protobuf:"bytes,4,rep,name=restricted_editor_names,json=restrictedEditorNames,proto3" json:"restricted_editor_names,omitempty"` - PinnedEditorVersions map[string]string `protobuf:"bytes,5,rep,name=pinned_editor_versions,json=pinnedEditorVersions,proto3" json:"pinned_editor_versions,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - DefaultRole string `protobuf:"bytes,6,opt,name=default_role,json=defaultRole,proto3" json:"default_role,omitempty"` - TimeoutSettings *TimeoutSettings `protobuf:"bytes,7,opt,name=timeout_settings,json=timeoutSettings,proto3" json:"timeout_settings,omitempty"` + WorkspaceSharingDisabled bool `protobuf:"varint,1,opt,name=workspace_sharing_disabled,json=workspaceSharingDisabled,proto3" json:"workspace_sharing_disabled,omitempty"` + DefaultWorkspaceImage string `protobuf:"bytes,2,opt,name=default_workspace_image,json=defaultWorkspaceImage,proto3" json:"default_workspace_image,omitempty"` + AllowedWorkspaceClasses []string `protobuf:"bytes,3,rep,name=allowed_workspace_classes,json=allowedWorkspaceClasses,proto3" json:"allowed_workspace_classes,omitempty"` + RestrictedEditorNames []string `protobuf:"bytes,4,rep,name=restricted_editor_names,json=restrictedEditorNames,proto3" json:"restricted_editor_names,omitempty"` + PinnedEditorVersions map[string]string `protobuf:"bytes,5,rep,name=pinned_editor_versions,json=pinnedEditorVersions,proto3" json:"pinned_editor_versions,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + DefaultRole string `protobuf:"bytes,6,opt,name=default_role,json=defaultRole,proto3" json:"default_role,omitempty"` + TimeoutSettings *TimeoutSettings `protobuf:"bytes,7,opt,name=timeout_settings,json=timeoutSettings,proto3" json:"timeout_settings,omitempty"` + RoleRestrictions []*RoleRestrictionEntry `protobuf:"bytes,8,rep,name=role_restrictions,json=roleRestrictions,proto3" json:"role_restrictions,omitempty"` } func (x *OrganizationSettings) Reset() { *x = OrganizationSettings{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_organization_proto_msgTypes[2] + mi := &file_gitpod_v1_organization_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -323,7 +428,7 @@ func (x *OrganizationSettings) String() string { func (*OrganizationSettings) ProtoMessage() {} func (x *OrganizationSettings) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_organization_proto_msgTypes[2] + mi := &file_gitpod_v1_organization_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -336,7 +441,7 @@ func (x *OrganizationSettings) ProtoReflect() protoreflect.Message { // Deprecated: Use OrganizationSettings.ProtoReflect.Descriptor instead. func (*OrganizationSettings) Descriptor() ([]byte, []int) { - return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{2} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{3} } func (x *OrganizationSettings) GetWorkspaceSharingDisabled() bool { @@ -388,6 +493,13 @@ func (x *OrganizationSettings) GetTimeoutSettings() *TimeoutSettings { return nil } +func (x *OrganizationSettings) GetRoleRestrictions() []*RoleRestrictionEntry { + if x != nil { + return x.RoleRestrictions + } + return nil +} + type ListOrganizationWorkspaceClassesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -401,7 +513,7 @@ type ListOrganizationWorkspaceClassesRequest struct { func (x *ListOrganizationWorkspaceClassesRequest) Reset() { *x = ListOrganizationWorkspaceClassesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_organization_proto_msgTypes[3] + mi := &file_gitpod_v1_organization_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -414,7 +526,7 @@ func (x *ListOrganizationWorkspaceClassesRequest) String() string { func (*ListOrganizationWorkspaceClassesRequest) ProtoMessage() {} func (x *ListOrganizationWorkspaceClassesRequest) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_organization_proto_msgTypes[3] + mi := &file_gitpod_v1_organization_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -427,7 +539,7 @@ func (x *ListOrganizationWorkspaceClassesRequest) ProtoReflect() protoreflect.Me // Deprecated: Use ListOrganizationWorkspaceClassesRequest.ProtoReflect.Descriptor instead. func (*ListOrganizationWorkspaceClassesRequest) Descriptor() ([]byte, []int) { - return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{3} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{4} } func (x *ListOrganizationWorkspaceClassesRequest) GetPagination() *PaginationRequest { @@ -456,7 +568,7 @@ type ListOrganizationWorkspaceClassesResponse struct { func (x *ListOrganizationWorkspaceClassesResponse) Reset() { *x = ListOrganizationWorkspaceClassesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_organization_proto_msgTypes[4] + mi := &file_gitpod_v1_organization_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -469,7 +581,7 @@ func (x *ListOrganizationWorkspaceClassesResponse) String() string { func (*ListOrganizationWorkspaceClassesResponse) ProtoMessage() {} func (x *ListOrganizationWorkspaceClassesResponse) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_organization_proto_msgTypes[4] + mi := &file_gitpod_v1_organization_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -482,7 +594,7 @@ func (x *ListOrganizationWorkspaceClassesResponse) ProtoReflect() protoreflect.M // Deprecated: Use ListOrganizationWorkspaceClassesResponse.ProtoReflect.Descriptor instead. func (*ListOrganizationWorkspaceClassesResponse) Descriptor() ([]byte, []int) { - return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{4} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{5} } func (x *ListOrganizationWorkspaceClassesResponse) GetPagination() *PaginationResponse { @@ -513,7 +625,7 @@ type UpdateOrganizationRequest struct { func (x *UpdateOrganizationRequest) Reset() { *x = UpdateOrganizationRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_organization_proto_msgTypes[5] + mi := &file_gitpod_v1_organization_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -526,7 +638,7 @@ func (x *UpdateOrganizationRequest) String() string { func (*UpdateOrganizationRequest) ProtoMessage() {} func (x *UpdateOrganizationRequest) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_organization_proto_msgTypes[5] + mi := &file_gitpod_v1_organization_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -539,7 +651,7 @@ func (x *UpdateOrganizationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateOrganizationRequest.ProtoReflect.Descriptor instead. func (*UpdateOrganizationRequest) Descriptor() ([]byte, []int) { - return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{5} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{6} } func (x *UpdateOrganizationRequest) GetOrganizationId() string { @@ -568,7 +680,7 @@ type UpdateOrganizationResponse struct { func (x *UpdateOrganizationResponse) Reset() { *x = UpdateOrganizationResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_organization_proto_msgTypes[6] + mi := &file_gitpod_v1_organization_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -581,7 +693,7 @@ func (x *UpdateOrganizationResponse) String() string { func (*UpdateOrganizationResponse) ProtoMessage() {} func (x *UpdateOrganizationResponse) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_organization_proto_msgTypes[6] + mi := &file_gitpod_v1_organization_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -594,7 +706,7 @@ func (x *UpdateOrganizationResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateOrganizationResponse.ProtoReflect.Descriptor instead. func (*UpdateOrganizationResponse) Descriptor() ([]byte, []int) { - return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{6} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{7} } func (x *UpdateOrganizationResponse) GetOrganization() *Organization { @@ -618,7 +730,7 @@ type TimeoutSettings struct { func (x *TimeoutSettings) Reset() { *x = TimeoutSettings{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_organization_proto_msgTypes[7] + mi := &file_gitpod_v1_organization_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -631,7 +743,7 @@ func (x *TimeoutSettings) String() string { func (*TimeoutSettings) ProtoMessage() {} func (x *TimeoutSettings) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_organization_proto_msgTypes[7] + mi := &file_gitpod_v1_organization_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -644,7 +756,7 @@ func (x *TimeoutSettings) ProtoReflect() protoreflect.Message { // Deprecated: Use TimeoutSettings.ProtoReflect.Descriptor instead. func (*TimeoutSettings) Descriptor() ([]byte, []int) { - return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{7} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{8} } func (x *TimeoutSettings) GetInactivity() *durationpb.Duration { @@ -690,13 +802,16 @@ type UpdateOrganizationSettingsRequest struct { // default_role is the default role for new members in the organization. DefaultRole *string `protobuf:"bytes,10,opt,name=default_role,json=defaultRole,proto3,oneof" json:"default_role,omitempty"` // timeout_settings are the settings for workspace timeouts - TimeoutSettings *TimeoutSettings `protobuf:"bytes,11,opt,name=timeout_settings,json=timeoutSettings,proto3,oneof" json:"timeout_settings,omitempty"` + TimeoutSettings *TimeoutSettings `protobuf:"bytes,11,opt,name=timeout_settings,json=timeoutSettings,proto3,oneof" json:"timeout_settings,omitempty"` + RoleRestrictions []*RoleRestrictionEntry `protobuf:"bytes,12,rep,name=role_restrictions,json=roleRestrictions,proto3" json:"role_restrictions,omitempty"` + // Specifies whether role_restrictions should be updated. + UpdateRoleRestrictions *bool `protobuf:"varint,13,opt,name=update_role_restrictions,json=updateRoleRestrictions,proto3,oneof" json:"update_role_restrictions,omitempty"` } func (x *UpdateOrganizationSettingsRequest) Reset() { *x = UpdateOrganizationSettingsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_organization_proto_msgTypes[8] + mi := &file_gitpod_v1_organization_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -709,7 +824,7 @@ func (x *UpdateOrganizationSettingsRequest) String() string { func (*UpdateOrganizationSettingsRequest) ProtoMessage() {} func (x *UpdateOrganizationSettingsRequest) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_organization_proto_msgTypes[8] + mi := &file_gitpod_v1_organization_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -722,7 +837,7 @@ func (x *UpdateOrganizationSettingsRequest) ProtoReflect() protoreflect.Message // Deprecated: Use UpdateOrganizationSettingsRequest.ProtoReflect.Descriptor instead. func (*UpdateOrganizationSettingsRequest) Descriptor() ([]byte, []int) { - return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{8} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{9} } func (x *UpdateOrganizationSettingsRequest) GetOrganizationId() string { @@ -795,6 +910,20 @@ func (x *UpdateOrganizationSettingsRequest) GetTimeoutSettings() *TimeoutSetting return nil } +func (x *UpdateOrganizationSettingsRequest) GetRoleRestrictions() []*RoleRestrictionEntry { + if x != nil { + return x.RoleRestrictions + } + return nil +} + +func (x *UpdateOrganizationSettingsRequest) GetUpdateRoleRestrictions() bool { + if x != nil && x.UpdateRoleRestrictions != nil { + return *x.UpdateRoleRestrictions + } + return false +} + type UpdateOrganizationSettingsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -807,7 +936,7 @@ type UpdateOrganizationSettingsResponse struct { func (x *UpdateOrganizationSettingsResponse) Reset() { *x = UpdateOrganizationSettingsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_organization_proto_msgTypes[9] + mi := &file_gitpod_v1_organization_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -820,7 +949,7 @@ func (x *UpdateOrganizationSettingsResponse) String() string { func (*UpdateOrganizationSettingsResponse) ProtoMessage() {} func (x *UpdateOrganizationSettingsResponse) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_organization_proto_msgTypes[9] + mi := &file_gitpod_v1_organization_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -833,7 +962,7 @@ func (x *UpdateOrganizationSettingsResponse) ProtoReflect() protoreflect.Message // Deprecated: Use UpdateOrganizationSettingsResponse.ProtoReflect.Descriptor instead. func (*UpdateOrganizationSettingsResponse) Descriptor() ([]byte, []int) { - return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{9} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{10} } func (x *UpdateOrganizationSettingsResponse) GetSettings() *OrganizationSettings { @@ -855,7 +984,7 @@ type GetOrganizationSettingsRequest struct { func (x *GetOrganizationSettingsRequest) Reset() { *x = GetOrganizationSettingsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_organization_proto_msgTypes[10] + mi := &file_gitpod_v1_organization_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -868,7 +997,7 @@ func (x *GetOrganizationSettingsRequest) String() string { func (*GetOrganizationSettingsRequest) ProtoMessage() {} func (x *GetOrganizationSettingsRequest) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_organization_proto_msgTypes[10] + mi := &file_gitpod_v1_organization_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -881,7 +1010,7 @@ func (x *GetOrganizationSettingsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOrganizationSettingsRequest.ProtoReflect.Descriptor instead. func (*GetOrganizationSettingsRequest) Descriptor() ([]byte, []int) { - return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{10} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{11} } func (x *GetOrganizationSettingsRequest) GetOrganizationId() string { @@ -903,7 +1032,7 @@ type GetOrganizationSettingsResponse struct { func (x *GetOrganizationSettingsResponse) Reset() { *x = GetOrganizationSettingsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_organization_proto_msgTypes[11] + mi := &file_gitpod_v1_organization_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -916,7 +1045,7 @@ func (x *GetOrganizationSettingsResponse) String() string { func (*GetOrganizationSettingsResponse) ProtoMessage() {} func (x *GetOrganizationSettingsResponse) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_organization_proto_msgTypes[11] + mi := &file_gitpod_v1_organization_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -929,7 +1058,7 @@ func (x *GetOrganizationSettingsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOrganizationSettingsResponse.ProtoReflect.Descriptor instead. func (*GetOrganizationSettingsResponse) Descriptor() ([]byte, []int) { - return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{11} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{12} } func (x *GetOrganizationSettingsResponse) GetSettings() *OrganizationSettings { @@ -951,7 +1080,7 @@ type CreateOrganizationRequest struct { func (x *CreateOrganizationRequest) Reset() { *x = CreateOrganizationRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_organization_proto_msgTypes[12] + mi := &file_gitpod_v1_organization_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -964,7 +1093,7 @@ func (x *CreateOrganizationRequest) String() string { func (*CreateOrganizationRequest) ProtoMessage() {} func (x *CreateOrganizationRequest) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_organization_proto_msgTypes[12] + mi := &file_gitpod_v1_organization_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -977,7 +1106,7 @@ func (x *CreateOrganizationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateOrganizationRequest.ProtoReflect.Descriptor instead. func (*CreateOrganizationRequest) Descriptor() ([]byte, []int) { - return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{12} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{13} } func (x *CreateOrganizationRequest) GetName() string { @@ -999,7 +1128,7 @@ type CreateOrganizationResponse struct { func (x *CreateOrganizationResponse) Reset() { *x = CreateOrganizationResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_organization_proto_msgTypes[13] + mi := &file_gitpod_v1_organization_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1012,7 +1141,7 @@ func (x *CreateOrganizationResponse) String() string { func (*CreateOrganizationResponse) ProtoMessage() {} func (x *CreateOrganizationResponse) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_organization_proto_msgTypes[13] + mi := &file_gitpod_v1_organization_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1025,7 +1154,7 @@ func (x *CreateOrganizationResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateOrganizationResponse.ProtoReflect.Descriptor instead. func (*CreateOrganizationResponse) Descriptor() ([]byte, []int) { - return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{13} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{14} } func (x *CreateOrganizationResponse) GetOrganization() *Organization { @@ -1047,7 +1176,7 @@ type GetOrganizationRequest struct { func (x *GetOrganizationRequest) Reset() { *x = GetOrganizationRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_organization_proto_msgTypes[14] + mi := &file_gitpod_v1_organization_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1060,7 +1189,7 @@ func (x *GetOrganizationRequest) String() string { func (*GetOrganizationRequest) ProtoMessage() {} func (x *GetOrganizationRequest) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_organization_proto_msgTypes[14] + mi := &file_gitpod_v1_organization_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1073,7 +1202,7 @@ func (x *GetOrganizationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOrganizationRequest.ProtoReflect.Descriptor instead. func (*GetOrganizationRequest) Descriptor() ([]byte, []int) { - return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{14} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{15} } func (x *GetOrganizationRequest) GetOrganizationId() string { @@ -1095,7 +1224,7 @@ type GetOrganizationResponse struct { func (x *GetOrganizationResponse) Reset() { *x = GetOrganizationResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_organization_proto_msgTypes[15] + mi := &file_gitpod_v1_organization_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1108,7 +1237,7 @@ func (x *GetOrganizationResponse) String() string { func (*GetOrganizationResponse) ProtoMessage() {} func (x *GetOrganizationResponse) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_organization_proto_msgTypes[15] + mi := &file_gitpod_v1_organization_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1121,7 +1250,7 @@ func (x *GetOrganizationResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOrganizationResponse.ProtoReflect.Descriptor instead. func (*GetOrganizationResponse) Descriptor() ([]byte, []int) { - return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{15} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{16} } func (x *GetOrganizationResponse) GetOrganization() *Organization { @@ -1145,7 +1274,7 @@ type ListOrganizationsRequest struct { func (x *ListOrganizationsRequest) Reset() { *x = ListOrganizationsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_organization_proto_msgTypes[16] + mi := &file_gitpod_v1_organization_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1158,7 +1287,7 @@ func (x *ListOrganizationsRequest) String() string { func (*ListOrganizationsRequest) ProtoMessage() {} func (x *ListOrganizationsRequest) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_organization_proto_msgTypes[16] + mi := &file_gitpod_v1_organization_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1171,7 +1300,7 @@ func (x *ListOrganizationsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListOrganizationsRequest.ProtoReflect.Descriptor instead. func (*ListOrganizationsRequest) Descriptor() ([]byte, []int) { - return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{16} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{17} } func (x *ListOrganizationsRequest) GetPagination() *PaginationRequest { @@ -1202,7 +1331,7 @@ type ListOrganizationsResponse struct { func (x *ListOrganizationsResponse) Reset() { *x = ListOrganizationsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_organization_proto_msgTypes[17] + mi := &file_gitpod_v1_organization_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1215,7 +1344,7 @@ func (x *ListOrganizationsResponse) String() string { func (*ListOrganizationsResponse) ProtoMessage() {} func (x *ListOrganizationsResponse) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_organization_proto_msgTypes[17] + mi := &file_gitpod_v1_organization_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1228,7 +1357,7 @@ func (x *ListOrganizationsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListOrganizationsResponse.ProtoReflect.Descriptor instead. func (*ListOrganizationsResponse) Descriptor() ([]byte, []int) { - return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{17} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{18} } func (x *ListOrganizationsResponse) GetOrganizations() []*Organization { @@ -1257,7 +1386,7 @@ type DeleteOrganizationRequest struct { func (x *DeleteOrganizationRequest) Reset() { *x = DeleteOrganizationRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_organization_proto_msgTypes[18] + mi := &file_gitpod_v1_organization_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1270,7 +1399,7 @@ func (x *DeleteOrganizationRequest) String() string { func (*DeleteOrganizationRequest) ProtoMessage() {} func (x *DeleteOrganizationRequest) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_organization_proto_msgTypes[18] + mi := &file_gitpod_v1_organization_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1283,7 +1412,7 @@ func (x *DeleteOrganizationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteOrganizationRequest.ProtoReflect.Descriptor instead. func (*DeleteOrganizationRequest) Descriptor() ([]byte, []int) { - return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{18} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{19} } func (x *DeleteOrganizationRequest) GetOrganizationId() string { @@ -1302,7 +1431,7 @@ type DeleteOrganizationResponse struct { func (x *DeleteOrganizationResponse) Reset() { *x = DeleteOrganizationResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_organization_proto_msgTypes[19] + mi := &file_gitpod_v1_organization_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1315,7 +1444,7 @@ func (x *DeleteOrganizationResponse) String() string { func (*DeleteOrganizationResponse) ProtoMessage() {} func (x *DeleteOrganizationResponse) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_organization_proto_msgTypes[19] + mi := &file_gitpod_v1_organization_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1328,7 +1457,7 @@ func (x *DeleteOrganizationResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteOrganizationResponse.ProtoReflect.Descriptor instead. func (*DeleteOrganizationResponse) Descriptor() ([]byte, []int) { - return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{19} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{20} } type GetOrganizationInvitationRequest struct { @@ -1343,7 +1472,7 @@ type GetOrganizationInvitationRequest struct { func (x *GetOrganizationInvitationRequest) Reset() { *x = GetOrganizationInvitationRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_organization_proto_msgTypes[20] + mi := &file_gitpod_v1_organization_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1356,7 +1485,7 @@ func (x *GetOrganizationInvitationRequest) String() string { func (*GetOrganizationInvitationRequest) ProtoMessage() {} func (x *GetOrganizationInvitationRequest) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_organization_proto_msgTypes[20] + mi := &file_gitpod_v1_organization_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1369,7 +1498,7 @@ func (x *GetOrganizationInvitationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOrganizationInvitationRequest.ProtoReflect.Descriptor instead. func (*GetOrganizationInvitationRequest) Descriptor() ([]byte, []int) { - return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{20} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{21} } func (x *GetOrganizationInvitationRequest) GetOrganizationId() string { @@ -1391,7 +1520,7 @@ type GetOrganizationInvitationResponse struct { func (x *GetOrganizationInvitationResponse) Reset() { *x = GetOrganizationInvitationResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_organization_proto_msgTypes[21] + mi := &file_gitpod_v1_organization_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1404,7 +1533,7 @@ func (x *GetOrganizationInvitationResponse) String() string { func (*GetOrganizationInvitationResponse) ProtoMessage() {} func (x *GetOrganizationInvitationResponse) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_organization_proto_msgTypes[21] + mi := &file_gitpod_v1_organization_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1417,7 +1546,7 @@ func (x *GetOrganizationInvitationResponse) ProtoReflect() protoreflect.Message // Deprecated: Use GetOrganizationInvitationResponse.ProtoReflect.Descriptor instead. func (*GetOrganizationInvitationResponse) Descriptor() ([]byte, []int) { - return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{21} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{22} } func (x *GetOrganizationInvitationResponse) GetInvitationId() string { @@ -1439,7 +1568,7 @@ type JoinOrganizationRequest struct { func (x *JoinOrganizationRequest) Reset() { *x = JoinOrganizationRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_organization_proto_msgTypes[22] + mi := &file_gitpod_v1_organization_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1452,7 +1581,7 @@ func (x *JoinOrganizationRequest) String() string { func (*JoinOrganizationRequest) ProtoMessage() {} func (x *JoinOrganizationRequest) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_organization_proto_msgTypes[22] + mi := &file_gitpod_v1_organization_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1465,7 +1594,7 @@ func (x *JoinOrganizationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use JoinOrganizationRequest.ProtoReflect.Descriptor instead. func (*JoinOrganizationRequest) Descriptor() ([]byte, []int) { - return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{22} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{23} } func (x *JoinOrganizationRequest) GetInvitationId() string { @@ -1487,7 +1616,7 @@ type JoinOrganizationResponse struct { func (x *JoinOrganizationResponse) Reset() { *x = JoinOrganizationResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_organization_proto_msgTypes[23] + mi := &file_gitpod_v1_organization_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1500,7 +1629,7 @@ func (x *JoinOrganizationResponse) String() string { func (*JoinOrganizationResponse) ProtoMessage() {} func (x *JoinOrganizationResponse) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_organization_proto_msgTypes[23] + mi := &file_gitpod_v1_organization_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1513,7 +1642,7 @@ func (x *JoinOrganizationResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use JoinOrganizationResponse.ProtoReflect.Descriptor instead. func (*JoinOrganizationResponse) Descriptor() ([]byte, []int) { - return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{23} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{24} } func (x *JoinOrganizationResponse) GetOrganizationId() string { @@ -1535,7 +1664,7 @@ type ResetOrganizationInvitationRequest struct { func (x *ResetOrganizationInvitationRequest) Reset() { *x = ResetOrganizationInvitationRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_organization_proto_msgTypes[24] + mi := &file_gitpod_v1_organization_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1548,7 +1677,7 @@ func (x *ResetOrganizationInvitationRequest) String() string { func (*ResetOrganizationInvitationRequest) ProtoMessage() {} func (x *ResetOrganizationInvitationRequest) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_organization_proto_msgTypes[24] + mi := &file_gitpod_v1_organization_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1561,7 +1690,7 @@ func (x *ResetOrganizationInvitationRequest) ProtoReflect() protoreflect.Message // Deprecated: Use ResetOrganizationInvitationRequest.ProtoReflect.Descriptor instead. func (*ResetOrganizationInvitationRequest) Descriptor() ([]byte, []int) { - return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{24} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{25} } func (x *ResetOrganizationInvitationRequest) GetOrganizationId() string { @@ -1583,7 +1712,7 @@ type ResetOrganizationInvitationResponse struct { func (x *ResetOrganizationInvitationResponse) Reset() { *x = ResetOrganizationInvitationResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_organization_proto_msgTypes[25] + mi := &file_gitpod_v1_organization_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1596,7 +1725,7 @@ func (x *ResetOrganizationInvitationResponse) String() string { func (*ResetOrganizationInvitationResponse) ProtoMessage() {} func (x *ResetOrganizationInvitationResponse) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_organization_proto_msgTypes[25] + mi := &file_gitpod_v1_organization_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1609,7 +1738,7 @@ func (x *ResetOrganizationInvitationResponse) ProtoReflect() protoreflect.Messag // Deprecated: Use ResetOrganizationInvitationResponse.ProtoReflect.Descriptor instead. func (*ResetOrganizationInvitationResponse) Descriptor() ([]byte, []int) { - return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{25} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{26} } func (x *ResetOrganizationInvitationResponse) GetInvitationId() string { @@ -1633,7 +1762,7 @@ type ListOrganizationMembersRequest struct { func (x *ListOrganizationMembersRequest) Reset() { *x = ListOrganizationMembersRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_organization_proto_msgTypes[26] + mi := &file_gitpod_v1_organization_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1646,7 +1775,7 @@ func (x *ListOrganizationMembersRequest) String() string { func (*ListOrganizationMembersRequest) ProtoMessage() {} func (x *ListOrganizationMembersRequest) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_organization_proto_msgTypes[26] + mi := &file_gitpod_v1_organization_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1659,7 +1788,7 @@ func (x *ListOrganizationMembersRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListOrganizationMembersRequest.ProtoReflect.Descriptor instead. func (*ListOrganizationMembersRequest) Descriptor() ([]byte, []int) { - return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{26} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{27} } func (x *ListOrganizationMembersRequest) GetOrganizationId() string { @@ -1689,7 +1818,7 @@ type ListOrganizationMembersResponse struct { func (x *ListOrganizationMembersResponse) Reset() { *x = ListOrganizationMembersResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_organization_proto_msgTypes[27] + mi := &file_gitpod_v1_organization_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1702,7 +1831,7 @@ func (x *ListOrganizationMembersResponse) String() string { func (*ListOrganizationMembersResponse) ProtoMessage() {} func (x *ListOrganizationMembersResponse) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_organization_proto_msgTypes[27] + mi := &file_gitpod_v1_organization_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1715,7 +1844,7 @@ func (x *ListOrganizationMembersResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListOrganizationMembersResponse.ProtoReflect.Descriptor instead. func (*ListOrganizationMembersResponse) Descriptor() ([]byte, []int) { - return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{27} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{28} } func (x *ListOrganizationMembersResponse) GetMembers() []*OrganizationMember { @@ -1749,7 +1878,7 @@ type UpdateOrganizationMemberRequest struct { func (x *UpdateOrganizationMemberRequest) Reset() { *x = UpdateOrganizationMemberRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_organization_proto_msgTypes[28] + mi := &file_gitpod_v1_organization_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1762,7 +1891,7 @@ func (x *UpdateOrganizationMemberRequest) String() string { func (*UpdateOrganizationMemberRequest) ProtoMessage() {} func (x *UpdateOrganizationMemberRequest) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_organization_proto_msgTypes[28] + mi := &file_gitpod_v1_organization_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1775,7 +1904,7 @@ func (x *UpdateOrganizationMemberRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateOrganizationMemberRequest.ProtoReflect.Descriptor instead. func (*UpdateOrganizationMemberRequest) Descriptor() ([]byte, []int) { - return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{28} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{29} } func (x *UpdateOrganizationMemberRequest) GetOrganizationId() string { @@ -1811,7 +1940,7 @@ type UpdateOrganizationMemberResponse struct { func (x *UpdateOrganizationMemberResponse) Reset() { *x = UpdateOrganizationMemberResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_organization_proto_msgTypes[29] + mi := &file_gitpod_v1_organization_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1824,7 +1953,7 @@ func (x *UpdateOrganizationMemberResponse) String() string { func (*UpdateOrganizationMemberResponse) ProtoMessage() {} func (x *UpdateOrganizationMemberResponse) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_organization_proto_msgTypes[29] + mi := &file_gitpod_v1_organization_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1837,7 +1966,7 @@ func (x *UpdateOrganizationMemberResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateOrganizationMemberResponse.ProtoReflect.Descriptor instead. func (*UpdateOrganizationMemberResponse) Descriptor() ([]byte, []int) { - return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{29} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{30} } func (x *UpdateOrganizationMemberResponse) GetMember() *OrganizationMember { @@ -1862,7 +1991,7 @@ type DeleteOrganizationMemberRequest struct { func (x *DeleteOrganizationMemberRequest) Reset() { *x = DeleteOrganizationMemberRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_organization_proto_msgTypes[30] + mi := &file_gitpod_v1_organization_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1875,7 +2004,7 @@ func (x *DeleteOrganizationMemberRequest) String() string { func (*DeleteOrganizationMemberRequest) ProtoMessage() {} func (x *DeleteOrganizationMemberRequest) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_organization_proto_msgTypes[30] + mi := &file_gitpod_v1_organization_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1888,7 +2017,7 @@ func (x *DeleteOrganizationMemberRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteOrganizationMemberRequest.ProtoReflect.Descriptor instead. func (*DeleteOrganizationMemberRequest) Descriptor() ([]byte, []int) { - return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{30} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{31} } func (x *DeleteOrganizationMemberRequest) GetOrganizationId() string { @@ -1914,7 +2043,7 @@ type DeleteOrganizationMemberResponse struct { func (x *DeleteOrganizationMemberResponse) Reset() { *x = DeleteOrganizationMemberResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_v1_organization_proto_msgTypes[31] + mi := &file_gitpod_v1_organization_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1927,7 +2056,7 @@ func (x *DeleteOrganizationMemberResponse) String() string { func (*DeleteOrganizationMemberResponse) ProtoMessage() {} func (x *DeleteOrganizationMemberResponse) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_v1_organization_proto_msgTypes[31] + mi := &file_gitpod_v1_organization_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1940,7 +2069,7 @@ func (x *DeleteOrganizationMemberResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteOrganizationMemberResponse.ProtoReflect.Descriptor instead. func (*DeleteOrganizationMemberResponse) Descriptor() ([]byte, []int) { - return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{31} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{32} } var File_gitpod_v1_organization_proto protoreflect.FileDescriptor @@ -1983,394 +2112,426 @@ var file_gitpod_v1_organization_proto_rawDesc = []byte{ 0x15, 0x6f, 0x77, 0x6e, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x6f, 0x77, 0x6e, 0x65, 0x64, 0x42, 0x79, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x22, 0xa4, 0x04, 0x0a, 0x14, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3c, 0x0a, 0x1a, 0x77, 0x6f, - 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x5f, - 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, - 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, - 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x17, 0x64, 0x65, 0x66, 0x61, - 0x75, 0x6c, 0x74, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x6d, - 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x64, 0x65, 0x66, 0x61, 0x75, - 0x6c, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, - 0x12, 0x3a, 0x0a, 0x19, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x77, 0x6f, 0x72, 0x6b, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x17, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x17, - 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, - 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x72, - 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x4e, - 0x61, 0x6d, 0x65, 0x73, 0x12, 0x6f, 0x0a, 0x16, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x65, - 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, - 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x45, 0x64, 0x69, 0x74, - 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x14, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x45, 0x0a, 0x10, 0x74, 0x69, 0x6d, 0x65, - 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x0f, - 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x1a, - 0x47, 0x0a, 0x19, 0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x90, 0x01, 0x0a, 0x27, 0x4c, 0x69, 0x73, - 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x6f, 0x72, - 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, - 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xb1, 0x01, 0x0a, 0x28, - 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, - 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x46, 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, - 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x10, 0x77, - 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x22, - 0x66, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, - 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x07, - 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x59, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x69, - 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x22, 0xaa, 0x01, 0x0a, 0x0f, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3e, 0x0a, 0x0a, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, - 0x76, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, - 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x12, 0x64, 0x65, 0x6e, 0x79, 0x5f, 0x75, - 0x73, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x08, 0x48, 0x01, 0x52, 0x10, 0x64, 0x65, 0x6e, 0x79, 0x55, 0x73, 0x65, 0x72, 0x54, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x73, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x69, 0x6e, - 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x64, 0x65, 0x6e, - 0x79, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x73, 0x22, - 0xb3, 0x07, 0x0a, 0x21, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, - 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x41, - 0x0a, 0x1a, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, - 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x08, 0x48, 0x00, 0x52, 0x18, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, - 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x88, 0x01, - 0x01, 0x12, 0x3b, 0x0a, 0x17, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x77, 0x6f, 0x72, - 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x01, 0x52, 0x15, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x57, 0x6f, 0x72, - 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, - 0x0a, 0x19, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x17, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x72, 0x65, - 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x72, 0x65, 0x73, - 0x74, 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, - 0x65, 0x73, 0x12, 0x48, 0x0a, 0x1e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x73, - 0x74, 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x1b, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, 0x45, 0x64, - 0x69, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x7c, 0x0a, 0x16, - 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x67, - 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x69, 0x6e, 0x6e, 0x65, - 0x64, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x14, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x45, 0x64, 0x69, 0x74, - 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x46, 0x0a, 0x1d, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x65, 0x64, 0x69, 0x74, - 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x08, 0x48, 0x03, 0x52, 0x1a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x69, 0x6e, 0x6e, 0x65, - 0x64, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x88, - 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x72, 0x6f, - 0x6c, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x0b, 0x64, 0x65, 0x66, 0x61, - 0x75, 0x6c, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x10, 0x74, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, - 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x48, 0x05, 0x52, 0x0f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x88, 0x01, 0x01, 0x1a, 0x47, 0x0a, 0x19, 0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64, - 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, - 0x1d, 0x0a, 0x1b, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x68, - 0x61, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x42, 0x1a, - 0x0a, 0x18, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, - 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x42, 0x20, 0x0a, - 0x1e, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x5f, - 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, - 0x0f, 0x0a, 0x0d, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x72, 0x6f, 0x6c, 0x65, - 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x61, 0x0a, 0x22, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x08, 0x73, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, - 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x08, - 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x49, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x22, 0x5e, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, + 0x6e, 0x22, 0x8c, 0x01, 0x0a, 0x14, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x2f, 0x0a, 0x04, 0x72, 0x6f, + 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x22, 0x2f, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x59, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, + 0x6e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x43, 0x0a, 0x0b, 0x70, + 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, + 0x32, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x22, 0xf2, 0x04, 0x0a, 0x14, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3c, 0x0a, 0x1a, 0x77, 0x6f, 0x72, + 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x64, + 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x77, + 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x44, + 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x17, 0x64, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61, + 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, + 0x3a, 0x0a, 0x19, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x17, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x72, + 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x72, 0x65, + 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x4e, 0x61, + 0x6d, 0x65, 0x73, 0x12, 0x6f, 0x0a, 0x16, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x65, 0x64, + 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, + 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x45, 0x64, 0x69, 0x74, 0x6f, + 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x14, + 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, + 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x45, 0x0a, 0x10, 0x74, 0x69, 0x6d, 0x65, 0x6f, + 0x75, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x0f, 0x74, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x4c, + 0x0a, 0x11, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x70, + 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x72, 0x6f, 0x6c, 0x65, + 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x47, 0x0a, 0x19, + 0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x90, 0x01, 0x0a, 0x27, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x3c, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, + 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xb1, 0x01, 0x0a, 0x28, 0x4c, 0x69, 0x73, + 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x6f, 0x72, + 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, + 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x46, 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x10, 0x77, 0x6f, 0x72, 0x6b, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x22, 0x66, 0x0a, 0x19, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x59, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, - 0x41, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x64, 0x22, 0x56, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, - 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, - 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x6f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xda, 0x01, 0x0a, 0x18, 0x4c, - 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, - 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, - 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x22, 0x3f, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, - 0x15, 0x0a, 0x11, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, - 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x43, 0x4f, 0x50, - 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x02, 0x22, 0x99, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, - 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, - 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, - 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x22, 0x44, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, + 0xaa, 0x01, 0x0a, 0x0f, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x12, 0x3e, 0x0a, 0x0a, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, + 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x12, 0x64, 0x65, 0x6e, 0x79, 0x5f, 0x75, 0x73, 0x65, 0x72, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, + 0x01, 0x52, 0x10, 0x64, 0x65, 0x6e, 0x79, 0x55, 0x73, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x6f, + 0x75, 0x74, 0x73, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x69, 0x6e, 0x61, 0x63, 0x74, + 0x69, 0x76, 0x69, 0x74, 0x79, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x64, 0x65, 0x6e, 0x79, 0x5f, 0x75, + 0x73, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x73, 0x22, 0xdd, 0x08, 0x0a, + 0x21, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x41, 0x0a, 0x1a, 0x77, + 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, + 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, + 0x00, 0x52, 0x18, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x68, 0x61, 0x72, + 0x69, 0x6e, 0x67, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3b, + 0x0a, 0x17, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x01, 0x52, 0x15, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x19, 0x61, + 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x17, + 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x72, 0x65, 0x73, 0x74, 0x72, + 0x69, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, + 0x63, 0x74, 0x65, 0x64, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, + 0x48, 0x0a, 0x1e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, + 0x63, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x1b, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, 0x45, 0x64, 0x69, 0x74, 0x6f, + 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x7c, 0x0a, 0x16, 0x70, 0x69, 0x6e, + 0x6e, 0x65, 0x64, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x67, 0x69, 0x74, 0x70, + 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x45, 0x64, + 0x69, 0x74, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x14, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x46, 0x0a, 0x1d, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x5f, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x5f, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, + 0x52, 0x1a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x45, 0x64, + 0x69, 0x74, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x88, 0x01, 0x01, 0x12, + 0x26, 0x0a, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x0b, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x52, 0x6f, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x10, 0x74, 0x69, 0x6d, 0x65, 0x6f, + 0x75, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x48, 0x05, 0x52, + 0x0f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x88, 0x01, 0x01, 0x12, 0x4c, 0x0a, 0x11, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x74, + 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, + 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, + 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x10, 0x72, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x3d, 0x0a, 0x18, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6c, 0x65, + 0x5f, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x08, 0x48, 0x06, 0x52, 0x16, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, + 0x65, 0x52, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x88, 0x01, 0x01, + 0x1a, 0x47, 0x0a, 0x19, 0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x77, 0x6f, + 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x69, 0x6e, 0x67, 0x5f, + 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x64, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, + 0x6d, 0x61, 0x67, 0x65, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, + 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, + 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x5f, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, + 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x64, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, + 0x1b, 0x0a, 0x19, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x5f, + 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x61, 0x0a, 0x22, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, + 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, + 0x49, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x5e, 0x0a, 0x1f, 0x47, 0x65, + 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, + 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x52, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x2f, 0x0a, 0x19, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x59, 0x0a, 0x1a, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0c, 0x6f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x41, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x1c, 0x0a, 0x1a, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4b, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x4f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x48, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x76, - 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x3e, - 0x0a, 0x17, 0x4a, 0x6f, 0x69, 0x6e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x76, - 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x43, - 0x0a, 0x18, 0x4a, 0x6f, 0x69, 0x6e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x22, 0x4d, 0x0a, 0x22, 0x52, 0x65, 0x73, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x64, 0x22, 0x4a, 0x0a, 0x23, 0x52, 0x65, 0x73, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x76, - 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x87, - 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x3c, 0x0a, 0x0a, 0x70, 0x61, - 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, - 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x99, 0x01, 0x0a, 0x1f, 0x4c, 0x69, 0x73, - 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x07, - 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, - 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x3d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, - 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa2, 0x01, 0x0a, 0x1f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x04, 0x72, 0x6f, - 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, - 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x6f, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x88, 0x01, 0x01, - 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x59, 0x0a, 0x20, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, - 0x06, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, - 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x06, 0x6d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x22, 0x63, 0x0a, 0x1f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x56, 0x0a, 0x17, 0x47, 0x65, 0x74, + 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x69, 0x74, + 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0xda, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, + 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, + 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x05, + 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x67, 0x69, + 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x2e, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x22, 0x3f, 0x0a, + 0x05, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, + 0x0c, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x10, 0x01, 0x12, + 0x0d, 0x0a, 0x09, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x02, 0x22, 0x99, + 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0d, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, + 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3d, 0x0a, 0x0a, 0x70, + 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, + 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x44, 0x0a, 0x19, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x22, 0x0a, 0x20, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2a, 0x94, 0x01, - 0x0a, 0x10, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, - 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x1d, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, - 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4f, 0x57, 0x4e, 0x45, 0x52, - 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x10, 0x02, - 0x12, 0x22, 0x0a, 0x1e, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x43, 0x4f, 0x4c, 0x4c, 0x41, 0x42, 0x4f, 0x52, 0x41, 0x54, - 0x4f, 0x52, 0x10, 0x03, 0x32, 0xbe, 0x0c, 0x0a, 0x13, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x63, 0x0a, 0x12, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x24, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, - 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x5a, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x63, 0x0a, - 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x69, 0x74, 0x70, - 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x60, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x23, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, - 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x67, - 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x63, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x2e, 0x67, 0x69, 0x74, - 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, + 0x22, 0x1c, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4b, + 0x0a, 0x20, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x48, 0x0a, 0x21, 0x47, + 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, + 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x3e, 0x0a, 0x17, 0x4a, 0x6f, 0x69, 0x6e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x25, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x78, 0x0a, 0x19, 0x47, 0x65, 0x74, - 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x5d, 0x0a, 0x10, 0x4a, 0x6f, 0x69, 0x6e, 0x4f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, - 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x69, - 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x4f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x7e, 0x0a, 0x1b, 0x52, 0x65, 0x73, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, + 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x43, 0x0a, 0x18, 0x4a, 0x6f, 0x69, 0x6e, 0x4f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x4d, 0x0a, 0x22, 0x52, 0x65, 0x73, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2e, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, + 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x4a, 0x0a, 0x23, 0x52, 0x65, 0x73, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x72, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x29, 0x2e, - 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, + 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x87, 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, - 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x12, 0x2a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, - 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, - 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2a, 0x2e, 0x67, 0x69, 0x74, 0x70, - 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, - 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, - 0x29, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x67, 0x69, 0x74, - 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x2c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x12, 0x3c, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, + 0x31, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, + 0x99, 0x01, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, + 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x3d, 0x0a, 0x0a, + 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, + 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa2, 0x01, 0x0a, 0x1f, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, + 0x64, 0x12, 0x34, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x1b, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x04, + 0x72, 0x6f, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x72, 0x6f, 0x6c, 0x65, + 0x22, 0x59, 0x0a, 0x20, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, + 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x52, 0x06, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x63, 0x0a, 0x1f, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, + 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, + 0x22, 0x22, 0x0a, 0x20, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x2a, 0x94, 0x01, 0x0a, 0x10, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x1d, 0x4f, 0x52, 0x47, + 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, + 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x4f, 0x4c, + 0x45, 0x5f, 0x4f, 0x57, 0x4e, 0x45, 0x52, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x4f, 0x52, 0x47, + 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x4d, + 0x45, 0x4d, 0x42, 0x45, 0x52, 0x10, 0x02, 0x12, 0x22, 0x0a, 0x1e, 0x4f, 0x52, 0x47, 0x41, 0x4e, + 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x43, 0x4f, 0x4c, + 0x4c, 0x41, 0x42, 0x4f, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x10, 0x03, 0x2a, 0x74, 0x0a, 0x16, 0x4f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x23, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x31, + 0x0a, 0x2d, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, + 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, + 0x41, 0x52, 0x42, 0x49, 0x54, 0x52, 0x41, 0x52, 0x59, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x53, 0x10, + 0x01, 0x32, 0xbe, 0x0c, 0x0a, 0x13, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x63, 0x0a, 0x12, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x24, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5a, + 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x63, 0x0a, 0x12, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x24, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x8d, 0x01, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x12, 0x32, 0x2e, 0x67, 0x69, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x60, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x23, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x67, 0x69, 0x74, 0x70, + 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x63, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, + 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, + 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x78, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x2c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x5d, 0x0a, 0x10, 0x4a, 0x6f, 0x69, 0x6e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, + 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, + 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x7e, 0x0a, 0x1b, 0x52, 0x65, 0x73, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, + 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, + 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, + 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x4f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x69, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x72, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x29, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, + 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, + 0x2a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x67, 0x69, + 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x18, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, + 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x72, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x29, 0x2e, 0x67, + 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, + 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x12, 0x2c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x8d, 0x01, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, - 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x51, 0x0a, 0x16, 0x69, 0x6f, 0x2e, 0x67, 0x69, 0x74, 0x70, - 0x6f, 0x64, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x5a, - 0x37, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x69, 0x74, 0x70, - 0x6f, 0x64, 0x2d, 0x69, 0x6f, 0x2f, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2f, 0x63, 0x6f, 0x6d, - 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2d, 0x61, - 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x12, 0x32, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, + 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, + 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x69, + 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x42, 0x51, 0x0a, 0x16, 0x69, 0x6f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, + 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x5a, 0x37, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2d, + 0x69, 0x6f, 0x2f, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, + 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2d, 0x61, 0x70, 0x69, 0x2f, + 0x67, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2385,110 +2546,116 @@ func file_gitpod_v1_organization_proto_rawDescGZIP() []byte { return file_gitpod_v1_organization_proto_rawDescData } -var file_gitpod_v1_organization_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_gitpod_v1_organization_proto_msgTypes = make([]protoimpl.MessageInfo, 34) +var file_gitpod_v1_organization_proto_enumTypes = make([]protoimpl.EnumInfo, 3) +var file_gitpod_v1_organization_proto_msgTypes = make([]protoimpl.MessageInfo, 35) var file_gitpod_v1_organization_proto_goTypes = []interface{}{ (OrganizationRole)(0), // 0: gitpod.v1.OrganizationRole - (ListOrganizationsRequest_Scope)(0), // 1: gitpod.v1.ListOrganizationsRequest.Scope - (*Organization)(nil), // 2: gitpod.v1.Organization - (*OrganizationMember)(nil), // 3: gitpod.v1.OrganizationMember - (*OrganizationSettings)(nil), // 4: gitpod.v1.OrganizationSettings - (*ListOrganizationWorkspaceClassesRequest)(nil), // 5: gitpod.v1.ListOrganizationWorkspaceClassesRequest - (*ListOrganizationWorkspaceClassesResponse)(nil), // 6: gitpod.v1.ListOrganizationWorkspaceClassesResponse - (*UpdateOrganizationRequest)(nil), // 7: gitpod.v1.UpdateOrganizationRequest - (*UpdateOrganizationResponse)(nil), // 8: gitpod.v1.UpdateOrganizationResponse - (*TimeoutSettings)(nil), // 9: gitpod.v1.TimeoutSettings - (*UpdateOrganizationSettingsRequest)(nil), // 10: gitpod.v1.UpdateOrganizationSettingsRequest - (*UpdateOrganizationSettingsResponse)(nil), // 11: gitpod.v1.UpdateOrganizationSettingsResponse - (*GetOrganizationSettingsRequest)(nil), // 12: gitpod.v1.GetOrganizationSettingsRequest - (*GetOrganizationSettingsResponse)(nil), // 13: gitpod.v1.GetOrganizationSettingsResponse - (*CreateOrganizationRequest)(nil), // 14: gitpod.v1.CreateOrganizationRequest - (*CreateOrganizationResponse)(nil), // 15: gitpod.v1.CreateOrganizationResponse - (*GetOrganizationRequest)(nil), // 16: gitpod.v1.GetOrganizationRequest - (*GetOrganizationResponse)(nil), // 17: gitpod.v1.GetOrganizationResponse - (*ListOrganizationsRequest)(nil), // 18: gitpod.v1.ListOrganizationsRequest - (*ListOrganizationsResponse)(nil), // 19: gitpod.v1.ListOrganizationsResponse - (*DeleteOrganizationRequest)(nil), // 20: gitpod.v1.DeleteOrganizationRequest - (*DeleteOrganizationResponse)(nil), // 21: gitpod.v1.DeleteOrganizationResponse - (*GetOrganizationInvitationRequest)(nil), // 22: gitpod.v1.GetOrganizationInvitationRequest - (*GetOrganizationInvitationResponse)(nil), // 23: gitpod.v1.GetOrganizationInvitationResponse - (*JoinOrganizationRequest)(nil), // 24: gitpod.v1.JoinOrganizationRequest - (*JoinOrganizationResponse)(nil), // 25: gitpod.v1.JoinOrganizationResponse - (*ResetOrganizationInvitationRequest)(nil), // 26: gitpod.v1.ResetOrganizationInvitationRequest - (*ResetOrganizationInvitationResponse)(nil), // 27: gitpod.v1.ResetOrganizationInvitationResponse - (*ListOrganizationMembersRequest)(nil), // 28: gitpod.v1.ListOrganizationMembersRequest - (*ListOrganizationMembersResponse)(nil), // 29: gitpod.v1.ListOrganizationMembersResponse - (*UpdateOrganizationMemberRequest)(nil), // 30: gitpod.v1.UpdateOrganizationMemberRequest - (*UpdateOrganizationMemberResponse)(nil), // 31: gitpod.v1.UpdateOrganizationMemberResponse - (*DeleteOrganizationMemberRequest)(nil), // 32: gitpod.v1.DeleteOrganizationMemberRequest - (*DeleteOrganizationMemberResponse)(nil), // 33: gitpod.v1.DeleteOrganizationMemberResponse - nil, // 34: gitpod.v1.OrganizationSettings.PinnedEditorVersionsEntry - nil, // 35: gitpod.v1.UpdateOrganizationSettingsRequest.PinnedEditorVersionsEntry - (*timestamppb.Timestamp)(nil), // 36: google.protobuf.Timestamp - (*PaginationRequest)(nil), // 37: gitpod.v1.PaginationRequest - (*PaginationResponse)(nil), // 38: gitpod.v1.PaginationResponse - (*WorkspaceClass)(nil), // 39: gitpod.v1.WorkspaceClass - (*durationpb.Duration)(nil), // 40: google.protobuf.Duration + (OrganizationPermission)(0), // 1: gitpod.v1.OrganizationPermission + (ListOrganizationsRequest_Scope)(0), // 2: gitpod.v1.ListOrganizationsRequest.Scope + (*Organization)(nil), // 3: gitpod.v1.Organization + (*OrganizationMember)(nil), // 4: gitpod.v1.OrganizationMember + (*RoleRestrictionEntry)(nil), // 5: gitpod.v1.RoleRestrictionEntry + (*OrganizationSettings)(nil), // 6: gitpod.v1.OrganizationSettings + (*ListOrganizationWorkspaceClassesRequest)(nil), // 7: gitpod.v1.ListOrganizationWorkspaceClassesRequest + (*ListOrganizationWorkspaceClassesResponse)(nil), // 8: gitpod.v1.ListOrganizationWorkspaceClassesResponse + (*UpdateOrganizationRequest)(nil), // 9: gitpod.v1.UpdateOrganizationRequest + (*UpdateOrganizationResponse)(nil), // 10: gitpod.v1.UpdateOrganizationResponse + (*TimeoutSettings)(nil), // 11: gitpod.v1.TimeoutSettings + (*UpdateOrganizationSettingsRequest)(nil), // 12: gitpod.v1.UpdateOrganizationSettingsRequest + (*UpdateOrganizationSettingsResponse)(nil), // 13: gitpod.v1.UpdateOrganizationSettingsResponse + (*GetOrganizationSettingsRequest)(nil), // 14: gitpod.v1.GetOrganizationSettingsRequest + (*GetOrganizationSettingsResponse)(nil), // 15: gitpod.v1.GetOrganizationSettingsResponse + (*CreateOrganizationRequest)(nil), // 16: gitpod.v1.CreateOrganizationRequest + (*CreateOrganizationResponse)(nil), // 17: gitpod.v1.CreateOrganizationResponse + (*GetOrganizationRequest)(nil), // 18: gitpod.v1.GetOrganizationRequest + (*GetOrganizationResponse)(nil), // 19: gitpod.v1.GetOrganizationResponse + (*ListOrganizationsRequest)(nil), // 20: gitpod.v1.ListOrganizationsRequest + (*ListOrganizationsResponse)(nil), // 21: gitpod.v1.ListOrganizationsResponse + (*DeleteOrganizationRequest)(nil), // 22: gitpod.v1.DeleteOrganizationRequest + (*DeleteOrganizationResponse)(nil), // 23: gitpod.v1.DeleteOrganizationResponse + (*GetOrganizationInvitationRequest)(nil), // 24: gitpod.v1.GetOrganizationInvitationRequest + (*GetOrganizationInvitationResponse)(nil), // 25: gitpod.v1.GetOrganizationInvitationResponse + (*JoinOrganizationRequest)(nil), // 26: gitpod.v1.JoinOrganizationRequest + (*JoinOrganizationResponse)(nil), // 27: gitpod.v1.JoinOrganizationResponse + (*ResetOrganizationInvitationRequest)(nil), // 28: gitpod.v1.ResetOrganizationInvitationRequest + (*ResetOrganizationInvitationResponse)(nil), // 29: gitpod.v1.ResetOrganizationInvitationResponse + (*ListOrganizationMembersRequest)(nil), // 30: gitpod.v1.ListOrganizationMembersRequest + (*ListOrganizationMembersResponse)(nil), // 31: gitpod.v1.ListOrganizationMembersResponse + (*UpdateOrganizationMemberRequest)(nil), // 32: gitpod.v1.UpdateOrganizationMemberRequest + (*UpdateOrganizationMemberResponse)(nil), // 33: gitpod.v1.UpdateOrganizationMemberResponse + (*DeleteOrganizationMemberRequest)(nil), // 34: gitpod.v1.DeleteOrganizationMemberRequest + (*DeleteOrganizationMemberResponse)(nil), // 35: gitpod.v1.DeleteOrganizationMemberResponse + nil, // 36: gitpod.v1.OrganizationSettings.PinnedEditorVersionsEntry + nil, // 37: gitpod.v1.UpdateOrganizationSettingsRequest.PinnedEditorVersionsEntry + (*timestamppb.Timestamp)(nil), // 38: google.protobuf.Timestamp + (*PaginationRequest)(nil), // 39: gitpod.v1.PaginationRequest + (*PaginationResponse)(nil), // 40: gitpod.v1.PaginationResponse + (*WorkspaceClass)(nil), // 41: gitpod.v1.WorkspaceClass + (*durationpb.Duration)(nil), // 42: google.protobuf.Duration } var file_gitpod_v1_organization_proto_depIdxs = []int32{ - 36, // 0: gitpod.v1.Organization.creation_time:type_name -> google.protobuf.Timestamp + 38, // 0: gitpod.v1.Organization.creation_time:type_name -> google.protobuf.Timestamp 0, // 1: gitpod.v1.OrganizationMember.role:type_name -> gitpod.v1.OrganizationRole - 36, // 2: gitpod.v1.OrganizationMember.member_since:type_name -> google.protobuf.Timestamp - 34, // 3: gitpod.v1.OrganizationSettings.pinned_editor_versions:type_name -> gitpod.v1.OrganizationSettings.PinnedEditorVersionsEntry - 9, // 4: gitpod.v1.OrganizationSettings.timeout_settings:type_name -> gitpod.v1.TimeoutSettings - 37, // 5: gitpod.v1.ListOrganizationWorkspaceClassesRequest.pagination:type_name -> gitpod.v1.PaginationRequest - 38, // 6: gitpod.v1.ListOrganizationWorkspaceClassesResponse.pagination:type_name -> gitpod.v1.PaginationResponse - 39, // 7: gitpod.v1.ListOrganizationWorkspaceClassesResponse.workspace_classes:type_name -> gitpod.v1.WorkspaceClass - 2, // 8: gitpod.v1.UpdateOrganizationResponse.organization:type_name -> gitpod.v1.Organization - 40, // 9: gitpod.v1.TimeoutSettings.inactivity:type_name -> google.protobuf.Duration - 35, // 10: gitpod.v1.UpdateOrganizationSettingsRequest.pinned_editor_versions:type_name -> gitpod.v1.UpdateOrganizationSettingsRequest.PinnedEditorVersionsEntry - 9, // 11: gitpod.v1.UpdateOrganizationSettingsRequest.timeout_settings:type_name -> gitpod.v1.TimeoutSettings - 4, // 12: gitpod.v1.UpdateOrganizationSettingsResponse.settings:type_name -> gitpod.v1.OrganizationSettings - 4, // 13: gitpod.v1.GetOrganizationSettingsResponse.settings:type_name -> gitpod.v1.OrganizationSettings - 2, // 14: gitpod.v1.CreateOrganizationResponse.organization:type_name -> gitpod.v1.Organization - 2, // 15: gitpod.v1.GetOrganizationResponse.organization:type_name -> gitpod.v1.Organization - 37, // 16: gitpod.v1.ListOrganizationsRequest.pagination:type_name -> gitpod.v1.PaginationRequest - 1, // 17: gitpod.v1.ListOrganizationsRequest.scope:type_name -> gitpod.v1.ListOrganizationsRequest.Scope - 2, // 18: gitpod.v1.ListOrganizationsResponse.organizations:type_name -> gitpod.v1.Organization - 38, // 19: gitpod.v1.ListOrganizationsResponse.pagination:type_name -> gitpod.v1.PaginationResponse - 37, // 20: gitpod.v1.ListOrganizationMembersRequest.pagination:type_name -> gitpod.v1.PaginationRequest - 3, // 21: gitpod.v1.ListOrganizationMembersResponse.members:type_name -> gitpod.v1.OrganizationMember - 38, // 22: gitpod.v1.ListOrganizationMembersResponse.pagination:type_name -> gitpod.v1.PaginationResponse - 0, // 23: gitpod.v1.UpdateOrganizationMemberRequest.role:type_name -> gitpod.v1.OrganizationRole - 3, // 24: gitpod.v1.UpdateOrganizationMemberResponse.member:type_name -> gitpod.v1.OrganizationMember - 14, // 25: gitpod.v1.OrganizationService.CreateOrganization:input_type -> gitpod.v1.CreateOrganizationRequest - 16, // 26: gitpod.v1.OrganizationService.GetOrganization:input_type -> gitpod.v1.GetOrganizationRequest - 7, // 27: gitpod.v1.OrganizationService.UpdateOrganization:input_type -> gitpod.v1.UpdateOrganizationRequest - 18, // 28: gitpod.v1.OrganizationService.ListOrganizations:input_type -> gitpod.v1.ListOrganizationsRequest - 20, // 29: gitpod.v1.OrganizationService.DeleteOrganization:input_type -> gitpod.v1.DeleteOrganizationRequest - 22, // 30: gitpod.v1.OrganizationService.GetOrganizationInvitation:input_type -> gitpod.v1.GetOrganizationInvitationRequest - 24, // 31: gitpod.v1.OrganizationService.JoinOrganization:input_type -> gitpod.v1.JoinOrganizationRequest - 26, // 32: gitpod.v1.OrganizationService.ResetOrganizationInvitation:input_type -> gitpod.v1.ResetOrganizationInvitationRequest - 28, // 33: gitpod.v1.OrganizationService.ListOrganizationMembers:input_type -> gitpod.v1.ListOrganizationMembersRequest - 30, // 34: gitpod.v1.OrganizationService.UpdateOrganizationMember:input_type -> gitpod.v1.UpdateOrganizationMemberRequest - 32, // 35: gitpod.v1.OrganizationService.DeleteOrganizationMember:input_type -> gitpod.v1.DeleteOrganizationMemberRequest - 12, // 36: gitpod.v1.OrganizationService.GetOrganizationSettings:input_type -> gitpod.v1.GetOrganizationSettingsRequest - 10, // 37: gitpod.v1.OrganizationService.UpdateOrganizationSettings:input_type -> gitpod.v1.UpdateOrganizationSettingsRequest - 5, // 38: gitpod.v1.OrganizationService.ListOrganizationWorkspaceClasses:input_type -> gitpod.v1.ListOrganizationWorkspaceClassesRequest - 15, // 39: gitpod.v1.OrganizationService.CreateOrganization:output_type -> gitpod.v1.CreateOrganizationResponse - 17, // 40: gitpod.v1.OrganizationService.GetOrganization:output_type -> gitpod.v1.GetOrganizationResponse - 8, // 41: gitpod.v1.OrganizationService.UpdateOrganization:output_type -> gitpod.v1.UpdateOrganizationResponse - 19, // 42: gitpod.v1.OrganizationService.ListOrganizations:output_type -> gitpod.v1.ListOrganizationsResponse - 21, // 43: gitpod.v1.OrganizationService.DeleteOrganization:output_type -> gitpod.v1.DeleteOrganizationResponse - 23, // 44: gitpod.v1.OrganizationService.GetOrganizationInvitation:output_type -> gitpod.v1.GetOrganizationInvitationResponse - 25, // 45: gitpod.v1.OrganizationService.JoinOrganization:output_type -> gitpod.v1.JoinOrganizationResponse - 27, // 46: gitpod.v1.OrganizationService.ResetOrganizationInvitation:output_type -> gitpod.v1.ResetOrganizationInvitationResponse - 29, // 47: gitpod.v1.OrganizationService.ListOrganizationMembers:output_type -> gitpod.v1.ListOrganizationMembersResponse - 31, // 48: gitpod.v1.OrganizationService.UpdateOrganizationMember:output_type -> gitpod.v1.UpdateOrganizationMemberResponse - 33, // 49: gitpod.v1.OrganizationService.DeleteOrganizationMember:output_type -> gitpod.v1.DeleteOrganizationMemberResponse - 13, // 50: gitpod.v1.OrganizationService.GetOrganizationSettings:output_type -> gitpod.v1.GetOrganizationSettingsResponse - 11, // 51: gitpod.v1.OrganizationService.UpdateOrganizationSettings:output_type -> gitpod.v1.UpdateOrganizationSettingsResponse - 6, // 52: gitpod.v1.OrganizationService.ListOrganizationWorkspaceClasses:output_type -> gitpod.v1.ListOrganizationWorkspaceClassesResponse - 39, // [39:53] is the sub-list for method output_type - 25, // [25:39] is the sub-list for method input_type - 25, // [25:25] is the sub-list for extension type_name - 25, // [25:25] is the sub-list for extension extendee - 0, // [0:25] is the sub-list for field type_name + 38, // 2: gitpod.v1.OrganizationMember.member_since:type_name -> google.protobuf.Timestamp + 0, // 3: gitpod.v1.RoleRestrictionEntry.role:type_name -> gitpod.v1.OrganizationRole + 1, // 4: gitpod.v1.RoleRestrictionEntry.permissions:type_name -> gitpod.v1.OrganizationPermission + 36, // 5: gitpod.v1.OrganizationSettings.pinned_editor_versions:type_name -> gitpod.v1.OrganizationSettings.PinnedEditorVersionsEntry + 11, // 6: gitpod.v1.OrganizationSettings.timeout_settings:type_name -> gitpod.v1.TimeoutSettings + 5, // 7: gitpod.v1.OrganizationSettings.role_restrictions:type_name -> gitpod.v1.RoleRestrictionEntry + 39, // 8: gitpod.v1.ListOrganizationWorkspaceClassesRequest.pagination:type_name -> gitpod.v1.PaginationRequest + 40, // 9: gitpod.v1.ListOrganizationWorkspaceClassesResponse.pagination:type_name -> gitpod.v1.PaginationResponse + 41, // 10: gitpod.v1.ListOrganizationWorkspaceClassesResponse.workspace_classes:type_name -> gitpod.v1.WorkspaceClass + 3, // 11: gitpod.v1.UpdateOrganizationResponse.organization:type_name -> gitpod.v1.Organization + 42, // 12: gitpod.v1.TimeoutSettings.inactivity:type_name -> google.protobuf.Duration + 37, // 13: gitpod.v1.UpdateOrganizationSettingsRequest.pinned_editor_versions:type_name -> gitpod.v1.UpdateOrganizationSettingsRequest.PinnedEditorVersionsEntry + 11, // 14: gitpod.v1.UpdateOrganizationSettingsRequest.timeout_settings:type_name -> gitpod.v1.TimeoutSettings + 5, // 15: gitpod.v1.UpdateOrganizationSettingsRequest.role_restrictions:type_name -> gitpod.v1.RoleRestrictionEntry + 6, // 16: gitpod.v1.UpdateOrganizationSettingsResponse.settings:type_name -> gitpod.v1.OrganizationSettings + 6, // 17: gitpod.v1.GetOrganizationSettingsResponse.settings:type_name -> gitpod.v1.OrganizationSettings + 3, // 18: gitpod.v1.CreateOrganizationResponse.organization:type_name -> gitpod.v1.Organization + 3, // 19: gitpod.v1.GetOrganizationResponse.organization:type_name -> gitpod.v1.Organization + 39, // 20: gitpod.v1.ListOrganizationsRequest.pagination:type_name -> gitpod.v1.PaginationRequest + 2, // 21: gitpod.v1.ListOrganizationsRequest.scope:type_name -> gitpod.v1.ListOrganizationsRequest.Scope + 3, // 22: gitpod.v1.ListOrganizationsResponse.organizations:type_name -> gitpod.v1.Organization + 40, // 23: gitpod.v1.ListOrganizationsResponse.pagination:type_name -> gitpod.v1.PaginationResponse + 39, // 24: gitpod.v1.ListOrganizationMembersRequest.pagination:type_name -> gitpod.v1.PaginationRequest + 4, // 25: gitpod.v1.ListOrganizationMembersResponse.members:type_name -> gitpod.v1.OrganizationMember + 40, // 26: gitpod.v1.ListOrganizationMembersResponse.pagination:type_name -> gitpod.v1.PaginationResponse + 0, // 27: gitpod.v1.UpdateOrganizationMemberRequest.role:type_name -> gitpod.v1.OrganizationRole + 4, // 28: gitpod.v1.UpdateOrganizationMemberResponse.member:type_name -> gitpod.v1.OrganizationMember + 16, // 29: gitpod.v1.OrganizationService.CreateOrganization:input_type -> gitpod.v1.CreateOrganizationRequest + 18, // 30: gitpod.v1.OrganizationService.GetOrganization:input_type -> gitpod.v1.GetOrganizationRequest + 9, // 31: gitpod.v1.OrganizationService.UpdateOrganization:input_type -> gitpod.v1.UpdateOrganizationRequest + 20, // 32: gitpod.v1.OrganizationService.ListOrganizations:input_type -> gitpod.v1.ListOrganizationsRequest + 22, // 33: gitpod.v1.OrganizationService.DeleteOrganization:input_type -> gitpod.v1.DeleteOrganizationRequest + 24, // 34: gitpod.v1.OrganizationService.GetOrganizationInvitation:input_type -> gitpod.v1.GetOrganizationInvitationRequest + 26, // 35: gitpod.v1.OrganizationService.JoinOrganization:input_type -> gitpod.v1.JoinOrganizationRequest + 28, // 36: gitpod.v1.OrganizationService.ResetOrganizationInvitation:input_type -> gitpod.v1.ResetOrganizationInvitationRequest + 30, // 37: gitpod.v1.OrganizationService.ListOrganizationMembers:input_type -> gitpod.v1.ListOrganizationMembersRequest + 32, // 38: gitpod.v1.OrganizationService.UpdateOrganizationMember:input_type -> gitpod.v1.UpdateOrganizationMemberRequest + 34, // 39: gitpod.v1.OrganizationService.DeleteOrganizationMember:input_type -> gitpod.v1.DeleteOrganizationMemberRequest + 14, // 40: gitpod.v1.OrganizationService.GetOrganizationSettings:input_type -> gitpod.v1.GetOrganizationSettingsRequest + 12, // 41: gitpod.v1.OrganizationService.UpdateOrganizationSettings:input_type -> gitpod.v1.UpdateOrganizationSettingsRequest + 7, // 42: gitpod.v1.OrganizationService.ListOrganizationWorkspaceClasses:input_type -> gitpod.v1.ListOrganizationWorkspaceClassesRequest + 17, // 43: gitpod.v1.OrganizationService.CreateOrganization:output_type -> gitpod.v1.CreateOrganizationResponse + 19, // 44: gitpod.v1.OrganizationService.GetOrganization:output_type -> gitpod.v1.GetOrganizationResponse + 10, // 45: gitpod.v1.OrganizationService.UpdateOrganization:output_type -> gitpod.v1.UpdateOrganizationResponse + 21, // 46: gitpod.v1.OrganizationService.ListOrganizations:output_type -> gitpod.v1.ListOrganizationsResponse + 23, // 47: gitpod.v1.OrganizationService.DeleteOrganization:output_type -> gitpod.v1.DeleteOrganizationResponse + 25, // 48: gitpod.v1.OrganizationService.GetOrganizationInvitation:output_type -> gitpod.v1.GetOrganizationInvitationResponse + 27, // 49: gitpod.v1.OrganizationService.JoinOrganization:output_type -> gitpod.v1.JoinOrganizationResponse + 29, // 50: gitpod.v1.OrganizationService.ResetOrganizationInvitation:output_type -> gitpod.v1.ResetOrganizationInvitationResponse + 31, // 51: gitpod.v1.OrganizationService.ListOrganizationMembers:output_type -> gitpod.v1.ListOrganizationMembersResponse + 33, // 52: gitpod.v1.OrganizationService.UpdateOrganizationMember:output_type -> gitpod.v1.UpdateOrganizationMemberResponse + 35, // 53: gitpod.v1.OrganizationService.DeleteOrganizationMember:output_type -> gitpod.v1.DeleteOrganizationMemberResponse + 15, // 54: gitpod.v1.OrganizationService.GetOrganizationSettings:output_type -> gitpod.v1.GetOrganizationSettingsResponse + 13, // 55: gitpod.v1.OrganizationService.UpdateOrganizationSettings:output_type -> gitpod.v1.UpdateOrganizationSettingsResponse + 8, // 56: gitpod.v1.OrganizationService.ListOrganizationWorkspaceClasses:output_type -> gitpod.v1.ListOrganizationWorkspaceClassesResponse + 43, // [43:57] is the sub-list for method output_type + 29, // [29:43] is the sub-list for method input_type + 29, // [29:29] is the sub-list for extension type_name + 29, // [29:29] is the sub-list for extension extendee + 0, // [0:29] is the sub-list for field type_name } func init() { file_gitpod_v1_organization_proto_init() } @@ -2524,7 +2691,7 @@ func file_gitpod_v1_organization_proto_init() { } } file_gitpod_v1_organization_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OrganizationSettings); i { + switch v := v.(*RoleRestrictionEntry); i { case 0: return &v.state case 1: @@ -2536,7 +2703,7 @@ func file_gitpod_v1_organization_proto_init() { } } file_gitpod_v1_organization_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListOrganizationWorkspaceClassesRequest); i { + switch v := v.(*OrganizationSettings); i { case 0: return &v.state case 1: @@ -2548,7 +2715,7 @@ func file_gitpod_v1_organization_proto_init() { } } file_gitpod_v1_organization_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListOrganizationWorkspaceClassesResponse); i { + switch v := v.(*ListOrganizationWorkspaceClassesRequest); i { case 0: return &v.state case 1: @@ -2560,7 +2727,7 @@ func file_gitpod_v1_organization_proto_init() { } } file_gitpod_v1_organization_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateOrganizationRequest); i { + switch v := v.(*ListOrganizationWorkspaceClassesResponse); i { case 0: return &v.state case 1: @@ -2572,7 +2739,7 @@ func file_gitpod_v1_organization_proto_init() { } } file_gitpod_v1_organization_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateOrganizationResponse); i { + switch v := v.(*UpdateOrganizationRequest); i { case 0: return &v.state case 1: @@ -2584,7 +2751,7 @@ func file_gitpod_v1_organization_proto_init() { } } file_gitpod_v1_organization_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TimeoutSettings); i { + switch v := v.(*UpdateOrganizationResponse); i { case 0: return &v.state case 1: @@ -2596,7 +2763,7 @@ func file_gitpod_v1_organization_proto_init() { } } file_gitpod_v1_organization_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateOrganizationSettingsRequest); i { + switch v := v.(*TimeoutSettings); i { case 0: return &v.state case 1: @@ -2608,7 +2775,7 @@ func file_gitpod_v1_organization_proto_init() { } } file_gitpod_v1_organization_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateOrganizationSettingsResponse); i { + switch v := v.(*UpdateOrganizationSettingsRequest); i { case 0: return &v.state case 1: @@ -2620,7 +2787,7 @@ func file_gitpod_v1_organization_proto_init() { } } file_gitpod_v1_organization_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetOrganizationSettingsRequest); i { + switch v := v.(*UpdateOrganizationSettingsResponse); i { case 0: return &v.state case 1: @@ -2632,7 +2799,7 @@ func file_gitpod_v1_organization_proto_init() { } } file_gitpod_v1_organization_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetOrganizationSettingsResponse); i { + switch v := v.(*GetOrganizationSettingsRequest); i { case 0: return &v.state case 1: @@ -2644,7 +2811,7 @@ func file_gitpod_v1_organization_proto_init() { } } file_gitpod_v1_organization_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateOrganizationRequest); i { + switch v := v.(*GetOrganizationSettingsResponse); i { case 0: return &v.state case 1: @@ -2656,7 +2823,7 @@ func file_gitpod_v1_organization_proto_init() { } } file_gitpod_v1_organization_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateOrganizationResponse); i { + switch v := v.(*CreateOrganizationRequest); i { case 0: return &v.state case 1: @@ -2668,7 +2835,7 @@ func file_gitpod_v1_organization_proto_init() { } } file_gitpod_v1_organization_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetOrganizationRequest); i { + switch v := v.(*CreateOrganizationResponse); i { case 0: return &v.state case 1: @@ -2680,7 +2847,7 @@ func file_gitpod_v1_organization_proto_init() { } } file_gitpod_v1_organization_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetOrganizationResponse); i { + switch v := v.(*GetOrganizationRequest); i { case 0: return &v.state case 1: @@ -2692,7 +2859,7 @@ func file_gitpod_v1_organization_proto_init() { } } file_gitpod_v1_organization_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListOrganizationsRequest); i { + switch v := v.(*GetOrganizationResponse); i { case 0: return &v.state case 1: @@ -2704,7 +2871,7 @@ func file_gitpod_v1_organization_proto_init() { } } file_gitpod_v1_organization_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListOrganizationsResponse); i { + switch v := v.(*ListOrganizationsRequest); i { case 0: return &v.state case 1: @@ -2716,7 +2883,7 @@ func file_gitpod_v1_organization_proto_init() { } } file_gitpod_v1_organization_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteOrganizationRequest); i { + switch v := v.(*ListOrganizationsResponse); i { case 0: return &v.state case 1: @@ -2728,7 +2895,7 @@ func file_gitpod_v1_organization_proto_init() { } } file_gitpod_v1_organization_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteOrganizationResponse); i { + switch v := v.(*DeleteOrganizationRequest); i { case 0: return &v.state case 1: @@ -2740,7 +2907,7 @@ func file_gitpod_v1_organization_proto_init() { } } file_gitpod_v1_organization_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetOrganizationInvitationRequest); i { + switch v := v.(*DeleteOrganizationResponse); i { case 0: return &v.state case 1: @@ -2752,7 +2919,7 @@ func file_gitpod_v1_organization_proto_init() { } } file_gitpod_v1_organization_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetOrganizationInvitationResponse); i { + switch v := v.(*GetOrganizationInvitationRequest); i { case 0: return &v.state case 1: @@ -2764,7 +2931,7 @@ func file_gitpod_v1_organization_proto_init() { } } file_gitpod_v1_organization_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*JoinOrganizationRequest); i { + switch v := v.(*GetOrganizationInvitationResponse); i { case 0: return &v.state case 1: @@ -2776,7 +2943,7 @@ func file_gitpod_v1_organization_proto_init() { } } file_gitpod_v1_organization_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*JoinOrganizationResponse); i { + switch v := v.(*JoinOrganizationRequest); i { case 0: return &v.state case 1: @@ -2788,7 +2955,7 @@ func file_gitpod_v1_organization_proto_init() { } } file_gitpod_v1_organization_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResetOrganizationInvitationRequest); i { + switch v := v.(*JoinOrganizationResponse); i { case 0: return &v.state case 1: @@ -2800,7 +2967,7 @@ func file_gitpod_v1_organization_proto_init() { } } file_gitpod_v1_organization_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResetOrganizationInvitationResponse); i { + switch v := v.(*ResetOrganizationInvitationRequest); i { case 0: return &v.state case 1: @@ -2812,7 +2979,7 @@ func file_gitpod_v1_organization_proto_init() { } } file_gitpod_v1_organization_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListOrganizationMembersRequest); i { + switch v := v.(*ResetOrganizationInvitationResponse); i { case 0: return &v.state case 1: @@ -2824,7 +2991,7 @@ func file_gitpod_v1_organization_proto_init() { } } file_gitpod_v1_organization_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListOrganizationMembersResponse); i { + switch v := v.(*ListOrganizationMembersRequest); i { case 0: return &v.state case 1: @@ -2836,7 +3003,7 @@ func file_gitpod_v1_organization_proto_init() { } } file_gitpod_v1_organization_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateOrganizationMemberRequest); i { + switch v := v.(*ListOrganizationMembersResponse); i { case 0: return &v.state case 1: @@ -2848,7 +3015,7 @@ func file_gitpod_v1_organization_proto_init() { } } file_gitpod_v1_organization_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateOrganizationMemberResponse); i { + switch v := v.(*UpdateOrganizationMemberRequest); i { case 0: return &v.state case 1: @@ -2860,7 +3027,7 @@ func file_gitpod_v1_organization_proto_init() { } } file_gitpod_v1_organization_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteOrganizationMemberRequest); i { + switch v := v.(*UpdateOrganizationMemberResponse); i { case 0: return &v.state case 1: @@ -2872,6 +3039,18 @@ func file_gitpod_v1_organization_proto_init() { } } file_gitpod_v1_organization_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteOrganizationMemberRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_gitpod_v1_organization_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteOrganizationMemberResponse); i { case 0: return &v.state @@ -2884,17 +3063,17 @@ func file_gitpod_v1_organization_proto_init() { } } } - file_gitpod_v1_organization_proto_msgTypes[5].OneofWrappers = []interface{}{} - file_gitpod_v1_organization_proto_msgTypes[7].OneofWrappers = []interface{}{} + file_gitpod_v1_organization_proto_msgTypes[6].OneofWrappers = []interface{}{} file_gitpod_v1_organization_proto_msgTypes[8].OneofWrappers = []interface{}{} - file_gitpod_v1_organization_proto_msgTypes[28].OneofWrappers = []interface{}{} + file_gitpod_v1_organization_proto_msgTypes[9].OneofWrappers = []interface{}{} + file_gitpod_v1_organization_proto_msgTypes[29].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_gitpod_v1_organization_proto_rawDesc, - NumEnums: 2, - NumMessages: 34, + NumEnums: 3, + NumMessages: 35, NumExtensions: 0, NumServices: 1, }, diff --git a/components/public-api/java/src/main/java/io/gitpod/publicapi/v1/OrganizationOuterClass.java b/components/public-api/java/src/main/java/io/gitpod/publicapi/v1/OrganizationOuterClass.java index 67fcc28792c698..5b1629defafac4 100644 --- a/components/public-api/java/src/main/java/io/gitpod/publicapi/v1/OrganizationOuterClass.java +++ b/components/public-api/java/src/main/java/io/gitpod/publicapi/v1/OrganizationOuterClass.java @@ -164,6 +164,127 @@ private OrganizationRole(int value) { // @@protoc_insertion_point(enum_scope:gitpod.v1.OrganizationRole) } + /** + *
+   * OrganizationPermissions define permissions that are restrictable using RoleRestrictions
+   * 
+ * + * Protobuf enum {@code gitpod.v1.OrganizationPermission} + */ + public enum OrganizationPermission + implements com.google.protobuf.ProtocolMessageEnum { + /** + * ORGANIZATION_PERMISSION_UNSPECIFIED = 0; + */ + ORGANIZATION_PERMISSION_UNSPECIFIED(0), + /** + * ORGANIZATION_PERMISSION_START_ARBITRARY_REPOS = 1; + */ + ORGANIZATION_PERMISSION_START_ARBITRARY_REPOS(1), + UNRECOGNIZED(-1), + ; + + static { + com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( + com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, + /* major= */ 4, + /* minor= */ 27, + /* patch= */ 2, + /* suffix= */ "", + OrganizationPermission.class.getName()); + } + /** + * ORGANIZATION_PERMISSION_UNSPECIFIED = 0; + */ + public static final int ORGANIZATION_PERMISSION_UNSPECIFIED_VALUE = 0; + /** + * ORGANIZATION_PERMISSION_START_ARBITRARY_REPOS = 1; + */ + public static final int ORGANIZATION_PERMISSION_START_ARBITRARY_REPOS_VALUE = 1; + + + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static OrganizationPermission valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static OrganizationPermission forNumber(int value) { + switch (value) { + case 0: return ORGANIZATION_PERMISSION_UNSPECIFIED; + case 1: return ORGANIZATION_PERMISSION_START_ARBITRARY_REPOS; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + OrganizationPermission> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public OrganizationPermission findValueByNumber(int number) { + return OrganizationPermission.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor + getValueDescriptor() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalStateException( + "Can't get the descriptor of an unrecognized enum value."); + } + return getDescriptor().getValues().get(ordinal()); + } + public final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptorForType() { + return getDescriptor(); + } + public static final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptor() { + return io.gitpod.publicapi.v1.OrganizationOuterClass.getDescriptor().getEnumTypes().get(1); + } + + private static final OrganizationPermission[] VALUES = values(); + + public static OrganizationPermission valueOf( + com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException( + "EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int value; + + private OrganizationPermission(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:gitpod.v1.OrganizationPermission) + } + public interface OrganizationOrBuilder extends // @@protoc_insertion_point(interface_extends:gitpod.v1.Organization) com.google.protobuf.MessageOrBuilder { @@ -2483,7 +2604,889 @@ public static io.gitpod.publicapi.v1.OrganizationOuterClass.OrganizationMember g private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { @java.lang.Override - public OrganizationMember parsePartialFrom( + public OrganizationMember parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public io.gitpod.publicapi.v1.OrganizationOuterClass.OrganizationMember getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface RoleRestrictionEntryOrBuilder extends + // @@protoc_insertion_point(interface_extends:gitpod.v1.RoleRestrictionEntry) + com.google.protobuf.MessageOrBuilder { + + /** + *
+     * role is the role that is restricted
+     * 
+ * + * .gitpod.v1.OrganizationRole role = 1 [json_name = "role"]; + * @return The enum numeric value on the wire for role. + */ + int getRoleValue(); + /** + *
+     * role is the role that is restricted
+     * 
+ * + * .gitpod.v1.OrganizationRole role = 1 [json_name = "role"]; + * @return The role. + */ + io.gitpod.publicapi.v1.OrganizationOuterClass.OrganizationRole getRole(); + + /** + *
+     * permissions are the permissions that are restricted
+     * 
+ * + * repeated .gitpod.v1.OrganizationPermission permissions = 2 [json_name = "permissions"]; + * @return A list containing the permissions. + */ + java.util.List getPermissionsList(); + /** + *
+     * permissions are the permissions that are restricted
+     * 
+ * + * repeated .gitpod.v1.OrganizationPermission permissions = 2 [json_name = "permissions"]; + * @return The count of permissions. + */ + int getPermissionsCount(); + /** + *
+     * permissions are the permissions that are restricted
+     * 
+ * + * repeated .gitpod.v1.OrganizationPermission permissions = 2 [json_name = "permissions"]; + * @param index The index of the element to return. + * @return The permissions at the given index. + */ + io.gitpod.publicapi.v1.OrganizationOuterClass.OrganizationPermission getPermissions(int index); + /** + *
+     * permissions are the permissions that are restricted
+     * 
+ * + * repeated .gitpod.v1.OrganizationPermission permissions = 2 [json_name = "permissions"]; + * @return A list containing the enum numeric values on the wire for permissions. + */ + java.util.List + getPermissionsValueList(); + /** + *
+     * permissions are the permissions that are restricted
+     * 
+ * + * repeated .gitpod.v1.OrganizationPermission permissions = 2 [json_name = "permissions"]; + * @param index The index of the value to return. + * @return The enum numeric value on the wire of permissions at the given index. + */ + int getPermissionsValue(int index); + } + /** + * Protobuf type {@code gitpod.v1.RoleRestrictionEntry} + */ + public static final class RoleRestrictionEntry extends + com.google.protobuf.GeneratedMessage implements + // @@protoc_insertion_point(message_implements:gitpod.v1.RoleRestrictionEntry) + RoleRestrictionEntryOrBuilder { + private static final long serialVersionUID = 0L; + static { + com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion( + com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC, + /* major= */ 4, + /* minor= */ 27, + /* patch= */ 2, + /* suffix= */ "", + RoleRestrictionEntry.class.getName()); + } + // Use RoleRestrictionEntry.newBuilder() to construct. + private RoleRestrictionEntry(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + } + private RoleRestrictionEntry() { + role_ = 0; + permissions_ = java.util.Collections.emptyList(); + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return io.gitpod.publicapi.v1.OrganizationOuterClass.internal_static_gitpod_v1_RoleRestrictionEntry_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return io.gitpod.publicapi.v1.OrganizationOuterClass.internal_static_gitpod_v1_RoleRestrictionEntry_fieldAccessorTable + .ensureFieldAccessorsInitialized( + io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry.class, io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry.Builder.class); + } + + public static final int ROLE_FIELD_NUMBER = 1; + private int role_ = 0; + /** + *
+     * role is the role that is restricted
+     * 
+ * + * .gitpod.v1.OrganizationRole role = 1 [json_name = "role"]; + * @return The enum numeric value on the wire for role. + */ + @java.lang.Override public int getRoleValue() { + return role_; + } + /** + *
+     * role is the role that is restricted
+     * 
+ * + * .gitpod.v1.OrganizationRole role = 1 [json_name = "role"]; + * @return The role. + */ + @java.lang.Override public io.gitpod.publicapi.v1.OrganizationOuterClass.OrganizationRole getRole() { + io.gitpod.publicapi.v1.OrganizationOuterClass.OrganizationRole result = io.gitpod.publicapi.v1.OrganizationOuterClass.OrganizationRole.forNumber(role_); + return result == null ? io.gitpod.publicapi.v1.OrganizationOuterClass.OrganizationRole.UNRECOGNIZED : result; + } + + public static final int PERMISSIONS_FIELD_NUMBER = 2; + @SuppressWarnings("serial") + private java.util.List permissions_; + private static final com.google.protobuf.Internal.ListAdapter.Converter< + java.lang.Integer, io.gitpod.publicapi.v1.OrganizationOuterClass.OrganizationPermission> permissions_converter_ = + new com.google.protobuf.Internal.ListAdapter.Converter< + java.lang.Integer, io.gitpod.publicapi.v1.OrganizationOuterClass.OrganizationPermission>() { + public io.gitpod.publicapi.v1.OrganizationOuterClass.OrganizationPermission convert(java.lang.Integer from) { + io.gitpod.publicapi.v1.OrganizationOuterClass.OrganizationPermission result = io.gitpod.publicapi.v1.OrganizationOuterClass.OrganizationPermission.forNumber(from); + return result == null ? io.gitpod.publicapi.v1.OrganizationOuterClass.OrganizationPermission.UNRECOGNIZED : result; + } + }; + /** + *
+     * permissions are the permissions that are restricted
+     * 
+ * + * repeated .gitpod.v1.OrganizationPermission permissions = 2 [json_name = "permissions"]; + * @return A list containing the permissions. + */ + @java.lang.Override + public java.util.List getPermissionsList() { + return new com.google.protobuf.Internal.ListAdapter< + java.lang.Integer, io.gitpod.publicapi.v1.OrganizationOuterClass.OrganizationPermission>(permissions_, permissions_converter_); + } + /** + *
+     * permissions are the permissions that are restricted
+     * 
+ * + * repeated .gitpod.v1.OrganizationPermission permissions = 2 [json_name = "permissions"]; + * @return The count of permissions. + */ + @java.lang.Override + public int getPermissionsCount() { + return permissions_.size(); + } + /** + *
+     * permissions are the permissions that are restricted
+     * 
+ * + * repeated .gitpod.v1.OrganizationPermission permissions = 2 [json_name = "permissions"]; + * @param index The index of the element to return. + * @return The permissions at the given index. + */ + @java.lang.Override + public io.gitpod.publicapi.v1.OrganizationOuterClass.OrganizationPermission getPermissions(int index) { + return permissions_converter_.convert(permissions_.get(index)); + } + /** + *
+     * permissions are the permissions that are restricted
+     * 
+ * + * repeated .gitpod.v1.OrganizationPermission permissions = 2 [json_name = "permissions"]; + * @return A list containing the enum numeric values on the wire for permissions. + */ + @java.lang.Override + public java.util.List + getPermissionsValueList() { + return permissions_; + } + /** + *
+     * permissions are the permissions that are restricted
+     * 
+ * + * repeated .gitpod.v1.OrganizationPermission permissions = 2 [json_name = "permissions"]; + * @param index The index of the value to return. + * @return The enum numeric value on the wire of permissions at the given index. + */ + @java.lang.Override + public int getPermissionsValue(int index) { + return permissions_.get(index); + } + private int permissionsMemoizedSerializedSize; + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (role_ != io.gitpod.publicapi.v1.OrganizationOuterClass.OrganizationRole.ORGANIZATION_ROLE_UNSPECIFIED.getNumber()) { + output.writeEnum(1, role_); + } + if (getPermissionsList().size() > 0) { + output.writeUInt32NoTag(18); + output.writeUInt32NoTag(permissionsMemoizedSerializedSize); + } + for (int i = 0; i < permissions_.size(); i++) { + output.writeEnumNoTag(permissions_.get(i)); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (role_ != io.gitpod.publicapi.v1.OrganizationOuterClass.OrganizationRole.ORGANIZATION_ROLE_UNSPECIFIED.getNumber()) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(1, role_); + } + { + int dataSize = 0; + for (int i = 0; i < permissions_.size(); i++) { + dataSize += com.google.protobuf.CodedOutputStream + .computeEnumSizeNoTag(permissions_.get(i)); + } + size += dataSize; + if (!getPermissionsList().isEmpty()) { size += 1; + size += com.google.protobuf.CodedOutputStream + .computeUInt32SizeNoTag(dataSize); + }permissionsMemoizedSerializedSize = dataSize; + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry)) { + return super.equals(obj); + } + io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry other = (io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry) obj; + + if (role_ != other.role_) return false; + if (!permissions_.equals(other.permissions_)) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + ROLE_FIELD_NUMBER; + hash = (53 * hash) + role_; + if (getPermissionsCount() > 0) { + hash = (37 * hash) + PERMISSIONS_FIELD_NUMBER; + hash = (53 * hash) + permissions_.hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public static io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input); + } + + public static io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input); + } + public static io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessage + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code gitpod.v1.RoleRestrictionEntry} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder implements + // @@protoc_insertion_point(builder_implements:gitpod.v1.RoleRestrictionEntry) + io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntryOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return io.gitpod.publicapi.v1.OrganizationOuterClass.internal_static_gitpod_v1_RoleRestrictionEntry_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return io.gitpod.publicapi.v1.OrganizationOuterClass.internal_static_gitpod_v1_RoleRestrictionEntry_fieldAccessorTable + .ensureFieldAccessorsInitialized( + io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry.class, io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry.Builder.class); + } + + // Construct using io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + role_ = 0; + permissions_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000002); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return io.gitpod.publicapi.v1.OrganizationOuterClass.internal_static_gitpod_v1_RoleRestrictionEntry_descriptor; + } + + @java.lang.Override + public io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry getDefaultInstanceForType() { + return io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry.getDefaultInstance(); + } + + @java.lang.Override + public io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry build() { + io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry buildPartial() { + io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry result = new io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry(this); + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields(io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry result) { + if (((bitField0_ & 0x00000002) != 0)) { + permissions_ = java.util.Collections.unmodifiableList(permissions_); + bitField0_ = (bitField0_ & ~0x00000002); + } + result.permissions_ = permissions_; + } + + private void buildPartial0(io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.role_ = role_; + } + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry) { + return mergeFrom((io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry other) { + if (other == io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry.getDefaultInstance()) return this; + if (other.role_ != 0) { + setRoleValue(other.getRoleValue()); + } + if (!other.permissions_.isEmpty()) { + if (permissions_.isEmpty()) { + permissions_ = other.permissions_; + bitField0_ = (bitField0_ & ~0x00000002); + } else { + ensurePermissionsIsMutable(); + permissions_.addAll(other.permissions_); + } + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + role_ = input.readEnum(); + bitField0_ |= 0x00000001; + break; + } // case 8 + case 16: { + int tmpRaw = input.readEnum(); + ensurePermissionsIsMutable(); + permissions_.add(tmpRaw); + break; + } // case 16 + case 18: { + int length = input.readRawVarint32(); + int oldLimit = input.pushLimit(length); + while(input.getBytesUntilLimit() > 0) { + int tmpRaw = input.readEnum(); + ensurePermissionsIsMutable(); + permissions_.add(tmpRaw); + } + input.popLimit(oldLimit); + break; + } // case 18 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private int role_ = 0; + /** + *
+       * role is the role that is restricted
+       * 
+ * + * .gitpod.v1.OrganizationRole role = 1 [json_name = "role"]; + * @return The enum numeric value on the wire for role. + */ + @java.lang.Override public int getRoleValue() { + return role_; + } + /** + *
+       * role is the role that is restricted
+       * 
+ * + * .gitpod.v1.OrganizationRole role = 1 [json_name = "role"]; + * @param value The enum numeric value on the wire for role to set. + * @return This builder for chaining. + */ + public Builder setRoleValue(int value) { + role_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + *
+       * role is the role that is restricted
+       * 
+ * + * .gitpod.v1.OrganizationRole role = 1 [json_name = "role"]; + * @return The role. + */ + @java.lang.Override + public io.gitpod.publicapi.v1.OrganizationOuterClass.OrganizationRole getRole() { + io.gitpod.publicapi.v1.OrganizationOuterClass.OrganizationRole result = io.gitpod.publicapi.v1.OrganizationOuterClass.OrganizationRole.forNumber(role_); + return result == null ? io.gitpod.publicapi.v1.OrganizationOuterClass.OrganizationRole.UNRECOGNIZED : result; + } + /** + *
+       * role is the role that is restricted
+       * 
+ * + * .gitpod.v1.OrganizationRole role = 1 [json_name = "role"]; + * @param value The role to set. + * @return This builder for chaining. + */ + public Builder setRole(io.gitpod.publicapi.v1.OrganizationOuterClass.OrganizationRole value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + role_ = value.getNumber(); + onChanged(); + return this; + } + /** + *
+       * role is the role that is restricted
+       * 
+ * + * .gitpod.v1.OrganizationRole role = 1 [json_name = "role"]; + * @return This builder for chaining. + */ + public Builder clearRole() { + bitField0_ = (bitField0_ & ~0x00000001); + role_ = 0; + onChanged(); + return this; + } + + private java.util.List permissions_ = + java.util.Collections.emptyList(); + private void ensurePermissionsIsMutable() { + if (!((bitField0_ & 0x00000002) != 0)) { + permissions_ = new java.util.ArrayList(permissions_); + bitField0_ |= 0x00000002; + } + } + /** + *
+       * permissions are the permissions that are restricted
+       * 
+ * + * repeated .gitpod.v1.OrganizationPermission permissions = 2 [json_name = "permissions"]; + * @return A list containing the permissions. + */ + public java.util.List getPermissionsList() { + return new com.google.protobuf.Internal.ListAdapter< + java.lang.Integer, io.gitpod.publicapi.v1.OrganizationOuterClass.OrganizationPermission>(permissions_, permissions_converter_); + } + /** + *
+       * permissions are the permissions that are restricted
+       * 
+ * + * repeated .gitpod.v1.OrganizationPermission permissions = 2 [json_name = "permissions"]; + * @return The count of permissions. + */ + public int getPermissionsCount() { + return permissions_.size(); + } + /** + *
+       * permissions are the permissions that are restricted
+       * 
+ * + * repeated .gitpod.v1.OrganizationPermission permissions = 2 [json_name = "permissions"]; + * @param index The index of the element to return. + * @return The permissions at the given index. + */ + public io.gitpod.publicapi.v1.OrganizationOuterClass.OrganizationPermission getPermissions(int index) { + return permissions_converter_.convert(permissions_.get(index)); + } + /** + *
+       * permissions are the permissions that are restricted
+       * 
+ * + * repeated .gitpod.v1.OrganizationPermission permissions = 2 [json_name = "permissions"]; + * @param index The index to set the value at. + * @param value The permissions to set. + * @return This builder for chaining. + */ + public Builder setPermissions( + int index, io.gitpod.publicapi.v1.OrganizationOuterClass.OrganizationPermission value) { + if (value == null) { + throw new NullPointerException(); + } + ensurePermissionsIsMutable(); + permissions_.set(index, value.getNumber()); + onChanged(); + return this; + } + /** + *
+       * permissions are the permissions that are restricted
+       * 
+ * + * repeated .gitpod.v1.OrganizationPermission permissions = 2 [json_name = "permissions"]; + * @param value The permissions to add. + * @return This builder for chaining. + */ + public Builder addPermissions(io.gitpod.publicapi.v1.OrganizationOuterClass.OrganizationPermission value) { + if (value == null) { + throw new NullPointerException(); + } + ensurePermissionsIsMutable(); + permissions_.add(value.getNumber()); + onChanged(); + return this; + } + /** + *
+       * permissions are the permissions that are restricted
+       * 
+ * + * repeated .gitpod.v1.OrganizationPermission permissions = 2 [json_name = "permissions"]; + * @param values The permissions to add. + * @return This builder for chaining. + */ + public Builder addAllPermissions( + java.lang.Iterable values) { + ensurePermissionsIsMutable(); + for (io.gitpod.publicapi.v1.OrganizationOuterClass.OrganizationPermission value : values) { + permissions_.add(value.getNumber()); + } + onChanged(); + return this; + } + /** + *
+       * permissions are the permissions that are restricted
+       * 
+ * + * repeated .gitpod.v1.OrganizationPermission permissions = 2 [json_name = "permissions"]; + * @return This builder for chaining. + */ + public Builder clearPermissions() { + permissions_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + return this; + } + /** + *
+       * permissions are the permissions that are restricted
+       * 
+ * + * repeated .gitpod.v1.OrganizationPermission permissions = 2 [json_name = "permissions"]; + * @return A list containing the enum numeric values on the wire for permissions. + */ + public java.util.List + getPermissionsValueList() { + return java.util.Collections.unmodifiableList(permissions_); + } + /** + *
+       * permissions are the permissions that are restricted
+       * 
+ * + * repeated .gitpod.v1.OrganizationPermission permissions = 2 [json_name = "permissions"]; + * @param index The index of the value to return. + * @return The enum numeric value on the wire of permissions at the given index. + */ + public int getPermissionsValue(int index) { + return permissions_.get(index); + } + /** + *
+       * permissions are the permissions that are restricted
+       * 
+ * + * repeated .gitpod.v1.OrganizationPermission permissions = 2 [json_name = "permissions"]; + * @param index The index to set the value at. + * @param value The enum numeric value on the wire for permissions to set. + * @return This builder for chaining. + */ + public Builder setPermissionsValue( + int index, int value) { + ensurePermissionsIsMutable(); + permissions_.set(index, value); + onChanged(); + return this; + } + /** + *
+       * permissions are the permissions that are restricted
+       * 
+ * + * repeated .gitpod.v1.OrganizationPermission permissions = 2 [json_name = "permissions"]; + * @param value The enum numeric value on the wire for permissions to add. + * @return This builder for chaining. + */ + public Builder addPermissionsValue(int value) { + ensurePermissionsIsMutable(); + permissions_.add(value); + onChanged(); + return this; + } + /** + *
+       * permissions are the permissions that are restricted
+       * 
+ * + * repeated .gitpod.v1.OrganizationPermission permissions = 2 [json_name = "permissions"]; + * @param values The enum numeric values on the wire for permissions to add. + * @return This builder for chaining. + */ + public Builder addAllPermissionsValue( + java.lang.Iterable values) { + ensurePermissionsIsMutable(); + for (int value : values) { + permissions_.add(value); + } + onChanged(); + return this; + } + + // @@protoc_insertion_point(builder_scope:gitpod.v1.RoleRestrictionEntry) + } + + // @@protoc_insertion_point(class_scope:gitpod.v1.RoleRestrictionEntry) + private static final io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry(); + } + + public static io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public RoleRestrictionEntry parsePartialFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { @@ -2502,17 +3505,17 @@ public OrganizationMember parsePartialFrom( } }; - public static com.google.protobuf.Parser parser() { + public static com.google.protobuf.Parser parser() { return PARSER; } @java.lang.Override - public com.google.protobuf.Parser getParserForType() { + public com.google.protobuf.Parser getParserForType() { return PARSER; } @java.lang.Override - public io.gitpod.publicapi.v1.OrganizationOuterClass.OrganizationMember getDefaultInstanceForType() { + public io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry getDefaultInstanceForType() { return DEFAULT_INSTANCE; } @@ -2650,6 +3653,30 @@ java.lang.String getPinnedEditorVersionsOrThrow( * .gitpod.v1.TimeoutSettings timeout_settings = 7 [json_name = "timeoutSettings"]; */ io.gitpod.publicapi.v1.OrganizationOuterClass.TimeoutSettingsOrBuilder getTimeoutSettingsOrBuilder(); + + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 8 [json_name = "roleRestrictions"]; + */ + java.util.List + getRoleRestrictionsList(); + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 8 [json_name = "roleRestrictions"]; + */ + io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry getRoleRestrictions(int index); + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 8 [json_name = "roleRestrictions"]; + */ + int getRoleRestrictionsCount(); + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 8 [json_name = "roleRestrictions"]; + */ + java.util.List + getRoleRestrictionsOrBuilderList(); + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 8 [json_name = "roleRestrictions"]; + */ + io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntryOrBuilder getRoleRestrictionsOrBuilder( + int index); } /** * Protobuf type {@code gitpod.v1.OrganizationSettings} @@ -2679,6 +3706,7 @@ private OrganizationSettings() { restrictedEditorNames_ = com.google.protobuf.LazyStringArrayList.emptyList(); defaultRole_ = ""; + roleRestrictions_ = java.util.Collections.emptyList(); } public static final com.google.protobuf.Descriptors.Descriptor @@ -2975,6 +4003,47 @@ public io.gitpod.publicapi.v1.OrganizationOuterClass.TimeoutSettingsOrBuilder ge return timeoutSettings_ == null ? io.gitpod.publicapi.v1.OrganizationOuterClass.TimeoutSettings.getDefaultInstance() : timeoutSettings_; } + public static final int ROLE_RESTRICTIONS_FIELD_NUMBER = 8; + @SuppressWarnings("serial") + private java.util.List roleRestrictions_; + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 8 [json_name = "roleRestrictions"]; + */ + @java.lang.Override + public java.util.List getRoleRestrictionsList() { + return roleRestrictions_; + } + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 8 [json_name = "roleRestrictions"]; + */ + @java.lang.Override + public java.util.List + getRoleRestrictionsOrBuilderList() { + return roleRestrictions_; + } + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 8 [json_name = "roleRestrictions"]; + */ + @java.lang.Override + public int getRoleRestrictionsCount() { + return roleRestrictions_.size(); + } + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 8 [json_name = "roleRestrictions"]; + */ + @java.lang.Override + public io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry getRoleRestrictions(int index) { + return roleRestrictions_.get(index); + } + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 8 [json_name = "roleRestrictions"]; + */ + @java.lang.Override + public io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntryOrBuilder getRoleRestrictionsOrBuilder( + int index) { + return roleRestrictions_.get(index); + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -3013,6 +4082,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) if (((bitField0_ & 0x00000001) != 0)) { output.writeMessage(7, getTimeoutSettings()); } + for (int i = 0; i < roleRestrictions_.size(); i++) { + output.writeMessage(8, roleRestrictions_.get(i)); + } getUnknownFields().writeTo(output); } @@ -3062,6 +4134,10 @@ public int getSerializedSize() { size += com.google.protobuf.CodedOutputStream .computeMessageSize(7, getTimeoutSettings()); } + for (int i = 0; i < roleRestrictions_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(8, roleRestrictions_.get(i)); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -3094,6 +4170,8 @@ public boolean equals(final java.lang.Object obj) { if (!getTimeoutSettings() .equals(other.getTimeoutSettings())) return false; } + if (!getRoleRestrictionsList() + .equals(other.getRoleRestrictionsList())) return false; if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -3128,6 +4206,10 @@ public int hashCode() { hash = (37 * hash) + TIMEOUT_SETTINGS_FIELD_NUMBER; hash = (53 * hash) + getTimeoutSettings().hashCode(); } + if (getRoleRestrictionsCount() > 0) { + hash = (37 * hash) + ROLE_RESTRICTIONS_FIELD_NUMBER; + hash = (53 * hash) + getRoleRestrictionsList().hashCode(); + } hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -3281,6 +4363,7 @@ private void maybeForceBuilderInitialization() { if (com.google.protobuf.GeneratedMessage .alwaysUseFieldBuilders) { getTimeoutSettingsFieldBuilder(); + getRoleRestrictionsFieldBuilder(); } } @java.lang.Override @@ -3300,6 +4383,13 @@ public Builder clear() { timeoutSettingsBuilder_.dispose(); timeoutSettingsBuilder_ = null; } + if (roleRestrictionsBuilder_ == null) { + roleRestrictions_ = java.util.Collections.emptyList(); + } else { + roleRestrictions_ = null; + roleRestrictionsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000080); return this; } @@ -3326,11 +4416,24 @@ public io.gitpod.publicapi.v1.OrganizationOuterClass.OrganizationSettings build( @java.lang.Override public io.gitpod.publicapi.v1.OrganizationOuterClass.OrganizationSettings buildPartial() { io.gitpod.publicapi.v1.OrganizationOuterClass.OrganizationSettings result = new io.gitpod.publicapi.v1.OrganizationOuterClass.OrganizationSettings(this); + buildPartialRepeatedFields(result); if (bitField0_ != 0) { buildPartial0(result); } onBuilt(); return result; } + private void buildPartialRepeatedFields(io.gitpod.publicapi.v1.OrganizationOuterClass.OrganizationSettings result) { + if (roleRestrictionsBuilder_ == null) { + if (((bitField0_ & 0x00000080) != 0)) { + roleRestrictions_ = java.util.Collections.unmodifiableList(roleRestrictions_); + bitField0_ = (bitField0_ & ~0x00000080); + } + result.roleRestrictions_ = roleRestrictions_; + } else { + result.roleRestrictions_ = roleRestrictionsBuilder_.build(); + } + } + private void buildPartial0(io.gitpod.publicapi.v1.OrganizationOuterClass.OrganizationSettings result) { int from_bitField0_ = bitField0_; if (((from_bitField0_ & 0x00000001) != 0)) { @@ -3415,6 +4518,32 @@ public Builder mergeFrom(io.gitpod.publicapi.v1.OrganizationOuterClass.Organizat if (other.hasTimeoutSettings()) { mergeTimeoutSettings(other.getTimeoutSettings()); } + if (roleRestrictionsBuilder_ == null) { + if (!other.roleRestrictions_.isEmpty()) { + if (roleRestrictions_.isEmpty()) { + roleRestrictions_ = other.roleRestrictions_; + bitField0_ = (bitField0_ & ~0x00000080); + } else { + ensureRoleRestrictionsIsMutable(); + roleRestrictions_.addAll(other.roleRestrictions_); + } + onChanged(); + } + } else { + if (!other.roleRestrictions_.isEmpty()) { + if (roleRestrictionsBuilder_.isEmpty()) { + roleRestrictionsBuilder_.dispose(); + roleRestrictionsBuilder_ = null; + roleRestrictions_ = other.roleRestrictions_; + bitField0_ = (bitField0_ & ~0x00000080); + roleRestrictionsBuilder_ = + com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? + getRoleRestrictionsFieldBuilder() : null; + } else { + roleRestrictionsBuilder_.addAllMessages(other.roleRestrictions_); + } + } + } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; @@ -3484,6 +4613,19 @@ public Builder mergeFrom( bitField0_ |= 0x00000040; break; } // case 58 + case 66: { + io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry m = + input.readMessage( + io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry.parser(), + extensionRegistry); + if (roleRestrictionsBuilder_ == null) { + ensureRoleRestrictionsIsMutable(); + roleRestrictions_.add(m); + } else { + roleRestrictionsBuilder_.addMessage(m); + } + break; + } // case 66 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { done = true; // was an endgroup tag @@ -4147,6 +5289,246 @@ public io.gitpod.publicapi.v1.OrganizationOuterClass.TimeoutSettingsOrBuilder ge return timeoutSettingsBuilder_; } + private java.util.List roleRestrictions_ = + java.util.Collections.emptyList(); + private void ensureRoleRestrictionsIsMutable() { + if (!((bitField0_ & 0x00000080) != 0)) { + roleRestrictions_ = new java.util.ArrayList(roleRestrictions_); + bitField0_ |= 0x00000080; + } + } + + private com.google.protobuf.RepeatedFieldBuilder< + io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry, io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry.Builder, io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntryOrBuilder> roleRestrictionsBuilder_; + + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 8 [json_name = "roleRestrictions"]; + */ + public java.util.List getRoleRestrictionsList() { + if (roleRestrictionsBuilder_ == null) { + return java.util.Collections.unmodifiableList(roleRestrictions_); + } else { + return roleRestrictionsBuilder_.getMessageList(); + } + } + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 8 [json_name = "roleRestrictions"]; + */ + public int getRoleRestrictionsCount() { + if (roleRestrictionsBuilder_ == null) { + return roleRestrictions_.size(); + } else { + return roleRestrictionsBuilder_.getCount(); + } + } + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 8 [json_name = "roleRestrictions"]; + */ + public io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry getRoleRestrictions(int index) { + if (roleRestrictionsBuilder_ == null) { + return roleRestrictions_.get(index); + } else { + return roleRestrictionsBuilder_.getMessage(index); + } + } + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 8 [json_name = "roleRestrictions"]; + */ + public Builder setRoleRestrictions( + int index, io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry value) { + if (roleRestrictionsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureRoleRestrictionsIsMutable(); + roleRestrictions_.set(index, value); + onChanged(); + } else { + roleRestrictionsBuilder_.setMessage(index, value); + } + return this; + } + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 8 [json_name = "roleRestrictions"]; + */ + public Builder setRoleRestrictions( + int index, io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry.Builder builderForValue) { + if (roleRestrictionsBuilder_ == null) { + ensureRoleRestrictionsIsMutable(); + roleRestrictions_.set(index, builderForValue.build()); + onChanged(); + } else { + roleRestrictionsBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 8 [json_name = "roleRestrictions"]; + */ + public Builder addRoleRestrictions(io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry value) { + if (roleRestrictionsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureRoleRestrictionsIsMutable(); + roleRestrictions_.add(value); + onChanged(); + } else { + roleRestrictionsBuilder_.addMessage(value); + } + return this; + } + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 8 [json_name = "roleRestrictions"]; + */ + public Builder addRoleRestrictions( + int index, io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry value) { + if (roleRestrictionsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureRoleRestrictionsIsMutable(); + roleRestrictions_.add(index, value); + onChanged(); + } else { + roleRestrictionsBuilder_.addMessage(index, value); + } + return this; + } + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 8 [json_name = "roleRestrictions"]; + */ + public Builder addRoleRestrictions( + io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry.Builder builderForValue) { + if (roleRestrictionsBuilder_ == null) { + ensureRoleRestrictionsIsMutable(); + roleRestrictions_.add(builderForValue.build()); + onChanged(); + } else { + roleRestrictionsBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 8 [json_name = "roleRestrictions"]; + */ + public Builder addRoleRestrictions( + int index, io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry.Builder builderForValue) { + if (roleRestrictionsBuilder_ == null) { + ensureRoleRestrictionsIsMutable(); + roleRestrictions_.add(index, builderForValue.build()); + onChanged(); + } else { + roleRestrictionsBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 8 [json_name = "roleRestrictions"]; + */ + public Builder addAllRoleRestrictions( + java.lang.Iterable values) { + if (roleRestrictionsBuilder_ == null) { + ensureRoleRestrictionsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, roleRestrictions_); + onChanged(); + } else { + roleRestrictionsBuilder_.addAllMessages(values); + } + return this; + } + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 8 [json_name = "roleRestrictions"]; + */ + public Builder clearRoleRestrictions() { + if (roleRestrictionsBuilder_ == null) { + roleRestrictions_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000080); + onChanged(); + } else { + roleRestrictionsBuilder_.clear(); + } + return this; + } + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 8 [json_name = "roleRestrictions"]; + */ + public Builder removeRoleRestrictions(int index) { + if (roleRestrictionsBuilder_ == null) { + ensureRoleRestrictionsIsMutable(); + roleRestrictions_.remove(index); + onChanged(); + } else { + roleRestrictionsBuilder_.remove(index); + } + return this; + } + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 8 [json_name = "roleRestrictions"]; + */ + public io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry.Builder getRoleRestrictionsBuilder( + int index) { + return getRoleRestrictionsFieldBuilder().getBuilder(index); + } + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 8 [json_name = "roleRestrictions"]; + */ + public io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntryOrBuilder getRoleRestrictionsOrBuilder( + int index) { + if (roleRestrictionsBuilder_ == null) { + return roleRestrictions_.get(index); } else { + return roleRestrictionsBuilder_.getMessageOrBuilder(index); + } + } + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 8 [json_name = "roleRestrictions"]; + */ + public java.util.List + getRoleRestrictionsOrBuilderList() { + if (roleRestrictionsBuilder_ != null) { + return roleRestrictionsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(roleRestrictions_); + } + } + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 8 [json_name = "roleRestrictions"]; + */ + public io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry.Builder addRoleRestrictionsBuilder() { + return getRoleRestrictionsFieldBuilder().addBuilder( + io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry.getDefaultInstance()); + } + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 8 [json_name = "roleRestrictions"]; + */ + public io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry.Builder addRoleRestrictionsBuilder( + int index) { + return getRoleRestrictionsFieldBuilder().addBuilder( + index, io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry.getDefaultInstance()); + } + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 8 [json_name = "roleRestrictions"]; + */ + public java.util.List + getRoleRestrictionsBuilderList() { + return getRoleRestrictionsFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilder< + io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry, io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry.Builder, io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntryOrBuilder> + getRoleRestrictionsFieldBuilder() { + if (roleRestrictionsBuilder_ == null) { + roleRestrictionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< + io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry, io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry.Builder, io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntryOrBuilder>( + roleRestrictions_, + ((bitField0_ & 0x00000080) != 0), + getParentForChildren(), + isClean()); + roleRestrictions_ = null; + } + return roleRestrictionsBuilder_; + } + // @@protoc_insertion_point(builder_scope:gitpod.v1.OrganizationSettings) } @@ -8382,6 +9764,49 @@ java.lang.String getPinnedEditorVersionsOrThrow( * optional .gitpod.v1.TimeoutSettings timeout_settings = 11 [json_name = "timeoutSettings"]; */ io.gitpod.publicapi.v1.OrganizationOuterClass.TimeoutSettingsOrBuilder getTimeoutSettingsOrBuilder(); + + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 12 [json_name = "roleRestrictions"]; + */ + java.util.List + getRoleRestrictionsList(); + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 12 [json_name = "roleRestrictions"]; + */ + io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry getRoleRestrictions(int index); + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 12 [json_name = "roleRestrictions"]; + */ + int getRoleRestrictionsCount(); + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 12 [json_name = "roleRestrictions"]; + */ + java.util.List + getRoleRestrictionsOrBuilderList(); + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 12 [json_name = "roleRestrictions"]; + */ + io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntryOrBuilder getRoleRestrictionsOrBuilder( + int index); + + /** + *
+     * Specifies whether role_restrictions should be updated.
+     * 
+ * + * optional bool update_role_restrictions = 13 [json_name = "updateRoleRestrictions"]; + * @return Whether the updateRoleRestrictions field is set. + */ + boolean hasUpdateRoleRestrictions(); + /** + *
+     * Specifies whether role_restrictions should be updated.
+     * 
+ * + * optional bool update_role_restrictions = 13 [json_name = "updateRoleRestrictions"]; + * @return The updateRoleRestrictions. + */ + boolean getUpdateRoleRestrictions(); } /** * Protobuf type {@code gitpod.v1.UpdateOrganizationSettingsRequest} @@ -8412,6 +9837,7 @@ private UpdateOrganizationSettingsRequest() { restrictedEditorNames_ = com.google.protobuf.LazyStringArrayList.emptyList(); defaultRole_ = ""; + roleRestrictions_ = java.util.Collections.emptyList(); } public static final com.google.protobuf.Descriptors.Descriptor @@ -8941,6 +10367,74 @@ public io.gitpod.publicapi.v1.OrganizationOuterClass.TimeoutSettingsOrBuilder ge return timeoutSettings_ == null ? io.gitpod.publicapi.v1.OrganizationOuterClass.TimeoutSettings.getDefaultInstance() : timeoutSettings_; } + public static final int ROLE_RESTRICTIONS_FIELD_NUMBER = 12; + @SuppressWarnings("serial") + private java.util.List roleRestrictions_; + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 12 [json_name = "roleRestrictions"]; + */ + @java.lang.Override + public java.util.List getRoleRestrictionsList() { + return roleRestrictions_; + } + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 12 [json_name = "roleRestrictions"]; + */ + @java.lang.Override + public java.util.List + getRoleRestrictionsOrBuilderList() { + return roleRestrictions_; + } + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 12 [json_name = "roleRestrictions"]; + */ + @java.lang.Override + public int getRoleRestrictionsCount() { + return roleRestrictions_.size(); + } + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 12 [json_name = "roleRestrictions"]; + */ + @java.lang.Override + public io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry getRoleRestrictions(int index) { + return roleRestrictions_.get(index); + } + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 12 [json_name = "roleRestrictions"]; + */ + @java.lang.Override + public io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntryOrBuilder getRoleRestrictionsOrBuilder( + int index) { + return roleRestrictions_.get(index); + } + + public static final int UPDATE_ROLE_RESTRICTIONS_FIELD_NUMBER = 13; + private boolean updateRoleRestrictions_ = false; + /** + *
+     * Specifies whether role_restrictions should be updated.
+     * 
+ * + * optional bool update_role_restrictions = 13 [json_name = "updateRoleRestrictions"]; + * @return Whether the updateRoleRestrictions field is set. + */ + @java.lang.Override + public boolean hasUpdateRoleRestrictions() { + return ((bitField0_ & 0x00000040) != 0); + } + /** + *
+     * Specifies whether role_restrictions should be updated.
+     * 
+ * + * optional bool update_role_restrictions = 13 [json_name = "updateRoleRestrictions"]; + * @return The updateRoleRestrictions. + */ + @java.lang.Override + public boolean getUpdateRoleRestrictions() { + return updateRoleRestrictions_; + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -8988,6 +10482,12 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) if (((bitField0_ & 0x00000020) != 0)) { output.writeMessage(11, getTimeoutSettings()); } + for (int i = 0; i < roleRestrictions_.size(); i++) { + output.writeMessage(12, roleRestrictions_.get(i)); + } + if (((bitField0_ & 0x00000040) != 0)) { + output.writeBool(13, updateRoleRestrictions_); + } getUnknownFields().writeTo(output); } @@ -9048,6 +10548,14 @@ public int getSerializedSize() { size += com.google.protobuf.CodedOutputStream .computeMessageSize(11, getTimeoutSettings()); } + for (int i = 0; i < roleRestrictions_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(12, roleRestrictions_.get(i)); + } + if (((bitField0_ & 0x00000040) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(13, updateRoleRestrictions_); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -9101,6 +10609,13 @@ public boolean equals(final java.lang.Object obj) { if (!getTimeoutSettings() .equals(other.getTimeoutSettings())) return false; } + if (!getRoleRestrictionsList() + .equals(other.getRoleRestrictionsList())) return false; + if (hasUpdateRoleRestrictions() != other.hasUpdateRoleRestrictions()) return false; + if (hasUpdateRoleRestrictions()) { + if (getUpdateRoleRestrictions() + != other.getUpdateRoleRestrictions()) return false; + } if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -9153,6 +10668,15 @@ public int hashCode() { hash = (37 * hash) + TIMEOUT_SETTINGS_FIELD_NUMBER; hash = (53 * hash) + getTimeoutSettings().hashCode(); } + if (getRoleRestrictionsCount() > 0) { + hash = (37 * hash) + ROLE_RESTRICTIONS_FIELD_NUMBER; + hash = (53 * hash) + getRoleRestrictionsList().hashCode(); + } + if (hasUpdateRoleRestrictions()) { + hash = (37 * hash) + UPDATE_ROLE_RESTRICTIONS_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getUpdateRoleRestrictions()); + } hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -9306,6 +10830,7 @@ private void maybeForceBuilderInitialization() { if (com.google.protobuf.GeneratedMessage .alwaysUseFieldBuilders) { getTimeoutSettingsFieldBuilder(); + getRoleRestrictionsFieldBuilder(); } } @java.lang.Override @@ -9328,6 +10853,14 @@ public Builder clear() { timeoutSettingsBuilder_.dispose(); timeoutSettingsBuilder_ = null; } + if (roleRestrictionsBuilder_ == null) { + roleRestrictions_ = java.util.Collections.emptyList(); + } else { + roleRestrictions_ = null; + roleRestrictionsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000400); + updateRoleRestrictions_ = false; return this; } @@ -9354,11 +10887,24 @@ public io.gitpod.publicapi.v1.OrganizationOuterClass.UpdateOrganizationSettingsR @java.lang.Override public io.gitpod.publicapi.v1.OrganizationOuterClass.UpdateOrganizationSettingsRequest buildPartial() { io.gitpod.publicapi.v1.OrganizationOuterClass.UpdateOrganizationSettingsRequest result = new io.gitpod.publicapi.v1.OrganizationOuterClass.UpdateOrganizationSettingsRequest(this); + buildPartialRepeatedFields(result); if (bitField0_ != 0) { buildPartial0(result); } onBuilt(); return result; } + private void buildPartialRepeatedFields(io.gitpod.publicapi.v1.OrganizationOuterClass.UpdateOrganizationSettingsRequest result) { + if (roleRestrictionsBuilder_ == null) { + if (((bitField0_ & 0x00000400) != 0)) { + roleRestrictions_ = java.util.Collections.unmodifiableList(roleRestrictions_); + bitField0_ = (bitField0_ & ~0x00000400); + } + result.roleRestrictions_ = roleRestrictions_; + } else { + result.roleRestrictions_ = roleRestrictionsBuilder_.build(); + } + } + private void buildPartial0(io.gitpod.publicapi.v1.OrganizationOuterClass.UpdateOrganizationSettingsRequest result) { int from_bitField0_ = bitField0_; if (((from_bitField0_ & 0x00000001) != 0)) { @@ -9403,6 +10949,10 @@ private void buildPartial0(io.gitpod.publicapi.v1.OrganizationOuterClass.UpdateO : timeoutSettingsBuilder_.build(); to_bitField0_ |= 0x00000020; } + if (((from_bitField0_ & 0x00000800) != 0)) { + result.updateRoleRestrictions_ = updateRoleRestrictions_; + to_bitField0_ |= 0x00000040; + } result.bitField0_ |= to_bitField0_; } @@ -9468,6 +11018,35 @@ public Builder mergeFrom(io.gitpod.publicapi.v1.OrganizationOuterClass.UpdateOrg if (other.hasTimeoutSettings()) { mergeTimeoutSettings(other.getTimeoutSettings()); } + if (roleRestrictionsBuilder_ == null) { + if (!other.roleRestrictions_.isEmpty()) { + if (roleRestrictions_.isEmpty()) { + roleRestrictions_ = other.roleRestrictions_; + bitField0_ = (bitField0_ & ~0x00000400); + } else { + ensureRoleRestrictionsIsMutable(); + roleRestrictions_.addAll(other.roleRestrictions_); + } + onChanged(); + } + } else { + if (!other.roleRestrictions_.isEmpty()) { + if (roleRestrictionsBuilder_.isEmpty()) { + roleRestrictionsBuilder_.dispose(); + roleRestrictionsBuilder_ = null; + roleRestrictions_ = other.roleRestrictions_; + bitField0_ = (bitField0_ & ~0x00000400); + roleRestrictionsBuilder_ = + com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? + getRoleRestrictionsFieldBuilder() : null; + } else { + roleRestrictionsBuilder_.addAllMessages(other.roleRestrictions_); + } + } + } + if (other.hasUpdateRoleRestrictions()) { + setUpdateRoleRestrictions(other.getUpdateRoleRestrictions()); + } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; @@ -9552,6 +11131,24 @@ public Builder mergeFrom( bitField0_ |= 0x00000200; break; } // case 90 + case 98: { + io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry m = + input.readMessage( + io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry.parser(), + extensionRegistry); + if (roleRestrictionsBuilder_ == null) { + ensureRoleRestrictionsIsMutable(); + roleRestrictions_.add(m); + } else { + roleRestrictionsBuilder_.addMessage(m); + } + break; + } // case 98 + case 104: { + updateRoleRestrictions_ = input.readBool(); + bitField0_ |= 0x00000800; + break; + } // case 104 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { done = true; // was an endgroup tag @@ -10677,6 +12274,302 @@ public io.gitpod.publicapi.v1.OrganizationOuterClass.TimeoutSettingsOrBuilder ge return timeoutSettingsBuilder_; } + private java.util.List roleRestrictions_ = + java.util.Collections.emptyList(); + private void ensureRoleRestrictionsIsMutable() { + if (!((bitField0_ & 0x00000400) != 0)) { + roleRestrictions_ = new java.util.ArrayList(roleRestrictions_); + bitField0_ |= 0x00000400; + } + } + + private com.google.protobuf.RepeatedFieldBuilder< + io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry, io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry.Builder, io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntryOrBuilder> roleRestrictionsBuilder_; + + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 12 [json_name = "roleRestrictions"]; + */ + public java.util.List getRoleRestrictionsList() { + if (roleRestrictionsBuilder_ == null) { + return java.util.Collections.unmodifiableList(roleRestrictions_); + } else { + return roleRestrictionsBuilder_.getMessageList(); + } + } + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 12 [json_name = "roleRestrictions"]; + */ + public int getRoleRestrictionsCount() { + if (roleRestrictionsBuilder_ == null) { + return roleRestrictions_.size(); + } else { + return roleRestrictionsBuilder_.getCount(); + } + } + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 12 [json_name = "roleRestrictions"]; + */ + public io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry getRoleRestrictions(int index) { + if (roleRestrictionsBuilder_ == null) { + return roleRestrictions_.get(index); + } else { + return roleRestrictionsBuilder_.getMessage(index); + } + } + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 12 [json_name = "roleRestrictions"]; + */ + public Builder setRoleRestrictions( + int index, io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry value) { + if (roleRestrictionsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureRoleRestrictionsIsMutable(); + roleRestrictions_.set(index, value); + onChanged(); + } else { + roleRestrictionsBuilder_.setMessage(index, value); + } + return this; + } + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 12 [json_name = "roleRestrictions"]; + */ + public Builder setRoleRestrictions( + int index, io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry.Builder builderForValue) { + if (roleRestrictionsBuilder_ == null) { + ensureRoleRestrictionsIsMutable(); + roleRestrictions_.set(index, builderForValue.build()); + onChanged(); + } else { + roleRestrictionsBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 12 [json_name = "roleRestrictions"]; + */ + public Builder addRoleRestrictions(io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry value) { + if (roleRestrictionsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureRoleRestrictionsIsMutable(); + roleRestrictions_.add(value); + onChanged(); + } else { + roleRestrictionsBuilder_.addMessage(value); + } + return this; + } + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 12 [json_name = "roleRestrictions"]; + */ + public Builder addRoleRestrictions( + int index, io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry value) { + if (roleRestrictionsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureRoleRestrictionsIsMutable(); + roleRestrictions_.add(index, value); + onChanged(); + } else { + roleRestrictionsBuilder_.addMessage(index, value); + } + return this; + } + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 12 [json_name = "roleRestrictions"]; + */ + public Builder addRoleRestrictions( + io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry.Builder builderForValue) { + if (roleRestrictionsBuilder_ == null) { + ensureRoleRestrictionsIsMutable(); + roleRestrictions_.add(builderForValue.build()); + onChanged(); + } else { + roleRestrictionsBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 12 [json_name = "roleRestrictions"]; + */ + public Builder addRoleRestrictions( + int index, io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry.Builder builderForValue) { + if (roleRestrictionsBuilder_ == null) { + ensureRoleRestrictionsIsMutable(); + roleRestrictions_.add(index, builderForValue.build()); + onChanged(); + } else { + roleRestrictionsBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 12 [json_name = "roleRestrictions"]; + */ + public Builder addAllRoleRestrictions( + java.lang.Iterable values) { + if (roleRestrictionsBuilder_ == null) { + ensureRoleRestrictionsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, roleRestrictions_); + onChanged(); + } else { + roleRestrictionsBuilder_.addAllMessages(values); + } + return this; + } + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 12 [json_name = "roleRestrictions"]; + */ + public Builder clearRoleRestrictions() { + if (roleRestrictionsBuilder_ == null) { + roleRestrictions_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000400); + onChanged(); + } else { + roleRestrictionsBuilder_.clear(); + } + return this; + } + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 12 [json_name = "roleRestrictions"]; + */ + public Builder removeRoleRestrictions(int index) { + if (roleRestrictionsBuilder_ == null) { + ensureRoleRestrictionsIsMutable(); + roleRestrictions_.remove(index); + onChanged(); + } else { + roleRestrictionsBuilder_.remove(index); + } + return this; + } + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 12 [json_name = "roleRestrictions"]; + */ + public io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry.Builder getRoleRestrictionsBuilder( + int index) { + return getRoleRestrictionsFieldBuilder().getBuilder(index); + } + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 12 [json_name = "roleRestrictions"]; + */ + public io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntryOrBuilder getRoleRestrictionsOrBuilder( + int index) { + if (roleRestrictionsBuilder_ == null) { + return roleRestrictions_.get(index); } else { + return roleRestrictionsBuilder_.getMessageOrBuilder(index); + } + } + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 12 [json_name = "roleRestrictions"]; + */ + public java.util.List + getRoleRestrictionsOrBuilderList() { + if (roleRestrictionsBuilder_ != null) { + return roleRestrictionsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(roleRestrictions_); + } + } + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 12 [json_name = "roleRestrictions"]; + */ + public io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry.Builder addRoleRestrictionsBuilder() { + return getRoleRestrictionsFieldBuilder().addBuilder( + io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry.getDefaultInstance()); + } + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 12 [json_name = "roleRestrictions"]; + */ + public io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry.Builder addRoleRestrictionsBuilder( + int index) { + return getRoleRestrictionsFieldBuilder().addBuilder( + index, io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry.getDefaultInstance()); + } + /** + * repeated .gitpod.v1.RoleRestrictionEntry role_restrictions = 12 [json_name = "roleRestrictions"]; + */ + public java.util.List + getRoleRestrictionsBuilderList() { + return getRoleRestrictionsFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilder< + io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry, io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry.Builder, io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntryOrBuilder> + getRoleRestrictionsFieldBuilder() { + if (roleRestrictionsBuilder_ == null) { + roleRestrictionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< + io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry, io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntry.Builder, io.gitpod.publicapi.v1.OrganizationOuterClass.RoleRestrictionEntryOrBuilder>( + roleRestrictions_, + ((bitField0_ & 0x00000400) != 0), + getParentForChildren(), + isClean()); + roleRestrictions_ = null; + } + return roleRestrictionsBuilder_; + } + + private boolean updateRoleRestrictions_ ; + /** + *
+       * Specifies whether role_restrictions should be updated.
+       * 
+ * + * optional bool update_role_restrictions = 13 [json_name = "updateRoleRestrictions"]; + * @return Whether the updateRoleRestrictions field is set. + */ + @java.lang.Override + public boolean hasUpdateRoleRestrictions() { + return ((bitField0_ & 0x00000800) != 0); + } + /** + *
+       * Specifies whether role_restrictions should be updated.
+       * 
+ * + * optional bool update_role_restrictions = 13 [json_name = "updateRoleRestrictions"]; + * @return The updateRoleRestrictions. + */ + @java.lang.Override + public boolean getUpdateRoleRestrictions() { + return updateRoleRestrictions_; + } + /** + *
+       * Specifies whether role_restrictions should be updated.
+       * 
+ * + * optional bool update_role_restrictions = 13 [json_name = "updateRoleRestrictions"]; + * @param value The updateRoleRestrictions to set. + * @return This builder for chaining. + */ + public Builder setUpdateRoleRestrictions(boolean value) { + + updateRoleRestrictions_ = value; + bitField0_ |= 0x00000800; + onChanged(); + return this; + } + /** + *
+       * Specifies whether role_restrictions should be updated.
+       * 
+ * + * optional bool update_role_restrictions = 13 [json_name = "updateRoleRestrictions"]; + * @return This builder for chaining. + */ + public Builder clearUpdateRoleRestrictions() { + bitField0_ = (bitField0_ & ~0x00000800); + updateRoleRestrictions_ = false; + onChanged(); + return this; + } + // @@protoc_insertion_point(builder_scope:gitpod.v1.UpdateOrganizationSettingsRequest) } @@ -25559,6 +27452,11 @@ public io.gitpod.publicapi.v1.OrganizationOuterClass.DeleteOrganizationMemberRes private static final com.google.protobuf.GeneratedMessage.FieldAccessorTable internal_static_gitpod_v1_OrganizationMember_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_gitpod_v1_RoleRestrictionEntry_descriptor; + private static final + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_gitpod_v1_RoleRestrictionEntry_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_gitpod_v1_OrganizationSettings_descriptor; private static final @@ -25742,162 +27640,175 @@ public io.gitpod.publicapi.v1.OrganizationOuterClass.DeleteOrganizationMemberRes "estampR\013memberSince\022\035\n\navatar_url\030\004 \001(\tR" + "\tavatarUrl\022\033\n\tfull_name\030\005 \001(\tR\010fullName\022" + "\024\n\005email\030\006 \001(\tR\005email\0222\n\025owned_by_organi" + - "zation\030\007 \001(\010R\023ownedByOrganization\"\244\004\n\024Or" + - "ganizationSettings\022<\n\032workspace_sharing_" + - "disabled\030\001 \001(\010R\030workspaceSharingDisabled" + - "\0226\n\027default_workspace_image\030\002 \001(\tR\025defau" + - "ltWorkspaceImage\022:\n\031allowed_workspace_cl" + - "asses\030\003 \003(\tR\027allowedWorkspaceClasses\0226\n\027" + - "restricted_editor_names\030\004 \003(\tR\025restricte" + - "dEditorNames\022o\n\026pinned_editor_versions\030\005" + - " \003(\01329.gitpod.v1.OrganizationSettings.Pi" + - "nnedEditorVersionsEntryR\024pinnedEditorVer" + - "sions\022!\n\014default_role\030\006 \001(\tR\013defaultRole" + - "\022E\n\020timeout_settings\030\007 \001(\0132\032.gitpod.v1.T" + - "imeoutSettingsR\017timeoutSettings\032G\n\031Pinne" + - "dEditorVersionsEntry\022\020\n\003key\030\001 \001(\tR\003key\022\024" + - "\n\005value\030\002 \001(\tR\005value:\0028\001\"\220\001\n\'ListOrganiz" + - "ationWorkspaceClassesRequest\022<\n\npaginati" + - "on\030\001 \001(\0132\034.gitpod.v1.PaginationRequestR\n" + - "pagination\022\'\n\017organization_id\030\002 \001(\tR\016org" + - "anizationId\"\261\001\n(ListOrganizationWorkspac" + - "eClassesResponse\022=\n\npagination\030\001 \001(\0132\035.g" + - "itpod.v1.PaginationResponseR\npagination\022" + - "F\n\021workspace_classes\030\002 \003(\0132\031.gitpod.v1.W" + - "orkspaceClassR\020workspaceClasses\"f\n\031Updat" + - "eOrganizationRequest\022\'\n\017organization_id\030" + - "\001 \001(\tR\016organizationId\022\027\n\004name\030\002 \001(\tH\000R\004n" + - "ame\210\001\001B\007\n\005_name\"Y\n\032UpdateOrganizationRes" + - "ponse\022;\n\014organization\030\001 \001(\0132\027.gitpod.v1." + - "OrganizationR\014organization\"\252\001\n\017TimeoutSe" + - "ttings\022>\n\ninactivity\030\001 \001(\0132\031.google.prot" + - "obuf.DurationH\000R\ninactivity\210\001\001\0221\n\022deny_u" + - "ser_timeouts\030\002 \001(\010H\001R\020denyUserTimeouts\210\001" + - "\001B\r\n\013_inactivityB\025\n\023_deny_user_timeouts\"" + - "\263\007\n!UpdateOrganizationSettingsRequest\022\'\n" + - "\017organization_id\030\001 \001(\tR\016organizationId\022A" + - "\n\032workspace_sharing_disabled\030\003 \001(\010H\000R\030wo" + - "rkspaceSharingDisabled\210\001\001\022;\n\027default_wor" + - "kspace_image\030\004 \001(\tH\001R\025defaultWorkspaceIm" + - "age\210\001\001\022:\n\031allowed_workspace_classes\030\005 \003(" + - "\tR\027allowedWorkspaceClasses\0226\n\027restricted" + - "_editor_names\030\006 \003(\tR\025restrictedEditorNam" + - "es\022H\n\036update_restricted_editor_names\030\007 \001" + - "(\010H\002R\033updateRestrictedEditorNames\210\001\001\022|\n\026" + - "pinned_editor_versions\030\010 \003(\0132F.gitpod.v1" + - ".UpdateOrganizationSettingsRequest.Pinne" + - "dEditorVersionsEntryR\024pinnedEditorVersio" + - "ns\022F\n\035update_pinned_editor_versions\030\t \001(" + - "\010H\003R\032updatePinnedEditorVersions\210\001\001\022&\n\014de" + - "fault_role\030\n \001(\tH\004R\013defaultRole\210\001\001\022J\n\020ti" + - "meout_settings\030\013 \001(\0132\032.gitpod.v1.Timeout" + - "SettingsH\005R\017timeoutSettings\210\001\001\032G\n\031Pinned" + - "EditorVersionsEntry\022\020\n\003key\030\001 \001(\tR\003key\022\024\n" + - "\005value\030\002 \001(\tR\005value:\0028\001B\035\n\033_workspace_sh" + - "aring_disabledB\032\n\030_default_workspace_ima" + - "geB!\n\037_update_restricted_editor_namesB \n" + - "\036_update_pinned_editor_versionsB\017\n\r_defa" + - "ult_roleB\023\n\021_timeout_settings\"a\n\"UpdateO" + - "rganizationSettingsResponse\022;\n\010settings\030" + - "\001 \001(\0132\037.gitpod.v1.OrganizationSettingsR\010" + - "settings\"I\n\036GetOrganizationSettingsReque" + - "st\022\'\n\017organization_id\030\001 \001(\tR\016organizatio" + - "nId\"^\n\037GetOrganizationSettingsResponse\022;" + - "\n\010settings\030\001 \001(\0132\037.gitpod.v1.Organizatio" + - "nSettingsR\010settings\"/\n\031CreateOrganizatio" + - "nRequest\022\022\n\004name\030\001 \001(\tR\004name\"Y\n\032CreateOr" + - "ganizationResponse\022;\n\014organization\030\001 \001(\013" + - "2\027.gitpod.v1.OrganizationR\014organization\"" + - "A\n\026GetOrganizationRequest\022\'\n\017organizatio" + - "n_id\030\001 \001(\tR\016organizationId\"V\n\027GetOrganiz" + - "ationResponse\022;\n\014organization\030\001 \001(\0132\027.gi" + - "tpod.v1.OrganizationR\014organization\"\332\001\n\030L" + - "istOrganizationsRequest\022<\n\npagination\030\001 " + - "\001(\0132\034.gitpod.v1.PaginationRequestR\npagin" + - "ation\022?\n\005scope\030\002 \001(\0162).gitpod.v1.ListOrg" + - "anizationsRequest.ScopeR\005scope\"?\n\005Scope\022" + - "\025\n\021SCOPE_UNSPECIFIED\020\000\022\020\n\014SCOPE_MEMBER\020\001" + - "\022\r\n\tSCOPE_ALL\020\002\"\231\001\n\031ListOrganizationsRes" + - "ponse\022=\n\rorganizations\030\001 \003(\0132\027.gitpod.v1" + - ".OrganizationR\rorganizations\022=\n\npaginati" + - "on\030\002 \001(\0132\035.gitpod.v1.PaginationResponseR" + - "\npagination\"D\n\031DeleteOrganizationRequest" + - "\022\'\n\017organization_id\030\001 \001(\tR\016organizationI" + - "d\"\034\n\032DeleteOrganizationResponse\"K\n GetOr" + - "ganizationInvitationRequest\022\'\n\017organizat" + - "ion_id\030\001 \001(\tR\016organizationId\"H\n!GetOrgan" + - "izationInvitationResponse\022#\n\rinvitation_" + - "id\030\001 \001(\tR\014invitationId\">\n\027JoinOrganizati" + - "onRequest\022#\n\rinvitation_id\030\001 \001(\tR\014invita" + - "tionId\"C\n\030JoinOrganizationResponse\022\'\n\017or" + - "ganization_id\030\001 \001(\tR\016organizationId\"M\n\"R" + - "esetOrganizationInvitationRequest\022\'\n\017org" + - "anization_id\030\001 \001(\tR\016organizationId\"J\n#Re" + - "setOrganizationInvitationResponse\022#\n\rinv" + - "itation_id\030\001 \001(\tR\014invitationId\"\207\001\n\036ListO" + - "rganizationMembersRequest\022\'\n\017organizatio" + - "n_id\030\001 \001(\tR\016organizationId\022<\n\npagination" + - "\030\002 \001(\0132\034.gitpod.v1.PaginationRequestR\npa" + - "gination\"\231\001\n\037ListOrganizationMembersResp" + - "onse\0227\n\007members\030\001 \003(\0132\035.gitpod.v1.Organi" + - "zationMemberR\007members\022=\n\npagination\030\002 \001(" + - "\0132\035.gitpod.v1.PaginationResponseR\npagina" + - "tion\"\242\001\n\037UpdateOrganizationMemberRequest" + - "\022\'\n\017organization_id\030\001 \001(\tR\016organizationI" + - "d\022\027\n\007user_id\030\002 \001(\tR\006userId\0224\n\004role\030\003 \001(\016" + - "2\033.gitpod.v1.OrganizationRoleH\000R\004role\210\001\001" + - "B\007\n\005_role\"Y\n UpdateOrganizationMemberRes" + - "ponse\0225\n\006member\030\001 \001(\0132\035.gitpod.v1.Organi" + - "zationMemberR\006member\"c\n\037DeleteOrganizati" + - "onMemberRequest\022\'\n\017organization_id\030\001 \001(\t" + - "R\016organizationId\022\027\n\007user_id\030\002 \001(\tR\006userI" + - "d\"\"\n DeleteOrganizationMemberResponse*\224\001" + - "\n\020OrganizationRole\022!\n\035ORGANIZATION_ROLE_" + - "UNSPECIFIED\020\000\022\033\n\027ORGANIZATION_ROLE_OWNER" + - "\020\001\022\034\n\030ORGANIZATION_ROLE_MEMBER\020\002\022\"\n\036ORGA" + - "NIZATION_ROLE_COLLABORATOR\020\0032\276\014\n\023Organiz" + - "ationService\022c\n\022CreateOrganization\022$.git" + - "pod.v1.CreateOrganizationRequest\032%.gitpo" + - "d.v1.CreateOrganizationResponse\"\000\022Z\n\017Get" + - "Organization\022!.gitpod.v1.GetOrganization" + - "Request\032\".gitpod.v1.GetOrganizationRespo" + - "nse\"\000\022c\n\022UpdateOrganization\022$.gitpod.v1." + - "UpdateOrganizationRequest\032%.gitpod.v1.Up" + - "dateOrganizationResponse\"\000\022`\n\021ListOrgani" + - "zations\022#.gitpod.v1.ListOrganizationsReq" + - "uest\032$.gitpod.v1.ListOrganizationsRespon" + - "se\"\000\022c\n\022DeleteOrganization\022$.gitpod.v1.D" + - "eleteOrganizationRequest\032%.gitpod.v1.Del" + - "eteOrganizationResponse\"\000\022x\n\031GetOrganiza" + - "tionInvitation\022+.gitpod.v1.GetOrganizati" + - "onInvitationRequest\032,.gitpod.v1.GetOrgan" + - "izationInvitationResponse\"\000\022]\n\020JoinOrgan" + - "ization\022\".gitpod.v1.JoinOrganizationRequ" + - "est\032#.gitpod.v1.JoinOrganizationResponse" + - "\"\000\022~\n\033ResetOrganizationInvitation\022-.gitp" + - "od.v1.ResetOrganizationInvitationRequest" + - "\032..gitpod.v1.ResetOrganizationInvitation" + - "Response\"\000\022r\n\027ListOrganizationMembers\022)." + - "gitpod.v1.ListOrganizationMembersRequest" + - "\032*.gitpod.v1.ListOrganizationMembersResp" + - "onse\"\000\022u\n\030UpdateOrganizationMember\022*.git" + - "pod.v1.UpdateOrganizationMemberRequest\032+" + - ".gitpod.v1.UpdateOrganizationMemberRespo" + - "nse\"\000\022u\n\030DeleteOrganizationMember\022*.gitp" + - "od.v1.DeleteOrganizationMemberRequest\032+." + - "gitpod.v1.DeleteOrganizationMemberRespon" + - "se\"\000\022r\n\027GetOrganizationSettings\022).gitpod" + - ".v1.GetOrganizationSettingsRequest\032*.git" + - "pod.v1.GetOrganizationSettingsResponse\"\000" + - "\022{\n\032UpdateOrganizationSettings\022,.gitpod." + - "v1.UpdateOrganizationSettingsRequest\032-.g" + - "itpod.v1.UpdateOrganizationSettingsRespo" + - "nse\"\000\022\215\001\n ListOrganizationWorkspaceClass" + - "es\0222.gitpod.v1.ListOrganizationWorkspace" + - "ClassesRequest\0323.gitpod.v1.ListOrganizat" + - "ionWorkspaceClassesResponse\"\000BQ\n\026io.gitp" + - "od.publicapi.v1Z7github.com/gitpod-io/gi" + - "tpod/components/public-api/go/v1b\006proto3" + "zation\030\007 \001(\010R\023ownedByOrganization\"\214\001\n\024Ro" + + "leRestrictionEntry\022/\n\004role\030\001 \001(\0162\033.gitpo" + + "d.v1.OrganizationRoleR\004role\022C\n\013permissio" + + "ns\030\002 \003(\0162!.gitpod.v1.OrganizationPermiss" + + "ionR\013permissions\"\362\004\n\024OrganizationSetting" + + "s\022<\n\032workspace_sharing_disabled\030\001 \001(\010R\030w" + + "orkspaceSharingDisabled\0226\n\027default_works" + + "pace_image\030\002 \001(\tR\025defaultWorkspaceImage\022" + + ":\n\031allowed_workspace_classes\030\003 \003(\tR\027allo" + + "wedWorkspaceClasses\0226\n\027restricted_editor" + + "_names\030\004 \003(\tR\025restrictedEditorNames\022o\n\026p" + + "inned_editor_versions\030\005 \003(\01329.gitpod.v1." + + "OrganizationSettings.PinnedEditorVersion" + + "sEntryR\024pinnedEditorVersions\022!\n\014default_" + + "role\030\006 \001(\tR\013defaultRole\022E\n\020timeout_setti" + + "ngs\030\007 \001(\0132\032.gitpod.v1.TimeoutSettingsR\017t" + + "imeoutSettings\022L\n\021role_restrictions\030\010 \003(" + + "\0132\037.gitpod.v1.RoleRestrictionEntryR\020role" + + "Restrictions\032G\n\031PinnedEditorVersionsEntr" + + "y\022\020\n\003key\030\001 \001(\tR\003key\022\024\n\005value\030\002 \001(\tR\005valu" + + "e:\0028\001\"\220\001\n\'ListOrganizationWorkspaceClass" + + "esRequest\022<\n\npagination\030\001 \001(\0132\034.gitpod.v" + + "1.PaginationRequestR\npagination\022\'\n\017organ" + + "ization_id\030\002 \001(\tR\016organizationId\"\261\001\n(Lis" + + "tOrganizationWorkspaceClassesResponse\022=\n" + + "\npagination\030\001 \001(\0132\035.gitpod.v1.Pagination" + + "ResponseR\npagination\022F\n\021workspace_classe" + + "s\030\002 \003(\0132\031.gitpod.v1.WorkspaceClassR\020work" + + "spaceClasses\"f\n\031UpdateOrganizationReques" + + "t\022\'\n\017organization_id\030\001 \001(\tR\016organization" + + "Id\022\027\n\004name\030\002 \001(\tH\000R\004name\210\001\001B\007\n\005_name\"Y\n\032" + + "UpdateOrganizationResponse\022;\n\014organizati" + + "on\030\001 \001(\0132\027.gitpod.v1.OrganizationR\014organ" + + "ization\"\252\001\n\017TimeoutSettings\022>\n\ninactivit" + + "y\030\001 \001(\0132\031.google.protobuf.DurationH\000R\nin" + + "activity\210\001\001\0221\n\022deny_user_timeouts\030\002 \001(\010H" + + "\001R\020denyUserTimeouts\210\001\001B\r\n\013_inactivityB\025\n" + + "\023_deny_user_timeouts\"\335\010\n!UpdateOrganizat" + + "ionSettingsRequest\022\'\n\017organization_id\030\001 " + + "\001(\tR\016organizationId\022A\n\032workspace_sharing" + + "_disabled\030\003 \001(\010H\000R\030workspaceSharingDisab" + + "led\210\001\001\022;\n\027default_workspace_image\030\004 \001(\tH" + + "\001R\025defaultWorkspaceImage\210\001\001\022:\n\031allowed_w" + + "orkspace_classes\030\005 \003(\tR\027allowedWorkspace" + + "Classes\0226\n\027restricted_editor_names\030\006 \003(\t" + + "R\025restrictedEditorNames\022H\n\036update_restri" + + "cted_editor_names\030\007 \001(\010H\002R\033updateRestric" + + "tedEditorNames\210\001\001\022|\n\026pinned_editor_versi" + + "ons\030\010 \003(\0132F.gitpod.v1.UpdateOrganization" + + "SettingsRequest.PinnedEditorVersionsEntr" + + "yR\024pinnedEditorVersions\022F\n\035update_pinned" + + "_editor_versions\030\t \001(\010H\003R\032updatePinnedEd" + + "itorVersions\210\001\001\022&\n\014default_role\030\n \001(\tH\004R" + + "\013defaultRole\210\001\001\022J\n\020timeout_settings\030\013 \001(" + + "\0132\032.gitpod.v1.TimeoutSettingsH\005R\017timeout" + + "Settings\210\001\001\022L\n\021role_restrictions\030\014 \003(\0132\037" + + ".gitpod.v1.RoleRestrictionEntryR\020roleRes" + + "trictions\022=\n\030update_role_restrictions\030\r " + + "\001(\010H\006R\026updateRoleRestrictions\210\001\001\032G\n\031Pinn" + + "edEditorVersionsEntry\022\020\n\003key\030\001 \001(\tR\003key\022" + + "\024\n\005value\030\002 \001(\tR\005value:\0028\001B\035\n\033_workspace_" + + "sharing_disabledB\032\n\030_default_workspace_i" + + "mageB!\n\037_update_restricted_editor_namesB" + + " \n\036_update_pinned_editor_versionsB\017\n\r_de" + + "fault_roleB\023\n\021_timeout_settingsB\033\n\031_upda" + + "te_role_restrictions\"a\n\"UpdateOrganizati" + + "onSettingsResponse\022;\n\010settings\030\001 \001(\0132\037.g" + + "itpod.v1.OrganizationSettingsR\010settings\"" + + "I\n\036GetOrganizationSettingsRequest\022\'\n\017org" + + "anization_id\030\001 \001(\tR\016organizationId\"^\n\037Ge" + + "tOrganizationSettingsResponse\022;\n\010setting" + + "s\030\001 \001(\0132\037.gitpod.v1.OrganizationSettings" + + "R\010settings\"/\n\031CreateOrganizationRequest\022" + + "\022\n\004name\030\001 \001(\tR\004name\"Y\n\032CreateOrganizatio" + + "nResponse\022;\n\014organization\030\001 \001(\0132\027.gitpod" + + ".v1.OrganizationR\014organization\"A\n\026GetOrg" + + "anizationRequest\022\'\n\017organization_id\030\001 \001(" + + "\tR\016organizationId\"V\n\027GetOrganizationResp" + + "onse\022;\n\014organization\030\001 \001(\0132\027.gitpod.v1.O" + + "rganizationR\014organization\"\332\001\n\030ListOrgani" + + "zationsRequest\022<\n\npagination\030\001 \001(\0132\034.git" + + "pod.v1.PaginationRequestR\npagination\022?\n\005" + + "scope\030\002 \001(\0162).gitpod.v1.ListOrganization" + + "sRequest.ScopeR\005scope\"?\n\005Scope\022\025\n\021SCOPE_" + + "UNSPECIFIED\020\000\022\020\n\014SCOPE_MEMBER\020\001\022\r\n\tSCOPE" + + "_ALL\020\002\"\231\001\n\031ListOrganizationsResponse\022=\n\r" + + "organizations\030\001 \003(\0132\027.gitpod.v1.Organiza" + + "tionR\rorganizations\022=\n\npagination\030\002 \001(\0132" + + "\035.gitpod.v1.PaginationResponseR\npaginati" + + "on\"D\n\031DeleteOrganizationRequest\022\'\n\017organ" + + "ization_id\030\001 \001(\tR\016organizationId\"\034\n\032Dele" + + "teOrganizationResponse\"K\n GetOrganizatio" + + "nInvitationRequest\022\'\n\017organization_id\030\001 " + + "\001(\tR\016organizationId\"H\n!GetOrganizationIn" + + "vitationResponse\022#\n\rinvitation_id\030\001 \001(\tR" + + "\014invitationId\">\n\027JoinOrganizationRequest" + + "\022#\n\rinvitation_id\030\001 \001(\tR\014invitationId\"C\n" + + "\030JoinOrganizationResponse\022\'\n\017organizatio" + + "n_id\030\001 \001(\tR\016organizationId\"M\n\"ResetOrgan" + + "izationInvitationRequest\022\'\n\017organization" + + "_id\030\001 \001(\tR\016organizationId\"J\n#ResetOrgani" + + "zationInvitationResponse\022#\n\rinvitation_i" + + "d\030\001 \001(\tR\014invitationId\"\207\001\n\036ListOrganizati" + + "onMembersRequest\022\'\n\017organization_id\030\001 \001(" + + "\tR\016organizationId\022<\n\npagination\030\002 \001(\0132\034." + + "gitpod.v1.PaginationRequestR\npagination\"" + + "\231\001\n\037ListOrganizationMembersResponse\0227\n\007m" + + "embers\030\001 \003(\0132\035.gitpod.v1.OrganizationMem" + + "berR\007members\022=\n\npagination\030\002 \001(\0132\035.gitpo" + + "d.v1.PaginationResponseR\npagination\"\242\001\n\037" + + "UpdateOrganizationMemberRequest\022\'\n\017organ" + + "ization_id\030\001 \001(\tR\016organizationId\022\027\n\007user" + + "_id\030\002 \001(\tR\006userId\0224\n\004role\030\003 \001(\0162\033.gitpod" + + ".v1.OrganizationRoleH\000R\004role\210\001\001B\007\n\005_role" + + "\"Y\n UpdateOrganizationMemberResponse\0225\n\006" + + "member\030\001 \001(\0132\035.gitpod.v1.OrganizationMem" + + "berR\006member\"c\n\037DeleteOrganizationMemberR" + + "equest\022\'\n\017organization_id\030\001 \001(\tR\016organiz" + + "ationId\022\027\n\007user_id\030\002 \001(\tR\006userId\"\"\n Dele" + + "teOrganizationMemberResponse*\224\001\n\020Organiz" + + "ationRole\022!\n\035ORGANIZATION_ROLE_UNSPECIFI" + + "ED\020\000\022\033\n\027ORGANIZATION_ROLE_OWNER\020\001\022\034\n\030ORG" + + "ANIZATION_ROLE_MEMBER\020\002\022\"\n\036ORGANIZATION_" + + "ROLE_COLLABORATOR\020\003*t\n\026OrganizationPermi" + + "ssion\022\'\n#ORGANIZATION_PERMISSION_UNSPECI" + + "FIED\020\000\0221\n-ORGANIZATION_PERMISSION_START_" + + "ARBITRARY_REPOS\020\0012\276\014\n\023OrganizationServic" + + "e\022c\n\022CreateOrganization\022$.gitpod.v1.Crea" + + "teOrganizationRequest\032%.gitpod.v1.Create" + + "OrganizationResponse\"\000\022Z\n\017GetOrganizatio" + + "n\022!.gitpod.v1.GetOrganizationRequest\032\".g" + + "itpod.v1.GetOrganizationResponse\"\000\022c\n\022Up" + + "dateOrganization\022$.gitpod.v1.UpdateOrgan" + + "izationRequest\032%.gitpod.v1.UpdateOrganiz" + + "ationResponse\"\000\022`\n\021ListOrganizations\022#.g" + + "itpod.v1.ListOrganizationsRequest\032$.gitp" + + "od.v1.ListOrganizationsResponse\"\000\022c\n\022Del" + + "eteOrganization\022$.gitpod.v1.DeleteOrgani" + + "zationRequest\032%.gitpod.v1.DeleteOrganiza" + + "tionResponse\"\000\022x\n\031GetOrganizationInvitat" + + "ion\022+.gitpod.v1.GetOrganizationInvitatio" + + "nRequest\032,.gitpod.v1.GetOrganizationInvi" + + "tationResponse\"\000\022]\n\020JoinOrganization\022\".g" + + "itpod.v1.JoinOrganizationRequest\032#.gitpo" + + "d.v1.JoinOrganizationResponse\"\000\022~\n\033Reset" + + "OrganizationInvitation\022-.gitpod.v1.Reset" + + "OrganizationInvitationRequest\032..gitpod.v" + + "1.ResetOrganizationInvitationResponse\"\000\022" + + "r\n\027ListOrganizationMembers\022).gitpod.v1.L" + + "istOrganizationMembersRequest\032*.gitpod.v" + + "1.ListOrganizationMembersResponse\"\000\022u\n\030U" + + "pdateOrganizationMember\022*.gitpod.v1.Upda" + + "teOrganizationMemberRequest\032+.gitpod.v1." + + "UpdateOrganizationMemberResponse\"\000\022u\n\030De" + + "leteOrganizationMember\022*.gitpod.v1.Delet" + + "eOrganizationMemberRequest\032+.gitpod.v1.D" + + "eleteOrganizationMemberResponse\"\000\022r\n\027Get" + + "OrganizationSettings\022).gitpod.v1.GetOrga" + + "nizationSettingsRequest\032*.gitpod.v1.GetO" + + "rganizationSettingsResponse\"\000\022{\n\032UpdateO" + + "rganizationSettings\022,.gitpod.v1.UpdateOr" + + "ganizationSettingsRequest\032-.gitpod.v1.Up" + + "dateOrganizationSettingsResponse\"\000\022\215\001\n L" + + "istOrganizationWorkspaceClasses\0222.gitpod" + + ".v1.ListOrganizationWorkspaceClassesRequ" + + "est\0323.gitpod.v1.ListOrganizationWorkspac" + + "eClassesResponse\"\000BQ\n\026io.gitpod.publicap" + + "i.v1Z7github.com/gitpod-io/gitpod/compon" + + "ents/public-api/go/v1b\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor .internalBuildGeneratedFileFrom(descriptorData, @@ -25919,12 +27830,18 @@ public io.gitpod.publicapi.v1.OrganizationOuterClass.DeleteOrganizationMemberRes com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_gitpod_v1_OrganizationMember_descriptor, new java.lang.String[] { "UserId", "Role", "MemberSince", "AvatarUrl", "FullName", "Email", "OwnedByOrganization", }); - internal_static_gitpod_v1_OrganizationSettings_descriptor = + internal_static_gitpod_v1_RoleRestrictionEntry_descriptor = getDescriptor().getMessageTypes().get(2); + internal_static_gitpod_v1_RoleRestrictionEntry_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_gitpod_v1_RoleRestrictionEntry_descriptor, + new java.lang.String[] { "Role", "Permissions", }); + internal_static_gitpod_v1_OrganizationSettings_descriptor = + getDescriptor().getMessageTypes().get(3); internal_static_gitpod_v1_OrganizationSettings_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_gitpod_v1_OrganizationSettings_descriptor, - new java.lang.String[] { "WorkspaceSharingDisabled", "DefaultWorkspaceImage", "AllowedWorkspaceClasses", "RestrictedEditorNames", "PinnedEditorVersions", "DefaultRole", "TimeoutSettings", }); + new java.lang.String[] { "WorkspaceSharingDisabled", "DefaultWorkspaceImage", "AllowedWorkspaceClasses", "RestrictedEditorNames", "PinnedEditorVersions", "DefaultRole", "TimeoutSettings", "RoleRestrictions", }); internal_static_gitpod_v1_OrganizationSettings_PinnedEditorVersionsEntry_descriptor = internal_static_gitpod_v1_OrganizationSettings_descriptor.getNestedTypes().get(0); internal_static_gitpod_v1_OrganizationSettings_PinnedEditorVersionsEntry_fieldAccessorTable = new @@ -25932,41 +27849,41 @@ public io.gitpod.publicapi.v1.OrganizationOuterClass.DeleteOrganizationMemberRes internal_static_gitpod_v1_OrganizationSettings_PinnedEditorVersionsEntry_descriptor, new java.lang.String[] { "Key", "Value", }); internal_static_gitpod_v1_ListOrganizationWorkspaceClassesRequest_descriptor = - getDescriptor().getMessageTypes().get(3); + getDescriptor().getMessageTypes().get(4); internal_static_gitpod_v1_ListOrganizationWorkspaceClassesRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_gitpod_v1_ListOrganizationWorkspaceClassesRequest_descriptor, new java.lang.String[] { "Pagination", "OrganizationId", }); internal_static_gitpod_v1_ListOrganizationWorkspaceClassesResponse_descriptor = - getDescriptor().getMessageTypes().get(4); + getDescriptor().getMessageTypes().get(5); internal_static_gitpod_v1_ListOrganizationWorkspaceClassesResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_gitpod_v1_ListOrganizationWorkspaceClassesResponse_descriptor, new java.lang.String[] { "Pagination", "WorkspaceClasses", }); internal_static_gitpod_v1_UpdateOrganizationRequest_descriptor = - getDescriptor().getMessageTypes().get(5); + getDescriptor().getMessageTypes().get(6); internal_static_gitpod_v1_UpdateOrganizationRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_gitpod_v1_UpdateOrganizationRequest_descriptor, new java.lang.String[] { "OrganizationId", "Name", }); internal_static_gitpod_v1_UpdateOrganizationResponse_descriptor = - getDescriptor().getMessageTypes().get(6); + getDescriptor().getMessageTypes().get(7); internal_static_gitpod_v1_UpdateOrganizationResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_gitpod_v1_UpdateOrganizationResponse_descriptor, new java.lang.String[] { "Organization", }); internal_static_gitpod_v1_TimeoutSettings_descriptor = - getDescriptor().getMessageTypes().get(7); + getDescriptor().getMessageTypes().get(8); internal_static_gitpod_v1_TimeoutSettings_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_gitpod_v1_TimeoutSettings_descriptor, new java.lang.String[] { "Inactivity", "DenyUserTimeouts", }); internal_static_gitpod_v1_UpdateOrganizationSettingsRequest_descriptor = - getDescriptor().getMessageTypes().get(8); + getDescriptor().getMessageTypes().get(9); internal_static_gitpod_v1_UpdateOrganizationSettingsRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_gitpod_v1_UpdateOrganizationSettingsRequest_descriptor, - new java.lang.String[] { "OrganizationId", "WorkspaceSharingDisabled", "DefaultWorkspaceImage", "AllowedWorkspaceClasses", "RestrictedEditorNames", "UpdateRestrictedEditorNames", "PinnedEditorVersions", "UpdatePinnedEditorVersions", "DefaultRole", "TimeoutSettings", }); + new java.lang.String[] { "OrganizationId", "WorkspaceSharingDisabled", "DefaultWorkspaceImage", "AllowedWorkspaceClasses", "RestrictedEditorNames", "UpdateRestrictedEditorNames", "PinnedEditorVersions", "UpdatePinnedEditorVersions", "DefaultRole", "TimeoutSettings", "RoleRestrictions", "UpdateRoleRestrictions", }); internal_static_gitpod_v1_UpdateOrganizationSettingsRequest_PinnedEditorVersionsEntry_descriptor = internal_static_gitpod_v1_UpdateOrganizationSettingsRequest_descriptor.getNestedTypes().get(0); internal_static_gitpod_v1_UpdateOrganizationSettingsRequest_PinnedEditorVersionsEntry_fieldAccessorTable = new @@ -25974,139 +27891,139 @@ public io.gitpod.publicapi.v1.OrganizationOuterClass.DeleteOrganizationMemberRes internal_static_gitpod_v1_UpdateOrganizationSettingsRequest_PinnedEditorVersionsEntry_descriptor, new java.lang.String[] { "Key", "Value", }); internal_static_gitpod_v1_UpdateOrganizationSettingsResponse_descriptor = - getDescriptor().getMessageTypes().get(9); + getDescriptor().getMessageTypes().get(10); internal_static_gitpod_v1_UpdateOrganizationSettingsResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_gitpod_v1_UpdateOrganizationSettingsResponse_descriptor, new java.lang.String[] { "Settings", }); internal_static_gitpod_v1_GetOrganizationSettingsRequest_descriptor = - getDescriptor().getMessageTypes().get(10); + getDescriptor().getMessageTypes().get(11); internal_static_gitpod_v1_GetOrganizationSettingsRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_gitpod_v1_GetOrganizationSettingsRequest_descriptor, new java.lang.String[] { "OrganizationId", }); internal_static_gitpod_v1_GetOrganizationSettingsResponse_descriptor = - getDescriptor().getMessageTypes().get(11); + getDescriptor().getMessageTypes().get(12); internal_static_gitpod_v1_GetOrganizationSettingsResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_gitpod_v1_GetOrganizationSettingsResponse_descriptor, new java.lang.String[] { "Settings", }); internal_static_gitpod_v1_CreateOrganizationRequest_descriptor = - getDescriptor().getMessageTypes().get(12); + getDescriptor().getMessageTypes().get(13); internal_static_gitpod_v1_CreateOrganizationRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_gitpod_v1_CreateOrganizationRequest_descriptor, new java.lang.String[] { "Name", }); internal_static_gitpod_v1_CreateOrganizationResponse_descriptor = - getDescriptor().getMessageTypes().get(13); + getDescriptor().getMessageTypes().get(14); internal_static_gitpod_v1_CreateOrganizationResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_gitpod_v1_CreateOrganizationResponse_descriptor, new java.lang.String[] { "Organization", }); internal_static_gitpod_v1_GetOrganizationRequest_descriptor = - getDescriptor().getMessageTypes().get(14); + getDescriptor().getMessageTypes().get(15); internal_static_gitpod_v1_GetOrganizationRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_gitpod_v1_GetOrganizationRequest_descriptor, new java.lang.String[] { "OrganizationId", }); internal_static_gitpod_v1_GetOrganizationResponse_descriptor = - getDescriptor().getMessageTypes().get(15); + getDescriptor().getMessageTypes().get(16); internal_static_gitpod_v1_GetOrganizationResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_gitpod_v1_GetOrganizationResponse_descriptor, new java.lang.String[] { "Organization", }); internal_static_gitpod_v1_ListOrganizationsRequest_descriptor = - getDescriptor().getMessageTypes().get(16); + getDescriptor().getMessageTypes().get(17); internal_static_gitpod_v1_ListOrganizationsRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_gitpod_v1_ListOrganizationsRequest_descriptor, new java.lang.String[] { "Pagination", "Scope", }); internal_static_gitpod_v1_ListOrganizationsResponse_descriptor = - getDescriptor().getMessageTypes().get(17); + getDescriptor().getMessageTypes().get(18); internal_static_gitpod_v1_ListOrganizationsResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_gitpod_v1_ListOrganizationsResponse_descriptor, new java.lang.String[] { "Organizations", "Pagination", }); internal_static_gitpod_v1_DeleteOrganizationRequest_descriptor = - getDescriptor().getMessageTypes().get(18); + getDescriptor().getMessageTypes().get(19); internal_static_gitpod_v1_DeleteOrganizationRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_gitpod_v1_DeleteOrganizationRequest_descriptor, new java.lang.String[] { "OrganizationId", }); internal_static_gitpod_v1_DeleteOrganizationResponse_descriptor = - getDescriptor().getMessageTypes().get(19); + getDescriptor().getMessageTypes().get(20); internal_static_gitpod_v1_DeleteOrganizationResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_gitpod_v1_DeleteOrganizationResponse_descriptor, new java.lang.String[] { }); internal_static_gitpod_v1_GetOrganizationInvitationRequest_descriptor = - getDescriptor().getMessageTypes().get(20); + getDescriptor().getMessageTypes().get(21); internal_static_gitpod_v1_GetOrganizationInvitationRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_gitpod_v1_GetOrganizationInvitationRequest_descriptor, new java.lang.String[] { "OrganizationId", }); internal_static_gitpod_v1_GetOrganizationInvitationResponse_descriptor = - getDescriptor().getMessageTypes().get(21); + getDescriptor().getMessageTypes().get(22); internal_static_gitpod_v1_GetOrganizationInvitationResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_gitpod_v1_GetOrganizationInvitationResponse_descriptor, new java.lang.String[] { "InvitationId", }); internal_static_gitpod_v1_JoinOrganizationRequest_descriptor = - getDescriptor().getMessageTypes().get(22); + getDescriptor().getMessageTypes().get(23); internal_static_gitpod_v1_JoinOrganizationRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_gitpod_v1_JoinOrganizationRequest_descriptor, new java.lang.String[] { "InvitationId", }); internal_static_gitpod_v1_JoinOrganizationResponse_descriptor = - getDescriptor().getMessageTypes().get(23); + getDescriptor().getMessageTypes().get(24); internal_static_gitpod_v1_JoinOrganizationResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_gitpod_v1_JoinOrganizationResponse_descriptor, new java.lang.String[] { "OrganizationId", }); internal_static_gitpod_v1_ResetOrganizationInvitationRequest_descriptor = - getDescriptor().getMessageTypes().get(24); + getDescriptor().getMessageTypes().get(25); internal_static_gitpod_v1_ResetOrganizationInvitationRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_gitpod_v1_ResetOrganizationInvitationRequest_descriptor, new java.lang.String[] { "OrganizationId", }); internal_static_gitpod_v1_ResetOrganizationInvitationResponse_descriptor = - getDescriptor().getMessageTypes().get(25); + getDescriptor().getMessageTypes().get(26); internal_static_gitpod_v1_ResetOrganizationInvitationResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_gitpod_v1_ResetOrganizationInvitationResponse_descriptor, new java.lang.String[] { "InvitationId", }); internal_static_gitpod_v1_ListOrganizationMembersRequest_descriptor = - getDescriptor().getMessageTypes().get(26); + getDescriptor().getMessageTypes().get(27); internal_static_gitpod_v1_ListOrganizationMembersRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_gitpod_v1_ListOrganizationMembersRequest_descriptor, new java.lang.String[] { "OrganizationId", "Pagination", }); internal_static_gitpod_v1_ListOrganizationMembersResponse_descriptor = - getDescriptor().getMessageTypes().get(27); + getDescriptor().getMessageTypes().get(28); internal_static_gitpod_v1_ListOrganizationMembersResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_gitpod_v1_ListOrganizationMembersResponse_descriptor, new java.lang.String[] { "Members", "Pagination", }); internal_static_gitpod_v1_UpdateOrganizationMemberRequest_descriptor = - getDescriptor().getMessageTypes().get(28); + getDescriptor().getMessageTypes().get(29); internal_static_gitpod_v1_UpdateOrganizationMemberRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_gitpod_v1_UpdateOrganizationMemberRequest_descriptor, new java.lang.String[] { "OrganizationId", "UserId", "Role", }); internal_static_gitpod_v1_UpdateOrganizationMemberResponse_descriptor = - getDescriptor().getMessageTypes().get(29); + getDescriptor().getMessageTypes().get(30); internal_static_gitpod_v1_UpdateOrganizationMemberResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_gitpod_v1_UpdateOrganizationMemberResponse_descriptor, new java.lang.String[] { "Member", }); internal_static_gitpod_v1_DeleteOrganizationMemberRequest_descriptor = - getDescriptor().getMessageTypes().get(30); + getDescriptor().getMessageTypes().get(31); internal_static_gitpod_v1_DeleteOrganizationMemberRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_gitpod_v1_DeleteOrganizationMemberRequest_descriptor, new java.lang.String[] { "OrganizationId", "UserId", }); internal_static_gitpod_v1_DeleteOrganizationMemberResponse_descriptor = - getDescriptor().getMessageTypes().get(31); + getDescriptor().getMessageTypes().get(32); internal_static_gitpod_v1_DeleteOrganizationMemberResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_gitpod_v1_DeleteOrganizationMemberResponse_descriptor, diff --git a/components/public-api/typescript-common/src/public-api-converter.ts b/components/public-api/typescript-common/src/public-api-converter.ts index aac5ae1ac8c09b..723c3f5d11cb8c 100644 --- a/components/public-api/typescript-common/src/public-api-converter.ts +++ b/components/public-api/typescript-common/src/public-api-converter.ts @@ -43,7 +43,6 @@ import { import { AuditLog as AuditLogProtocol } from "@gitpod/gitpod-protocol/lib/audit-log"; import { OrgMemberInfo, - OrgMemberRole, OrganizationSettings as OrganizationSettingsProtocol, PartialProject, PrebuildSettings as PrebuildSettingsProtocol, @@ -51,6 +50,8 @@ import { Project, ProjectSettings, Organization as ProtocolOrganization, + OrgMemberPermission, + OrgMemberRole, } from "@gitpod/gitpod-protocol/lib/teams-projects-protocol"; import type { DeepPartial } from "@gitpod/gitpod-protocol/lib/util/deep-partial"; import { parseGoDurationToMs } from "@gitpod/gitpod-protocol/lib/util/timeutil"; @@ -108,6 +109,7 @@ import { import { Organization, OrganizationMember, + OrganizationPermission, OrganizationRole, OrganizationSettings, } from "@gitpod/public-api/lib/gitpod/v1/organization_pb"; @@ -1073,6 +1075,10 @@ export class PublicAPIConverter { : undefined, denyUserTimeouts: settings.timeoutSettings?.denyUserTimeouts, }, + roleRestrictions: Object.entries(settings.roleRestrictions ?? {}).map(([role, permissions]) => ({ + role: this.toOrgMemberRole(role as OrgMemberRole), + permissions: permissions.map((permission) => this.toOrganizationPermission(permission)), + })), }); } @@ -1394,6 +1400,24 @@ export class PublicAPIConverter { }); } + fromOrganizationPermission = (permission: OrganizationPermission): OrgMemberPermission => { + switch (permission) { + case OrganizationPermission.START_ARBITRARY_REPOS: + return "start_arbitrary_repositories"; + default: + throw new Error(`unknown org member permission ${permission}`); + } + }; + + toOrganizationPermission = (permission: OrgMemberPermission): OrganizationPermission => { + switch (permission) { + case "start_arbitrary_repositories": + return OrganizationPermission.START_ARBITRARY_REPOS; + default: + throw new Error(`unknown org member permission ${permission}`); + } + }; + toSuggestedRepository(r: SuggestedRepositoryProtocol): SuggestedRepository { return new SuggestedRepository({ url: r.url, diff --git a/components/public-api/typescript/src/gitpod/v1/organization_pb.ts b/components/public-api/typescript/src/gitpod/v1/organization_pb.ts index e3fa2a5c09aa72..6805d50644bcf5 100644 --- a/components/public-api/typescript/src/gitpod/v1/organization_pb.ts +++ b/components/public-api/typescript/src/gitpod/v1/organization_pb.ts @@ -46,6 +46,28 @@ proto3.util.setEnumType(OrganizationRole, "gitpod.v1.OrganizationRole", [ { no: 3, name: "ORGANIZATION_ROLE_COLLABORATOR" }, ]); +/** + * OrganizationPermissions define permissions that are restrictable using RoleRestrictions + * + * @generated from enum gitpod.v1.OrganizationPermission + */ +export enum OrganizationPermission { + /** + * @generated from enum value: ORGANIZATION_PERMISSION_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * @generated from enum value: ORGANIZATION_PERMISSION_START_ARBITRARY_REPOS = 1; + */ + START_ARBITRARY_REPOS = 1, +} +// Retrieve enum metadata with: proto3.getEnumType(OrganizationPermission) +proto3.util.setEnumType(OrganizationPermission, "gitpod.v1.OrganizationPermission", [ + { no: 0, name: "ORGANIZATION_PERMISSION_UNSPECIFIED" }, + { no: 1, name: "ORGANIZATION_PERMISSION_START_ARBITRARY_REPOS" }, +]); + /** * @generated from message gitpod.v1.Organization */ @@ -174,6 +196,53 @@ export class OrganizationMember extends Message { } } +/** + * @generated from message gitpod.v1.RoleRestrictionEntry + */ +export class RoleRestrictionEntry extends Message { + /** + * role is the role that is restricted + * + * @generated from field: gitpod.v1.OrganizationRole role = 1; + */ + role = OrganizationRole.UNSPECIFIED; + + /** + * permissions are the permissions that are restricted + * + * @generated from field: repeated gitpod.v1.OrganizationPermission permissions = 2; + */ + permissions: OrganizationPermission[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "gitpod.v1.RoleRestrictionEntry"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "role", kind: "enum", T: proto3.getEnumType(OrganizationRole) }, + { no: 2, name: "permissions", kind: "enum", T: proto3.getEnumType(OrganizationPermission), repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): RoleRestrictionEntry { + return new RoleRestrictionEntry().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): RoleRestrictionEntry { + return new RoleRestrictionEntry().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): RoleRestrictionEntry { + return new RoleRestrictionEntry().fromJsonString(jsonString, options); + } + + static equals(a: RoleRestrictionEntry | PlainMessage | undefined, b: RoleRestrictionEntry | PlainMessage | undefined): boolean { + return proto3.util.equals(RoleRestrictionEntry, a, b); + } +} + /** * @generated from message gitpod.v1.OrganizationSettings */ @@ -213,6 +282,11 @@ export class OrganizationSettings extends Message { */ timeoutSettings?: TimeoutSettings; + /** + * @generated from field: repeated gitpod.v1.RoleRestrictionEntry role_restrictions = 8; + */ + roleRestrictions: RoleRestrictionEntry[] = []; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); @@ -228,6 +302,7 @@ export class OrganizationSettings extends Message { { no: 5, name: "pinned_editor_versions", kind: "map", K: 9 /* ScalarType.STRING */, V: {kind: "scalar", T: 9 /* ScalarType.STRING */} }, { no: 6, name: "default_role", kind: "scalar", T: 9 /* ScalarType.STRING */ }, { no: 7, name: "timeout_settings", kind: "message", T: TimeoutSettings }, + { no: 8, name: "role_restrictions", kind: "message", T: RoleRestrictionEntry, repeated: true }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): OrganizationSettings { @@ -546,6 +621,18 @@ export class UpdateOrganizationSettingsRequest extends Message) { super(); proto3.util.initPartial(data, this); @@ -564,6 +651,8 @@ export class UpdateOrganizationSettingsRequest extends Message): UpdateOrganizationSettingsRequest { diff --git a/components/server/src/api/organization-service-api.ts b/components/server/src/api/organization-service-api.ts index 2a9136e4b5ce5f..a946c4c30bbe7b 100644 --- a/components/server/src/api/organization-service-api.ts +++ b/components/server/src/api/organization-service-api.ts @@ -293,6 +293,23 @@ export class OrganizationServiceAPI implements ServiceImpl 0 && !req.updateRoleRestrictions) { + throw new ApplicationError( + ErrorCodes.BAD_REQUEST, + "updateRoleRestrictions is required to be true when updating roleRestrictions", + ); + } + if (req.updateRoleRestrictions) { + update.roleRestrictions = update.roleRestrictions ?? {}; + for (const roleRestriction of req.roleRestrictions) { + const role = this.apiConverter.fromOrgMemberRole(roleRestriction.role); + const permissions = roleRestriction.permissions.map((p) => + this.apiConverter.fromOrganizationPermission(p), + ); + update.roleRestrictions[role] = permissions; + } + } + if (Object.keys(update).length === 0) { throw new ApplicationError(ErrorCodes.BAD_REQUEST, "nothing to update"); } diff --git a/components/server/src/orgs/organization-service.ts b/components/server/src/orgs/organization-service.ts index 6a415b5c3abe33..a163262c0dbad5 100644 --- a/components/server/src/orgs/organization-service.ts +++ b/components/server/src/orgs/organization-service.ts @@ -7,12 +7,12 @@ import { BUILTIN_INSTLLATION_ADMIN_USER_ID, TeamDB, UserDB } from "@gitpod/gitpod-db/lib"; import { OrgMemberInfo, - OrgMemberRole, Organization, OrganizationSettings, TeamMemberRole, TeamMembershipInvite, WorkspaceTimeoutDuration, + OrgMemberRole, } from "@gitpod/gitpod-protocol"; import { IAnalyticsWriter } from "@gitpod/gitpod-protocol/lib/analytics"; import { ApplicationError, ErrorCodes } from "@gitpod/gitpod-protocol/lib/messaging/error"; @@ -533,6 +533,10 @@ export class OrganizationService { inactivity: settings.timeoutSettings?.inactivity, }; } + if (settings.roleRestrictions) { + result.roleRestrictions = settings.roleRestrictions; + } + return result; } diff --git a/components/server/src/workspace/workspace-starter.ts b/components/server/src/workspace/workspace-starter.ts index 8ad46c7d1374ef..9ad55f1f4b0fb3 100644 --- a/components/server/src/workspace/workspace-starter.ts +++ b/components/server/src/workspace/workspace-starter.ts @@ -19,6 +19,7 @@ import { DBWithTracing, ProjectDB, RedisPublisher, + TeamDB, TracedUserDB, TracedWorkspaceDB, UserDB, @@ -228,6 +229,7 @@ export class WorkspaceStarter { @inject(IAnalyticsWriter) private readonly analytics: IAnalyticsWriter, @inject(OneTimeSecretServer) private readonly otsServer: OneTimeSecretServer, @inject(ProjectDB) private readonly projectDB: ProjectDB, + @inject(TeamDB) private readonly orgDB: TeamDB, @inject(BlockedRepositoryDB) private readonly blockedRepositoryDB: BlockedRepositoryDB, @inject(EntitlementService) private readonly entitlementService: EntitlementService, @inject(RedisMutex) private readonly redisMutex: RedisMutex, @@ -257,6 +259,7 @@ export class WorkspaceStarter { let instanceId: string | undefined = undefined; try { + await this.checkStartPermission(user, workspace, project); await this.checkBlockedRepository(user, workspace); // Some workspaces do not have an image source. @@ -543,6 +546,35 @@ export class WorkspaceStarter { } } + private async checkStartPermission(user: User, workspace: Workspace, project?: Project) { + // explicit project + if (project) { + return; + } + + const { organizationId, contextURL } = workspace; + + const membership = await this.orgDB.findTeamMembership(user.id, organizationId); + if (!membership) { + return; + } + + // check if user's role is restricted from starting arbitrary repositories + const organizationSettings = await this.orgService.getSettings(user.id, organizationId); + if (!organizationSettings?.roleRestrictions?.[membership.role]?.includes("start_arbitrary_repositories")) { + return; + } + + // implicit project (existing on the same clone URL) + const projects = await this.projectService.findProjectsByCloneUrl(user.id, contextURL, organizationId); + if (projects.length === 0) { + throw new ApplicationError( + ErrorCodes.PRECONDITION_FAILED, + "Unable to start workspace: This repository has not been imported. Your role is restricted to using only imported repositories for workspace creation. Please contact your organization owner to import this repository or modify permissions.", + ); + } + } + // Note: this function does not expect to be awaited for by its caller. This means that it takes care of error handling itself. private async actuallyStartWorkspace( ctx: TraceContext,