diff --git a/components/dashboard/src/components/AuthorizeGit.tsx b/components/dashboard/src/components/AuthorizeGit.tsx index b53d2a7f59679d..96e945b1aa8cd9 100644 --- a/components/dashboard/src/components/AuthorizeGit.tsx +++ b/components/dashboard/src/components/AuthorizeGit.tsx @@ -8,7 +8,6 @@ import { AuthProviderInfo } from "@gitpod/gitpod-protocol"; import { FC, useCallback, useContext } from "react"; import { Link } from "react-router-dom"; import { useAuthProviders } from "../data/auth-providers/auth-provider-query"; -import { useCurrentOrg } from "../data/organizations/orgs-query"; import { openAuthorizeWindow } from "../provider-utils"; import { getGitpodService } from "../service/service"; import { UserContext, useCurrentUser } from "../user-context"; @@ -16,6 +15,7 @@ import { Button } from "./Button"; import { Heading2, Heading3, Subheading } from "./typography/headings"; import classNames from "classnames"; import { iconForAuthProvider, simplifyProviderName } from "../provider-utils"; +import { useIsOwner } from "../data/organizations/members-query"; export function useNeedsGitAuthorization() { const authProviders = useAuthProviders(); @@ -28,7 +28,7 @@ export function useNeedsGitAuthorization() { export const AuthorizeGit: FC<{ className?: string }> = ({ className }) => { const { setUser } = useContext(UserContext); - const org = useCurrentOrg(); + const owner = useIsOwner(); const authProviders = useAuthProviders(); const updateUser = useCallback(() => { getGitpodService().server.getLoggedInUser().then(setUser); @@ -57,7 +57,7 @@ export const AuthorizeGit: FC<{ className?: string }> = ({ className }) => { {verifiedProviders.length === 0 ? ( <> No Git integrations - {!!org.data?.isOwner ? ( + {!!owner ? (
You need to configure at least one Git integration. diff --git a/components/dashboard/src/components/PendingChangesDropdown.tsx b/components/dashboard/src/components/PendingChangesDropdown.tsx index 63db8cee840c85..38ba81981694cb 100644 --- a/components/dashboard/src/components/PendingChangesDropdown.tsx +++ b/components/dashboard/src/components/PendingChangesDropdown.tsx @@ -6,7 +6,7 @@ import ContextMenu, { ContextMenuEntry } from "./ContextMenu"; import CaretDown from "../icons/CaretDown.svg"; -import { WorkspaceGitStatus } from "@gitpod/public-api/lib/gitpod/experimental/v2/workspace_pb"; +import { WorkspaceGitStatus } from "@gitpod/public-api/lib/gitpod/v1/workspace_pb"; export default function PendingChangesDropdown({ gitStatus }: { gitStatus?: WorkspaceGitStatus }) { const headingStyle = "text-gray-500 dark:text-gray-400 text-left"; diff --git a/components/dashboard/src/components/PrebuildLogs.tsx b/components/dashboard/src/components/PrebuildLogs.tsx index 27b06ed954ee60..077a512550c612 100644 --- a/components/dashboard/src/components/PrebuildLogs.tsx +++ b/components/dashboard/src/components/PrebuildLogs.tsx @@ -16,7 +16,7 @@ import { import { getGitpodService } from "../service/service"; import { PrebuildStatus } from "../projects/Prebuilds"; import { converter, workspaceClient } from "../service/public-api"; -import { GetWorkspaceRequest, WorkspacePhase_Phase } from "@gitpod/public-api/lib/gitpod/experimental/v2/workspace_pb"; +import { GetWorkspaceRequest, WorkspacePhase_Phase } from "@gitpod/public-api/lib/gitpod/v1/workspace_pb"; const WorkspaceLogs = React.lazy(() => import("./WorkspaceLogs")); diff --git a/components/dashboard/src/components/UsageBasedBillingConfig.tsx b/components/dashboard/src/components/UsageBasedBillingConfig.tsx index 5e1efff651177f..008319bec108d6 100644 --- a/components/dashboard/src/components/UsageBasedBillingConfig.tsx +++ b/components/dashboard/src/components/UsageBasedBillingConfig.tsx @@ -21,6 +21,7 @@ import { Button } from "./Button"; import { useCreateHoldPaymentIntentMutation } from "../data/billing/create-hold-payment-intent-mutation"; import { useToast } from "./toasts/Toasts"; import { ProgressBar } from "./ProgressBar"; +import { useListOrganizationMembers } from "../data/organizations/members-query"; const BASE_USAGE_LIMIT_FOR_STRIPE_USERS = 1000; @@ -33,8 +34,9 @@ let didAlreadyCallSubscribe = false; export default function UsageBasedBillingConfig({ hideSubheading = false }: Props) { const currentOrg = useCurrentOrg().data; - const attrId = currentOrg ? AttributionId.create(currentOrg) : undefined; + const attrId = currentOrg ? AttributionId.createFromOrganizationId(currentOrg.id) : undefined; const attributionId = attrId && AttributionId.render(attrId); + const members = useListOrganizationMembers().data; const [showUpdateLimitModal, setShowUpdateLimitModal] = useState(false); const [stripeSubscriptionId, setStripeSubscriptionId] = useState(); const [isLoadingStripeSubscription, setIsLoadingStripeSubscription] = useState(true); @@ -155,7 +157,7 @@ export default function UsageBasedBillingConfig({ hideSubheading = false }: Prop // FIXME: Should we ask the customer to confirm or edit this default limit? let limit = BASE_USAGE_LIMIT_FOR_STRIPE_USERS; if (attrId?.kind === "team" && currentOrg) { - limit = BASE_USAGE_LIMIT_FOR_STRIPE_USERS * currentOrg.members.length; + limit = BASE_USAGE_LIMIT_FOR_STRIPE_USERS * (members?.length || 0); } const newLimit = await getGitpodService().server.subscribeToStripe( attributionId, @@ -190,7 +192,7 @@ export default function UsageBasedBillingConfig({ hideSubheading = false }: Prop ); } }, - [attrId?.kind, attributionId, currentOrg, location.pathname, refreshSubscriptionDetails], + [members, attrId?.kind, attributionId, currentOrg, location.pathname, refreshSubscriptionDetails], ); const showSpinner = !attributionId || isLoadingStripeSubscription || isCreatingSubscription; diff --git a/components/dashboard/src/data/organizations/create-org-mutation.ts b/components/dashboard/src/data/organizations/create-org-mutation.ts index e55efcd776038d..1ad3ac9221695b 100644 --- a/components/dashboard/src/data/organizations/create-org-mutation.ts +++ b/components/dashboard/src/data/organizations/create-org-mutation.ts @@ -4,10 +4,10 @@ * See License.AGPL.txt in the project root for license information. */ -import { Organization } from "@gitpod/gitpod-protocol"; import { useMutation } from "@tanstack/react-query"; import { useOrganizationsInvalidator } from "./orgs-query"; -import { publicApiTeamToProtocol, teamsService } from "../../service/public-api"; +import { organizationClient } from "../../service/public-api"; +import { Organization } from "@gitpod/public-api/lib/gitpod/v1/organization_pb"; type CreateOrgArgs = Pick; @@ -16,13 +16,12 @@ export const useCreateOrgMutation = () => { return useMutation({ mutationFn: async ({ name }) => { - const { team } = await teamsService.createTeam({ name }); - if (!team) { - throw new Error("Error creating team"); + const { organization } = await organizationClient.createOrganization({ name }); + if (!organization) { + throw new Error("Error creating organization"); } - const org = publicApiTeamToProtocol(team); - return org; + return organization; }, onSuccess(newOrg) { invalidateOrgs(); diff --git a/components/dashboard/src/data/organizations/invite-query.ts b/components/dashboard/src/data/organizations/invite-query.ts new file mode 100644 index 00000000000000..1039dd556d58ff --- /dev/null +++ b/components/dashboard/src/data/organizations/invite-query.ts @@ -0,0 +1,58 @@ +/** + * Copyright (c) 2023 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 { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; +import { useCallback } from "react"; +import { organizationClient } from "../../service/public-api"; +import { useCurrentOrg } from "./orgs-query"; + +export function useInviteInvalidator() { + const organizationId = useCurrentOrg().data?.id; + const queryClient = useQueryClient(); + return useCallback(() => { + queryClient.invalidateQueries(getQueryKey(organizationId)); + }, [organizationId, queryClient]); +} + +export function useInvitationId() { + const organizationId = useCurrentOrg().data?.id; + const query = useQuery( + getQueryKey(organizationId), + async () => { + const response = await organizationClient.getOrganizationInvitation({ + organizationId, + }); + return response.invitationId; + }, + { + enabled: !!organizationId, + }, + ); + return query; +} + +export function useResetInvitationId() { + const invalidate = useInviteInvalidator(); + return useMutation({ + mutationFn: async (orgId) => { + if (!orgId) { + throw new Error("No current organization selected"); + } + + await organizationClient.resetOrganizationInvitation({ + organizationId: orgId, + }); + //TODO update useInvitation Query + }, + onSuccess(updatedOrg) { + invalidate(); + }, + }); +} + +function getQueryKey(organizationId: string | undefined) { + return ["invitationId", organizationId || "undefined"]; +} diff --git a/components/dashboard/src/data/organizations/members-query.ts b/components/dashboard/src/data/organizations/members-query.ts new file mode 100644 index 00000000000000..02508809cae162 --- /dev/null +++ b/components/dashboard/src/data/organizations/members-query.ts @@ -0,0 +1,54 @@ +/** + * Copyright (c) 2023 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 { OrganizationMember, OrganizationRole } from "@gitpod/public-api/lib/gitpod/v1/organization_pb"; +import { useQuery, useQueryClient } from "@tanstack/react-query"; +import { useCallback, useMemo } from "react"; +import { organizationClient } from "../../service/public-api"; +import { useCurrentUser } from "../../user-context"; +import { useCurrentOrg } from "./orgs-query"; + +export function useOrganizationMembersInvalidator() { + const organizationId = useCurrentOrg().data?.id; + const queryClient = useQueryClient(); + return useCallback(() => { + queryClient.invalidateQueries(getQueryKey(organizationId)); + }, [organizationId, queryClient]); +} + +export function useListOrganizationMembers() { + const organizationId = useCurrentOrg().data?.id; + const query = useQuery( + getQueryKey(organizationId), + async () => { + const response = await organizationClient.listOrganizationMembers({ + organizationId, + pagination: { + pageSize: 1000, + }, + }); + return response.members; + }, + { + staleTime: 1000 * 60 * 5, // 5 minutes + enabled: !!organizationId, + }, + ); + return query; +} + +export function useIsOwner(): boolean { + const user = useCurrentUser(); + const members = useListOrganizationMembers(); + const isOwner = useMemo(() => { + return members?.data?.some((m) => m.userId === user?.id && m.role === OrganizationRole.OWNER); + }, [members?.data, user?.id]); + return !!isOwner; +} + +function getQueryKey(organizationId: string | undefined) { + return ["listOrganizationMembers", organizationId || "undefined"]; +} diff --git a/components/dashboard/src/data/organizations/org-settings-query.ts b/components/dashboard/src/data/organizations/org-settings-query.ts index 69239977394a8d..f88a0f17365b87 100644 --- a/components/dashboard/src/data/organizations/org-settings-query.ts +++ b/components/dashboard/src/data/organizations/org-settings-query.ts @@ -4,29 +4,38 @@ * See License.AGPL.txt in the project root for license information. */ -import { OrganizationSettings } from "@gitpod/gitpod-protocol"; -import { useQuery } from "@tanstack/react-query"; -import { getGitpodService } from "../../service/service"; +import { useQuery, useQueryClient } from "@tanstack/react-query"; +import { organizationClient } from "../../service/public-api"; +import { OrganizationSettings } from "@gitpod/public-api/lib/gitpod/v1/organization_pb"; +import { useCallback } from "react"; import { useCurrentOrg } from "./orgs-query"; -export type OrgSettingsResult = OrganizationSettings; +export function useOrgSettingsQueryInvalidator() { + const organizationId = useCurrentOrg().data?.id; + const queryClient = useQueryClient(); + return useCallback(() => { + queryClient.invalidateQueries(getQueryKey(organizationId)); + }, [organizationId, queryClient]); +} -export const useOrgSettingsQuery = () => { - const org = useCurrentOrg().data; - - return useQuery({ - queryKey: getOrgSettingsQueryKey(org?.id ?? ""), - staleTime: 1000 * 60 * 1, // 1 minute - queryFn: async () => { - if (!org) { +export function useOrgSettingsQuery() { + const organizationId = useCurrentOrg().data?.id; + return useQuery( + getQueryKey(organizationId), + async () => { + if (!organizationId) { throw new Error("No org selected."); } - const settings = await getGitpodService().server.getOrgSettings(org.id); - return settings || null; + const settings = await organizationClient.getOrganizationSettings({ organizationId }); + return settings.settings || new OrganizationSettings(); + }, + { + enabled: !!organizationId, }, - enabled: !!org, - }); -}; + ); +} -export const getOrgSettingsQueryKey = (teamId: string) => ["org-settings", { teamId }]; +function getQueryKey(organizationId?: string) { + return ["getOrganizationSettings", organizationId || "undefined"]; +} diff --git a/components/dashboard/src/data/organizations/orgs-query.ts b/components/dashboard/src/data/organizations/orgs-query.ts index a24c11186b2965..45bb77d85c3d98 100644 --- a/components/dashboard/src/data/organizations/orgs-query.ts +++ b/components/dashboard/src/data/organizations/orgs-query.ts @@ -4,19 +4,14 @@ * See License.AGPL.txt in the project root for license information. */ -import { Organization, OrgMemberInfo, User } from "@gitpod/gitpod-protocol"; +import { User } from "@gitpod/gitpod-protocol"; import { useQuery, useQueryClient } from "@tanstack/react-query"; import { useCallback } from "react"; import { useLocation } from "react-router"; -import { publicApiTeamMembersToProtocol, publicApiTeamToProtocol, teamsService } from "../../service/public-api"; +import { organizationClient } from "../../service/public-api"; import { useCurrentUser } from "../../user-context"; import { noPersistence } from "../setup"; - -export interface OrganizationInfo extends Organization { - members: OrgMemberInfo[]; - isOwner: boolean; - invitationId?: string; -} +import { Organization } from "@gitpod/public-api/lib/gitpod/v1/organization_pb"; export function useOrganizationsInvalidator() { const user = useCurrentUser(); @@ -29,7 +24,7 @@ export function useOrganizationsInvalidator() { export function useOrganizations() { const user = useCurrentUser(); - const query = useQuery( + const query = useQuery( getQueryKey(user), async () => { console.log("Fetching orgs... " + JSON.stringify(getQueryKey(user))); @@ -38,19 +33,8 @@ export function useOrganizations() { return []; } - const response = await teamsService.listTeams({}); - const result: OrganizationInfo[] = []; - for (const org of response.teams) { - const members = publicApiTeamMembersToProtocol(org.members || []); - const isOwner = members.some((m) => m.role === "owner" && m.userId === user?.id); - result.push({ - ...publicApiTeamToProtocol(org), - members, - isOwner, - invitationId: org.teamInvitation?.id, - }); - } - return result; + const response = await organizationClient.listOrganizations({}); + return response.organizations; }, { enabled: !!user, @@ -68,7 +52,7 @@ function getQueryKey(user?: User) { } // Custom hook to return the current org if one is selected -export function useCurrentOrg(): { data?: OrganizationInfo; isLoading: boolean } { +export function useCurrentOrg(): { data?: Organization; isLoading: boolean } { const location = useLocation(); const orgs = useOrganizations(); const user = useCurrentUser(); 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 7d23d31851fc5a..a54e5b250411e4 100644 --- a/components/dashboard/src/data/organizations/update-org-settings-mutation.ts +++ b/components/dashboard/src/data/organizations/update-org-settings-mutation.ts @@ -4,32 +4,32 @@ * See License.AGPL.txt in the project root for license information. */ -import { OrganizationSettings } from "@gitpod/gitpod-protocol"; -import { useMutation, useQueryClient } from "@tanstack/react-query"; -import { getGitpodService } from "../../service/service"; -import { getOrgSettingsQueryKey, OrgSettingsResult } from "./org-settings-query"; +import { useMutation } from "@tanstack/react-query"; +import { useOrgSettingsQueryInvalidator } from "./org-settings-query"; import { useCurrentOrg } from "./orgs-query"; +import { organizationClient } from "../../service/public-api"; +import { OrganizationSettings } from "@gitpod/public-api/lib/gitpod/v1/organization_pb"; type UpdateOrganizationSettingsArgs = Partial< Pick >; export const useUpdateOrgSettingsMutation = () => { - const queryClient = useQueryClient(); - const team = useCurrentOrg().data; - const teamId = team?.id || ""; + const org = useCurrentOrg().data; + const invalidator = useOrgSettingsQueryInvalidator(); + const teamId = org?.id || ""; return useMutation({ mutationFn: async ({ workspaceSharingDisabled, defaultWorkspaceImage }) => { - return await getGitpodService().server.updateOrgSettings(teamId, { - workspaceSharingDisabled, - defaultWorkspaceImage, + const settings = await organizationClient.updateOrganizationSettings({ + organizationId: teamId, + settings: { + workspaceSharingDisabled: workspaceSharingDisabled || false, + defaultWorkspaceImage, + }, }); + return settings.settings || new OrganizationSettings(); }, - onSuccess: (newData, _) => { - const queryKey = getOrgSettingsQueryKey(teamId); - queryClient.setQueryData(queryKey, newData); - queryClient.invalidateQueries({ queryKey }); - }, + onSuccess: invalidator, }); }; diff --git a/components/dashboard/src/data/setup.test.ts b/components/dashboard/src/data/setup.test.ts new file mode 100644 index 00000000000000..83a8f4556c90fa --- /dev/null +++ b/components/dashboard/src/data/setup.test.ts @@ -0,0 +1,31 @@ +/** + * Copyright (c) 2023 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 { Organization } from "@gitpod/public-api/lib/gitpod/v1/organization_pb"; +import { Timestamp } from "@bufbuild/protobuf"; +import { hydrate, dehydrate } from "./setup"; + +test("set and get proto message", async () => { + const now = new Date(); + const org = new Organization({ + creationTime: Timestamp.fromDate(now), + id: "test-id", + name: "test-name", + slug: "test-slug", + }); + + expect(rehydrate(org).creationTime!.toDate()).toStrictEqual(now); + expect(rehydrate([org])[0].creationTime!.toDate()).toStrictEqual(now); + expect(rehydrate({ foo: org }).foo.creationTime!.toDate()).toStrictEqual(now); +}); + +function rehydrate(obj: T): T { + const dehydrated = dehydrate(obj); + const str = JSON.stringify(dehydrated); + const fromStorage = JSON.parse(str); + const hydrated = hydrate(fromStorage); + return hydrated; +} diff --git a/components/dashboard/src/data/setup.tsx b/components/dashboard/src/data/setup.tsx index 73b0aee5ca2355..db768a0c61af28 100644 --- a/components/dashboard/src/data/setup.tsx +++ b/components/dashboard/src/data/setup.tsx @@ -12,6 +12,7 @@ import { PersistQueryClientProviderProps, } from "@tanstack/react-query-persist-client"; import { QueryCache, QueryClient, QueryKey } from "@tanstack/react-query"; +import { Message } from "@bufbuild/protobuf"; import { ReactQueryDevtools } from "@tanstack/react-query-devtools"; import { FunctionComponent } from "react"; import debounce from "lodash.debounce"; @@ -19,7 +20,7 @@ import debounce from "lodash.debounce"; // This is used to version the cache // If data we cache changes in a non-backwards compatible way, increment this version // That will bust any previous cache versions a client may have stored -const CACHE_VERSION = "1"; +const CACHE_VERSION = "2"; export function noPersistence(queryKey: QueryKey): QueryKey { return [...queryKey, "no-persistence"]; @@ -72,7 +73,7 @@ export const setupQueryClientProvider = () => { }; // Persister that uses IndexedDB -function createIDBPersister(idbValidKey: IDBValidKey = "gitpodQueryClient"): Persister { +export function createIDBPersister(idbValidKey: IDBValidKey = "gitpodQueryClient"): Persister { // Track a flag that indicates if we're attempting to persist the client // Some browsers/versions don't support using indexed-db w/ certain settings or in private mode // If we get an error performing an operation, we'll disable persistance and assume it's not supported @@ -83,7 +84,7 @@ function createIDBPersister(idbValidKey: IDBValidKey = "gitpodQueryClient"): Per // but instead, only persist the latest state const debouncedSet = debounce( async (client: PersistedClient) => { - await set(idbValidKey, client); + await set(idbValidKey, dehydrate(client)); }, 500, { @@ -111,6 +112,7 @@ function createIDBPersister(idbValidKey: IDBValidKey = "gitpodQueryClient"): Per restoreClient: async () => { try { const client = await get(idbValidKey); + hydrate(client); return client; } catch (e) { console.error("unable to load query client from cache"); @@ -127,3 +129,60 @@ function createIDBPersister(idbValidKey: IDBValidKey = "gitpodQueryClient"): Per }, }; } + +const supportedMessages = new Map(); + +function initializeMessages() { + const constr = [ + ...Object.values(require("@gitpod/public-api/lib/gitpod/v1/organization_pb")), + ...Object.values(require("@gitpod/public-api/lib/gitpod/v1/workspace_pb")), + ...Object.values(require("@gitpod/public-api/lib/gitpod/v1/pagination_pb")), + ]; + for (const c of constr) { + if ((c as any).prototype instanceof Message) { + supportedMessages.set((c as any).typeName, c as typeof Message); + } + } +} +initializeMessages(); + +export function dehydrate(message: any): any { + if (message instanceof Array) { + return message.map(dehydrate); + } + if (message instanceof Message) { + // store the constuctor index so we can deserialize it later + return "|" + (message.constructor as any).typeName + "|" + message.toJsonString(); + } + if (message instanceof Object) { + const result: any = {}; + for (const key in message) { + result[key] = dehydrate(message[key]); + } + return result; + } + return message; +} + +export function hydrate(value: any): any { + if (value instanceof Array) { + return value.map(hydrate); + } + if (typeof value === "string" && value.startsWith("|") && value.lastIndexOf("|") > 1) { + const separatorIdx = value.lastIndexOf("|"); + const messageName = value.substring(1, separatorIdx); + const json = value.substring(separatorIdx + 1); + const constructor = supportedMessages.get(messageName); + if (!constructor) { + console.error("unsupported message type", messageName); + return value; + } + return (constructor as any).fromJsonString(json); + } + if (value instanceof Object) { + for (const key in value) { + value[key] = hydrate(value[key]); + } + } + return value; +} diff --git a/components/dashboard/src/dedicated-setup/DedicatedSetup.tsx b/components/dashboard/src/dedicated-setup/DedicatedSetup.tsx index 1d4021f7ed6f65..3de35802974324 100644 --- a/components/dashboard/src/dedicated-setup/DedicatedSetup.tsx +++ b/components/dashboard/src/dedicated-setup/DedicatedSetup.tsx @@ -14,13 +14,13 @@ import { useOIDCClientsQuery } from "../data/oidc-clients/oidc-clients-query"; import { useCurrentOrg } from "../data/organizations/orgs-query"; import { Delayed } from "../components/Delayed"; import { SpinnerLoader } from "../components/Loader"; -import { OrganizationInfo } from "../data/organizations/orgs-query"; import { getGitpodService } from "../service/service"; import { UserContext } from "../user-context"; import { OIDCClientConfig } from "@gitpod/public-api/lib/gitpod/experimental/v1/oidc_pb"; import { useQueryParams } from "../hooks/use-query-params"; import { useDocumentTitle } from "../hooks/use-document-title"; import { forceDedicatedSetupParam } from "./use-show-dedicated-setup"; +import { Organization } from "@gitpod/public-api/lib/gitpod/v1/organization_pb"; type Props = { onComplete: () => void; @@ -68,7 +68,7 @@ const STEPS = { type StepsValue = typeof STEPS[keyof typeof STEPS]; type DedicatedSetupStepsProps = { - org?: OrganizationInfo; + org?: Organization; ssoConfig?: OIDCClientConfig; onComplete: () => void; }; diff --git a/components/dashboard/src/menu/OrganizationSelector.tsx b/components/dashboard/src/menu/OrganizationSelector.tsx index acc172f297076c..d29638a159d739 100644 --- a/components/dashboard/src/menu/OrganizationSelector.tsx +++ b/components/dashboard/src/menu/OrganizationSelector.tsx @@ -13,11 +13,14 @@ import { useLocation } from "react-router"; import { User } from "@gitpod/gitpod-protocol"; import { useOrgBillingMode } from "../data/billing-mode/org-billing-mode-query"; import { useFeatureFlag } from "../data/featureflag-query"; +import { useIsOwner, useListOrganizationMembers } from "../data/organizations/members-query"; export default function OrganizationSelector() { const user = useCurrentUser(); const orgs = useOrganizations(); const currentOrg = useCurrentOrg(); + const members = useListOrganizationMembers().data || []; + const owner = useIsOwner(); const { data: billingMode } = useOrgBillingMode(); const getOrgURL = useGetOrgURL(); const repoConfigListAndDetail = useFeatureFlag("repoConfigListAndDetail"); @@ -40,13 +43,7 @@ export default function OrganizationSelector() { customContent: ( ), active: false, @@ -82,7 +79,7 @@ export default function OrganizationSelector() { link: "/usage", }); // Show billing if user is an owner of current org - if (currentOrg.data.isOwner) { + if (owner) { if (billingMode?.mode === "usage-based") { linkEntries.push({ title: "Billing", @@ -113,15 +110,7 @@ export default function OrganizationSelector() { .sort((a, b) => a.name.localeCompare(b.name)) .map((org) => ({ title: org.name, - customContent: ( - - ), + customContent: , // marking as active for styles active: true, separator: true, diff --git a/components/dashboard/src/service/json-rpc-organization-client.ts b/components/dashboard/src/service/json-rpc-organization-client.ts index 351dbf6f0fac22..59629ed788dc38 100644 --- a/components/dashboard/src/service/json-rpc-organization-client.ts +++ b/components/dashboard/src/service/json-rpc-organization-client.ts @@ -6,7 +6,7 @@ import { PartialMessage } from "@bufbuild/protobuf"; import { CallOptions, Code, ConnectError, PromiseClient } from "@connectrpc/connect"; -import { OrganizationService } from "@gitpod/public-api/lib/gitpod/experimental/v2/organization_connect"; +import { OrganizationService } from "@gitpod/public-api/lib/gitpod/v1/organization_connect"; import { CreateOrganizationRequest, CreateOrganizationResponse, @@ -34,7 +34,7 @@ import { UpdateOrganizationResponse, UpdateOrganizationSettingsRequest, UpdateOrganizationSettingsResponse, -} from "@gitpod/public-api/lib/gitpod/experimental/v2/organization_pb"; +} from "@gitpod/public-api/lib/gitpod/v1/organization_pb"; import { getGitpodService } from "./service"; import { converter } from "./public-api"; diff --git a/components/dashboard/src/service/json-rpc-workspace-client.ts b/components/dashboard/src/service/json-rpc-workspace-client.ts index e4a6384d2a68cb..43414a878ff685 100644 --- a/components/dashboard/src/service/json-rpc-workspace-client.ts +++ b/components/dashboard/src/service/json-rpc-workspace-client.ts @@ -6,8 +6,8 @@ import { Code, ConnectError, PromiseClient } from "@connectrpc/connect"; import { PartialMessage } from "@bufbuild/protobuf"; -import { WorkspaceService } from "@gitpod/public-api/lib/gitpod/experimental/v2/workspace_connect"; -import { GetWorkspaceRequest, GetWorkspaceResponse } from "@gitpod/public-api/lib/gitpod/experimental/v2/workspace_pb"; +import { WorkspaceService } from "@gitpod/public-api/lib/gitpod/v1/workspace_connect"; +import { GetWorkspaceRequest, GetWorkspaceResponse } from "@gitpod/public-api/lib/gitpod/v1/workspace_pb"; import { converter } from "./public-api"; import { getGitpodService } from "./service"; diff --git a/components/dashboard/src/service/public-api.ts b/components/dashboard/src/service/public-api.ts index ae4b77955fe249..aa7f3ac354b1ec 100644 --- a/components/dashboard/src/service/public-api.ts +++ b/components/dashboard/src/service/public-api.ts @@ -4,26 +4,24 @@ * See License.AGPL.txt in the project root for license information. */ +import { MethodKind, ServiceType } from "@bufbuild/protobuf"; import { Code, ConnectError, PromiseClient, createPromiseClient } from "@connectrpc/connect"; import { createConnectTransport } from "@connectrpc/connect-web"; -import { MethodKind, ServiceType } from "@bufbuild/protobuf"; -import { TeamMemberInfo, TeamMemberRole, User } from "@gitpod/gitpod-protocol"; +import { User } from "@gitpod/gitpod-protocol"; import { PublicAPIConverter } from "@gitpod/gitpod-protocol/lib/public-api-converter"; -import { Project as ProtocolProject, Team as ProtocolTeam } from "@gitpod/gitpod-protocol/lib/teams-projects-protocol"; +import { Project as ProtocolProject } from "@gitpod/gitpod-protocol/lib/teams-projects-protocol"; import { HelloService } from "@gitpod/public-api/lib/gitpod/experimental/v1/dummy_connect"; import { OIDCService } from "@gitpod/public-api/lib/gitpod/experimental/v1/oidc_connect"; import { ProjectsService } from "@gitpod/public-api/lib/gitpod/experimental/v1/projects_connect"; import { Project } from "@gitpod/public-api/lib/gitpod/experimental/v1/projects_pb"; -import { TeamsService } from "@gitpod/public-api/lib/gitpod/experimental/v1/teams_connect"; -import { Team, TeamMember, TeamRole } from "@gitpod/public-api/lib/gitpod/experimental/v1/teams_pb"; import { TokensService } from "@gitpod/public-api/lib/gitpod/experimental/v1/tokens_connect"; import { WorkspacesService as WorkspaceV1Service } from "@gitpod/public-api/lib/gitpod/experimental/v1/workspaces_connect"; -import { WorkspaceService } from "@gitpod/public-api/lib/gitpod/experimental/v2/workspace_connect"; +import { OrganizationService } from "@gitpod/public-api/lib/gitpod/v1/organization_connect"; +import { WorkspaceService } from "@gitpod/public-api/lib/gitpod/v1/workspace_connect"; import { getMetricsInterceptor } from "@gitpod/public-api/lib/metrics"; import { getExperimentsClient } from "../experiments/client"; -import { JsonRpcWorkspaceClient } from "./json-rpc-workspace-client"; import { JsonRpcOrganizationClient } from "./json-rpc-organization-client"; -import { OrganizationService } from "@gitpod/public-api/lib/gitpod/experimental/v2/organization_connect"; +import { JsonRpcWorkspaceClient } from "./json-rpc-workspace-client"; const transport = createConnectTransport({ baseUrl: `${window.location.protocol}//${window.location.host}/public-api`, @@ -33,7 +31,6 @@ const transport = createConnectTransport({ export const converter = new PublicAPIConverter(); export const helloService = createPromiseClient(HelloService, transport); -export const teamsService = createPromiseClient(TeamsService, transport); export const personalAccessTokensService = createPromiseClient(TokensService, transport); export const projectsService = createPromiseClient(ProjectsService, transport); /** @@ -43,47 +40,11 @@ export const workspacesService = createPromiseClient(WorkspaceV1Service, transpo export const oidcService = createPromiseClient(OIDCService, transport); export const workspaceClient = createServiceClient(WorkspaceService, new JsonRpcWorkspaceClient()); -export const organizationClient = createServiceClient(OrganizationService, new JsonRpcOrganizationClient()); - -export function publicApiTeamToProtocol(team: Team): ProtocolTeam { - return { - id: team.id, - name: team.name, - slug: team.slug, - // We do not use the creationTime in the dashboard anywhere, se we keep it empty. - creationTime: "", - }; -} - -export function publicApiTeamsToProtocol(teams: Team[]): ProtocolTeam[] { - return teams.map(publicApiTeamToProtocol); -} - -export function publicApiTeamMembersToProtocol(members: TeamMember[]): TeamMemberInfo[] { - return members.map(publicApiTeamMemberToProtocol); -} - -export function publicApiTeamMemberToProtocol(member: TeamMember): TeamMemberInfo { - return { - userId: member.userId, - fullName: member.fullName, - avatarUrl: member.avatarUrl, - memberSince: member.memberSince?.toDate().toISOString() || "", - role: publicApiTeamRoleToProtocol(member.role), - primaryEmail: member.primaryEmail, - ownedByOrganization: member.ownedByOrganization, - }; -} - -export function publicApiTeamRoleToProtocol(role: TeamRole): TeamMemberRole { - switch (role) { - case TeamRole.OWNER: - return "owner"; - case TeamRole.MEMBER: - case TeamRole.UNSPECIFIED: - return "member"; - } -} +export const organizationClient = createServiceClient( + OrganizationService, + new JsonRpcOrganizationClient(), + "organization", +); export async function listAllProjects(opts: { orgId: string }): Promise { let pagination = { @@ -140,7 +101,11 @@ export function updateUser(newUser: User | undefined) { user = newUser; } -function createServiceClient(type: T, jsonRpcClient?: PromiseClient): PromiseClient { +function createServiceClient( + type: T, + jsonRpcClient?: PromiseClient, + featureFlagSuffix?: string, +): PromiseClient { return new Proxy(createPromiseClient(type, transport), { get(grpcClient, prop) { const experimentsClient = getExperimentsClient(); @@ -149,18 +114,20 @@ function createServiceClient(type: T, jsonRpcClient?: Pro if (!jsonRpcClient) { return grpcClient; } + const featureFlags = ["dashboard_public_api_enabled", "centralizedPermissions"]; + if (featureFlagSuffix) { + featureFlags.push(`dashboard_public_api_${featureFlagSuffix}_enabled`); + } // TODO(ak): is not going to work for getLoggedInUser itself - const [isPublicAPIEnabled, isFgaChecksEnabled] = await Promise.all([ - experimentsClient.getValueAsync("dashboard_public_api_enabled", false, { - user, - gitpodHost: window.location.host, - }), - experimentsClient.getValueAsync("centralizedPermissions", false, { - user, - gitpodHost: window.location.host, - }), - ]); - if (isPublicAPIEnabled && isFgaChecksEnabled) { + const resolvedFlags = await Promise.all( + featureFlags.map((ff) => + experimentsClient.getValueAsync(ff, false, { + user, + gitpodHost: window.location.host, + }), + ), + ); + if (resolvedFlags.every((f) => f === true)) { return grpcClient; } return jsonRpcClient; diff --git a/components/dashboard/src/start/StartWorkspace.tsx b/components/dashboard/src/start/StartWorkspace.tsx index 633c09e75a4212..19839ae8180495 100644 --- a/components/dashboard/src/start/StartWorkspace.tsx +++ b/components/dashboard/src/start/StartWorkspace.tsx @@ -27,11 +27,7 @@ import { StartPage, StartPhase, StartWorkspaceError } from "./StartPage"; import ConnectToSSHModal from "../workspaces/ConnectToSSHModal"; import Alert from "../components/Alert"; import { converter, workspaceClient, workspacesService } from "../service/public-api"; -import { - GetWorkspaceRequest, - Workspace, - WorkspacePhase_Phase, -} from "@gitpod/public-api/lib/gitpod/experimental/v2/workspace_pb"; +import { GetWorkspaceRequest, Workspace, WorkspacePhase_Phase } from "@gitpod/public-api/lib/gitpod/v1/workspace_pb"; const sessionId = v4(); diff --git a/components/dashboard/src/teams/JoinTeam.tsx b/components/dashboard/src/teams/JoinTeam.tsx index cb1e17b0678805..b10e94500be8c5 100644 --- a/components/dashboard/src/teams/JoinTeam.tsx +++ b/components/dashboard/src/teams/JoinTeam.tsx @@ -8,7 +8,7 @@ import { useEffect, useMemo, useState } from "react"; import { useHistory, useLocation } from "react-router-dom"; import { useOrganizationsInvalidator } from "../data/organizations/orgs-query"; import { useDocumentTitle } from "../hooks/use-document-title"; -import { publicApiTeamToProtocol, teamsService } from "../service/public-api"; +import { organizationClient } from "../service/public-api"; export default function JoinTeamPage() { const orgInvalidator = useOrganizationsInvalidator(); @@ -24,10 +24,10 @@ export default function JoinTeamPage() { if (!inviteId) { throw new Error("This invite URL is incorrect."); } - const team = publicApiTeamToProtocol((await teamsService.joinTeam({ invitationId: inviteId })).team!); + const result = await organizationClient.joinOrganization({ invitationId: inviteId }); orgInvalidator(); - history.push(`/members?org=${team.id}`); + history.push(`/members?org=${result.organizationId}`); } catch (error) { console.error(error); setJoinError(error); diff --git a/components/dashboard/src/teams/Members.tsx b/components/dashboard/src/teams/Members.tsx index d83c2c2b4d8b56..3a48df3bafcbb0 100644 --- a/components/dashboard/src/teams/Members.tsx +++ b/components/dashboard/src/teams/Members.tsx @@ -4,8 +4,6 @@ * See License.AGPL.txt in the project root for license information. */ -import { TeamMemberRole } from "@gitpod/gitpod-protocol"; -import { TeamRole } from "@gitpod/public-api/lib/gitpod/experimental/v1/teams_pb"; import dayjs from "dayjs"; import { useMemo, useState } from "react"; import { trackEvent } from "../Analytics"; @@ -14,23 +12,30 @@ import Header from "../components/Header"; import { Item, ItemField, ItemFieldContextMenu, ItemsList } from "../components/ItemsList"; import Modal, { ModalBody, ModalFooter, ModalHeader } from "../components/Modal"; import Tooltip from "../components/Tooltip"; -import { useCurrentOrg, useOrganizationsInvalidator } from "../data/organizations/orgs-query"; +import { useCurrentOrg } from "../data/organizations/orgs-query"; import searchIcon from "../icons/search.svg"; -import { teamsService } from "../service/public-api"; +import { organizationClient } from "../service/public-api"; import { useCurrentUser } from "../user-context"; import { SpinnerLoader } from "../components/Loader"; import { Delayed } from "../components/Delayed"; import { InputField } from "../components/forms/InputField"; import { InputWithCopy } from "../components/InputWithCopy"; +import { OrganizationMember, OrganizationRole } from "@gitpod/public-api/lib/gitpod/v1/organization_pb"; +import { useListOrganizationMembers, useOrganizationMembersInvalidator } from "../data/organizations/members-query"; +import { useInvitationId, useInviteInvalidator } from "../data/organizations/invite-query"; export default function MembersPage() { const user = useCurrentUser(); const org = useCurrentOrg(); - const invalidateOrgs = useOrganizationsInvalidator(); + const membersQuery = useListOrganizationMembers(); + const members: OrganizationMember[] = useMemo(() => membersQuery.data || [], [membersQuery.data]); + const invalidateInviteQuery = useInviteInvalidator(); + const invalidateMembers = useOrganizationMembersInvalidator(); const [showInviteModal, setShowInviteModal] = useState(false); const [searchText, setSearchText] = useState(""); - const [roleFilter, setRoleFilter] = useState(); + const [roleFilter, setRoleFilter] = useState(); + const inviteId = useInvitationId().data; const inviteUrl = useMemo(() => { if (!org.data) { @@ -38,42 +43,43 @@ export default function MembersPage() { } // orgs without an invitation id invite members through their own login page const link = new URL(window.location.href); - if (!org.data.invitationId) { + if (!inviteId) { link.pathname = "/login/" + org.data.slug; } else { link.pathname = "/orgs/join"; - link.search = "?inviteId=" + org.data.invitationId; + link.search = "?inviteId=" + inviteId; } return link.href; - }, [org.data]); + }, [org.data, inviteId]); const resetInviteLink = async () => { - await teamsService.resetTeamInvitation({ teamId: org.data?.id }); - invalidateOrgs(); + await organizationClient.resetOrganizationInvitation({ organizationId: org.data?.id }); + invalidateInviteQuery(); }; - const setTeamMemberRole = async (userId: string, role: TeamMemberRole) => { - await teamsService.updateTeamMember({ - teamId: org.data?.id, - teamMember: { userId, role: role === "owner" ? TeamRole.OWNER : TeamRole.MEMBER }, + const setTeamMemberRole = async (userId: string, role: OrganizationRole) => { + await organizationClient.updateOrganizationMember({ + organizationId: org.data?.id, + userId, + role, }); - invalidateOrgs(); + invalidateMembers(); }; const removeTeamMember = async (userId: string) => { - await teamsService.deleteTeamMember({ teamId: org.data?.id, teamMemberId: userId }); - invalidateOrgs(); + await organizationClient.deleteOrganizationMember({ organizationId: org.data?.id, userId }); + invalidateMembers(); }; const isRemainingOwner = useMemo(() => { - const owners = org.data?.members.filter((m) => m.role === "owner"); + const owners = members.filter((m) => m.role === OrganizationRole.OWNER); return owners?.length === 1 && owners[0].userId === user?.id; - }, [org.data?.members, user?.id]); + }, [members, user?.id]); const isOwner = useMemo(() => { - const owners = org.data?.members.filter((m) => m.role === "owner"); + const owners = members.filter((m) => m.role === OrganizationRole.OWNER); return !!owners?.some((o) => o.userId === user?.id); - }, [org.data?.members, user?.id]); + }, [members, user?.id]); // Note: We would hardly get here, but just in case. We should show a loader instead of blank section. if (org.isLoading) { @@ -85,11 +91,11 @@ export default function MembersPage() { } const filteredMembers = - org.data?.members.filter((m) => { + members.filter((m) => { if (!!roleFilter && m.role !== roleFilter) { return false; } - const memberSearchText = `${m.fullName || ""}${m.primaryEmail || ""}`.toLocaleLowerCase(); + const memberSearchText = `${m.fullName || ""}${m.email || ""}`.toLocaleLowerCase(); if (!memberSearchText.includes(searchText.toLocaleLowerCase())) { return false; } @@ -119,7 +125,11 @@ export default function MembersPage() { setRoleFilter("owner"), + onClick: () => setRoleFilter(OrganizationRole.OWNER), }, { title: "Members", - onClick: () => setRoleFilter("member"), + onClick: () => setRoleFilter(OrganizationRole.OWNER), }, ]} /> @@ -194,33 +204,39 @@ export default function MembersPage() { > {m.fullName}
-

{m.primaryEmail}

+

{m.email}

- - {dayjs(m.memberSince).fromNow()} + + + {dayjs(m.memberSince?.toDate()).fromNow()} + - {org.data?.isOwner ? ( + {isOwner ? ( setTeamMemberRole(m.userId, "owner"), + onClick: () => + setTeamMemberRole(m.userId, OrganizationRole.OWNER), }, { title: "member", - onClick: () => setTeamMemberRole(m.userId, "member"), + onClick: () => + setTeamMemberRole(m.userId, OrganizationRole.MEMBER), }, ]} /> + ) : m.role === OrganizationRole.OWNER ? ( + "owner" ) : ( - m.role + "member" )} @@ -239,7 +255,7 @@ export default function MembersPage() { !isRemainingOwner && removeTeamMember(m.userId), }, ] - : org.data?.isOwner + : isOwner ? [ { title: "Remove", @@ -267,7 +283,7 @@ export default function MembersPage() { - {!!org?.data?.invitationId && ( + {!!inviteId && ( diff --git a/components/dashboard/src/teams/NewTeam.tsx b/components/dashboard/src/teams/NewTeam.tsx index 99d87d40fa5bb7..95f0949df7402f 100644 --- a/components/dashboard/src/teams/NewTeam.tsx +++ b/components/dashboard/src/teams/NewTeam.tsx @@ -10,7 +10,7 @@ import { useHistory } from "react-router-dom"; import { Heading1, Heading3, Subheading } from "../components/typography/headings"; import { useOrganizationsInvalidator } from "../data/organizations/orgs-query"; import { useDocumentTitle } from "../hooks/use-document-title"; -import { publicApiTeamToProtocol, teamsService } from "../service/public-api"; +import { organizationClient } from "../service/public-api"; import { Button } from "../components/Button"; export default function NewTeamPage() { @@ -24,11 +24,10 @@ export default function NewTeamPage() { event.preventDefault(); try { - const team = publicApiTeamToProtocol((await teamsService.createTeam({ name })).team!); - + const team = await organizationClient.createOrganization({ name }); invalidateOrgs(); // Redirects to the new Org's dashboard - history.push(`/workspaces/?org=${team.id}`); + history.push(`/workspaces/?org=${team.organization?.id}`); } catch (error) { console.error(error); if (error instanceof ConnectError) { diff --git a/components/dashboard/src/teams/OrgSettingsPage.tsx b/components/dashboard/src/teams/OrgSettingsPage.tsx index 6ac480cc412ba9..8ce6b69f59a172 100644 --- a/components/dashboard/src/teams/OrgSettingsPage.tsx +++ b/components/dashboard/src/teams/OrgSettingsPage.tsx @@ -4,7 +4,6 @@ * See License.AGPL.txt in the project root for license information. */ -import { Team } from "@gitpod/gitpod-protocol"; import { BillingMode } from "@gitpod/gitpod-protocol/lib/billing-mode"; import { useMemo } from "react"; import { Redirect } from "react-router"; @@ -14,6 +13,8 @@ import { PageWithSubMenu } from "../components/PageWithSubMenu"; import { useOrgBillingMode } from "../data/billing-mode/org-billing-mode-query"; import { useCurrentOrg } from "../data/organizations/orgs-query"; import { useFeatureFlag } from "../data/featureflag-query"; +import { Organization } from "@gitpod/public-api/lib/gitpod/v1/organization_pb"; +import { useIsOwner } from "../data/organizations/members-query"; export interface OrgSettingsPageProps { children: React.ReactNode; @@ -21,20 +22,21 @@ export interface OrgSettingsPageProps { export function OrgSettingsPage({ children }: OrgSettingsPageProps) { const org = useCurrentOrg(); + const isOwner = useIsOwner(); const orgBillingMode = useOrgBillingMode(); const oidcServiceEnabled = useFeatureFlag("oidcServiceEnabled"); const orgGitAuthProviders = useFeatureFlag("orgGitAuthProviders"); const menu = useMemo( () => - getTeamSettingsMenu({ - team: org.data, + getOrgSettingsMenu({ + org: org.data, billingMode: orgBillingMode.data, ssoEnabled: oidcServiceEnabled, orgGitAuthProviders, - isOwner: org.data?.isOwner, + isOwner, }), - [org.data, orgBillingMode.data, oidcServiceEnabled, orgGitAuthProviders], + [org.data, orgBillingMode.data, oidcServiceEnabled, orgGitAuthProviders, isOwner], ); const title = "Organization Settings"; @@ -56,7 +58,7 @@ export function OrgSettingsPage({ children }: OrgSettingsPageProps) { const onlyForOwner = false; // After we've loaded, ensure user is an owner, if not, redirect - if (onlyForOwner && !org.data?.isOwner) { + if (onlyForOwner && !isOwner) { return ; } @@ -67,8 +69,8 @@ export function OrgSettingsPage({ children }: OrgSettingsPageProps) { ); } -function getTeamSettingsMenu(params: { - team?: Team; +function getOrgSettingsMenu(params: { + org?: Organization; billingMode?: BillingMode; ssoEnabled?: boolean; orgGitAuthProviders: boolean; diff --git a/components/dashboard/src/teams/TeamSettings.tsx b/components/dashboard/src/teams/TeamSettings.tsx index f67711a39f916e..157645e7ef6d28 100644 --- a/components/dashboard/src/teams/TeamSettings.tsx +++ b/components/dashboard/src/teams/TeamSettings.tsx @@ -4,32 +4,34 @@ * See License.AGPL.txt in the project root for license information. */ -import { OrganizationSettings } from "@gitpod/gitpod-protocol"; +import { Organization, OrganizationSettings } from "@gitpod/public-api/lib/gitpod/v1/organization_pb"; import React, { Children, ReactNode, useCallback, useMemo, useState } from "react"; import Alert from "../components/Alert"; import { Button } from "../components/Button"; -import { CheckboxInputField } from "../components/forms/CheckboxInputField"; import ConfirmationModal from "../components/ConfirmationModal"; +import { InputWithCopy } from "../components/InputWithCopy"; +import Modal, { ModalBody, ModalFooter, ModalHeader } from "../components/Modal"; +import { CheckboxInputField } from "../components/forms/CheckboxInputField"; +import { InputField } from "../components/forms/InputField"; import { TextInputField } from "../components/forms/TextInputField"; import { Heading2, Subheading } from "../components/typography/headings"; -import { useUpdateOrgSettingsMutation } from "../data/organizations/update-org-settings-mutation"; +import { useIsOwner } from "../data/organizations/members-query"; import { useOrgSettingsQuery } from "../data/organizations/org-settings-query"; -import { OrganizationInfo, useCurrentOrg, useOrganizationsInvalidator } from "../data/organizations/orgs-query"; +import { useCurrentOrg, useOrganizationsInvalidator } from "../data/organizations/orgs-query"; import { useUpdateOrgMutation } from "../data/organizations/update-org-mutation"; +import { useUpdateOrgSettingsMutation } from "../data/organizations/update-org-settings-mutation"; +import { useDefaultWorkspaceImageQuery } from "../data/workspaces/default-workspace-image-query"; import { useOnBlurError } from "../hooks/use-onblur-error"; -import { teamsService } from "../service/public-api"; +import { ReactComponent as Stack } from "../icons/Stack.svg"; +import { organizationClient } from "../service/public-api"; import { gitpodHostUrl } from "../service/service"; import { useCurrentUser } from "../user-context"; import { OrgSettingsPage } from "./OrgSettingsPage"; -import { useDefaultWorkspaceImageQuery } from "../data/workspaces/default-workspace-image-query"; -import Modal, { ModalBody, ModalFooter, ModalHeader } from "../components/Modal"; -import { InputField } from "../components/forms/InputField"; -import { InputWithCopy } from "../components/InputWithCopy"; -import { ReactComponent as Stack } from "../icons/Stack.svg"; export default function TeamSettingsPage() { const user = useCurrentUser(); const org = useCurrentOrg().data; + const isOwner = useIsOwner(); const invalidateOrgs = useOrganizationsInvalidator(); const [modal, setModal] = useState(false); const [teamNameToDelete, setTeamNameToDelete] = useState(""); @@ -50,7 +52,7 @@ export default function TeamSettingsPage() { const updateTeamInformation = useCallback( async (e: React.FormEvent) => { - if (!org?.isOwner) { + if (!isOwner) { return; } e.preventDefault(); @@ -67,7 +69,7 @@ export default function TeamSettingsPage() { console.error(error); } }, - [orgFormIsValid, updateOrg, teamName, org], + [isOwner, orgFormIsValid, updateOrg, teamName], ); const deleteTeam = useCallback(async () => { @@ -75,7 +77,7 @@ export default function TeamSettingsPage() { return; } - await teamsService.deleteTeam({ teamId: org.id }); + await organizationClient.deleteOrganization({ organizationId: org.id }); invalidateOrgs(); document.location.href = gitpodHostUrl.asDashboard().toString(); }, [invalidateOrgs, org, user]); @@ -104,20 +106,20 @@ export default function TeamSettingsPage() { value={teamName} error={teamNameError.message} onChange={setTeamName} - disabled={!org?.isOwner} + disabled={!isOwner} onBlur={teamNameError.onBlur} /> - {org?.isOwner && ( + {isOwner && ( )} - + - {user?.organizationId !== org?.id && org?.isOwner && ( + {user?.organizationId !== org?.id && isOwner && ( <> Delete Organization @@ -170,8 +172,8 @@ export default function TeamSettingsPage() { ); } -function OrgSettingsForm(props: { org?: OrganizationInfo }) { - const { org } = props; +function OrgSettingsForm(props: { org?: Organization; isOwner: boolean }) { + const { org, isOwner } = props; const { data: settings, isLoading } = useOrgSettingsQuery(); const { data: imageInfo } = useDefaultWorkspaceImageQuery(); const updateTeamSettings = useUpdateOrgSettingsMutation(); @@ -183,7 +185,7 @@ function OrgSettingsForm(props: { org?: OrganizationInfo }) { if (!org?.id) { throw new Error("no organization selected"); } - if (!org.isOwner) { + if (!isOwner) { throw new Error("no organization settings change permission"); } try { @@ -195,7 +197,7 @@ function OrgSettingsForm(props: { org?: OrganizationInfo }) { console.error(error); } }, - [updateTeamSettings, org?.id, org?.isOwner, settings], + [updateTeamSettings, org?.id, isOwner, settings], ); return ( @@ -225,7 +227,7 @@ function OrgSettingsForm(props: { org?: OrganizationInfo }) { hint="Allow workspaces created within an Organization to share the workspace with any authenticated user." checked={!settings?.workspaceSharingDisabled} onChange={(checked) => handleUpdateTeamSettings({ workspaceSharingDisabled: !checked })} - disabled={isLoading || !org?.isOwner} + disabled={isLoading || !isOwner} /> Workspace Images @@ -234,7 +236,7 @@ function OrgSettingsForm(props: { org?: OrganizationInfo }) { setShowImageEditModal(true)} diff --git a/components/dashboard/src/teams/git-integrations/GitIntegrationListItem.tsx b/components/dashboard/src/teams/git-integrations/GitIntegrationListItem.tsx index 352f536d5d19c9..6f85f512da4059 100644 --- a/components/dashboard/src/teams/git-integrations/GitIntegrationListItem.tsx +++ b/components/dashboard/src/teams/git-integrations/GitIntegrationListItem.tsx @@ -11,9 +11,9 @@ import { ContextMenuEntry } from "../../components/ContextMenu"; import { Item, ItemField, ItemFieldContextMenu, ItemFieldIcon } from "../../components/ItemsList"; import { useDeleteOrgAuthProviderMutation } from "../../data/auth-providers/delete-org-auth-provider-mutation"; import { GitIntegrationModal } from "./GitIntegrationModal"; -import { useCurrentOrg } from "../../data/organizations/orgs-query"; import { ModalFooterAlert } from "../../components/Modal"; import { useToast } from "../../components/toasts/Toasts"; +import { useListOrganizationMembers } from "../../data/organizations/members-query"; type Props = { provider: AuthProviderEntry; @@ -22,10 +22,10 @@ export const GitIntegrationListItem: FunctionComponent = ({ provider }) = const [showEditModal, setShowEditModal] = useState(false); const [showDeleteConfirmation, setShowDeleteConfirmation] = useState(false); const deleteAuthProvider = useDeleteOrgAuthProviderMutation(); - const { data: org } = useCurrentOrg(); + const members = useListOrganizationMembers().data || []; const { toast } = useToast(); - const memberCount = org?.members.length ?? 1; + const memberCount = members.length ?? 1; const menuEntries = useMemo(() => { const result: ContextMenuEntry[] = []; diff --git a/components/dashboard/src/usage/UsageSummary.tsx b/components/dashboard/src/usage/UsageSummary.tsx index cea828a7bff793..d13a124cd289d2 100644 --- a/components/dashboard/src/usage/UsageSummary.tsx +++ b/components/dashboard/src/usage/UsageSummary.tsx @@ -9,12 +9,14 @@ import { useCurrentOrg } from "../data/organizations/orgs-query"; import { Subheading } from "../components/typography/headings"; import { Link } from "react-router-dom"; import { useOrgBillingMode } from "../data/billing-mode/org-billing-mode-query"; +import { useIsOwner } from "../data/organizations/members-query"; type Props = { creditsUsed?: number; }; export const UsageSummaryData: FC = ({ creditsUsed }) => { const currentOrg = useCurrentOrg(); + const isOwner = useIsOwner(); const { data: billingMode } = useOrgBillingMode(); return ( @@ -26,7 +28,7 @@ export const UsageSummaryData: FC = ({ creditsUsed }) => { {creditsUsed !== undefined ? creditsUsed.toLocaleString() : "-"} - {currentOrg.data && currentOrg.data.isOwner && billingMode?.mode === "usage-based" && ( + {currentOrg.data && isOwner && billingMode?.mode === "usage-based" && (
diff --git a/components/gitpod-protocol/src/public-api-converter.spec.ts b/components/gitpod-protocol/src/public-api-converter.spec.ts index a1a856613255f9..2e5fabe414e923 100644 --- a/components/gitpod-protocol/src/public-api-converter.spec.ts +++ b/components/gitpod-protocol/src/public-api-converter.spec.ts @@ -11,11 +11,11 @@ import { WorkspacePhase_Phase, WorkspacePort_Policy, WorkspacePort_Protocol, -} from "@gitpod/public-api/lib/gitpod/experimental/v2/workspace_pb"; +} from "@gitpod/public-api/lib/gitpod/v1/workspace_pb"; import { expect } from "chai"; import { PublicAPIConverter } from "./public-api-converter"; import { OrgMemberInfo } from "./teams-projects-protocol"; -import { OrganizationRole } from "@gitpod/public-api/lib/gitpod/experimental/v2/organization_pb"; +import { OrganizationRole } from "@gitpod/public-api/lib/gitpod/v1/organization_pb"; describe("PublicAPIConverter", () => { const converter = new PublicAPIConverter(); @@ -25,11 +25,13 @@ describe("PublicAPIConverter", () => { const org = { id: "123", name: "My Org", + slug: "my-org", creationTime: "2022-01-01T00:00:00.000Z", }; const result = converter.toOrganization(org); expect(result.id).to.equal(org.id); expect(result.name).to.equal(org.name); + expect(result.slug).to.equal(org.slug); expect(result.creationTime).to.deep.equal(Timestamp.fromDate(new Date(org.creationTime))); }); }); diff --git a/components/gitpod-protocol/src/public-api-converter.ts b/components/gitpod-protocol/src/public-api-converter.ts index 2d80e67ae4cd44..f7926cdb2a8864 100644 --- a/components/gitpod-protocol/src/public-api-converter.ts +++ b/components/gitpod-protocol/src/public-api-converter.ts @@ -19,13 +19,13 @@ import { WorkspacePort_Policy, WorkspacePort_Protocol, WorkspaceStatus, -} from "@gitpod/public-api/lib/gitpod/experimental/v2/workspace_pb"; +} from "@gitpod/public-api/lib/gitpod/v1/workspace_pb"; import { Organization, OrganizationMember, OrganizationRole, OrganizationSettings, -} from "@gitpod/public-api/lib/gitpod/experimental/v2/organization_pb"; +} from "@gitpod/public-api/lib/gitpod/v1/organization_pb"; import { ApplicationError, ErrorCode, ErrorCodes } from "./messaging/error"; import { CommitContext, @@ -331,6 +331,7 @@ export class PublicAPIConverter { const result = new Organization(); result.id = org.id; result.name = org.name; + result.slug = org.slug || ""; result.creationTime = Timestamp.fromDate(new Date(org.creationTime)); return result; } diff --git a/components/proxy/conf/Caddyfile b/components/proxy/conf/Caddyfile index 2f48b0807c1c48..214f531678a863 100644 --- a/components/proxy/conf/Caddyfile +++ b/components/proxy/conf/Caddyfile @@ -215,7 +215,7 @@ https://{$GITPOD_DOMAIN} { import server_public_api } - @proxy_server_public_api_2 path /public-api/gitpod.experimental.v2.* + @proxy_server_public_api_2 path /public-api/gitpod.v1.* handle @proxy_server_public_api_2 { import server_public_api } diff --git a/components/public-api/gitpod/experimental/v2/organization.proto b/components/public-api/gitpod/experimental/v2/organization.proto deleted file mode 100644 index bc9a1544692038..00000000000000 --- a/components/public-api/gitpod/experimental/v2/organization.proto +++ /dev/null @@ -1,208 +0,0 @@ -syntax = "proto3"; - -package gitpod.experimental.v2; - -import "google/protobuf/timestamp.proto"; -import "gitpod/experimental/v2/pagination.proto"; - -option go_package = "github.com/gitpod-io/gitpod/components/public-api/go/experimental/v2"; - - -message Organization { - string id = 1; - string name = 2; - google.protobuf.Timestamp creation_time = 3; -} - -message OrganizationMember { - string user_id = 1; - OrganizationRole role = 2; - google.protobuf.Timestamp member_since = 3; - optional string avatar_url = 4; - optional string full_name = 5; - optional string email = 6; - bool owned_by_organization = 7; -} - -enum OrganizationRole { - ORGANIZATION_ROLE_UNSPECIFIED = 0; - ORGANIZATION_ROLE_OWNER = 1; - ORGANIZATION_ROLE_MEMBER = 2; -} - -message OrganizationSettings { - bool workspace_sharing_disabled = 1; - optional string default_workspace_image = 2; -} - -service OrganizationService { - // CreateOrganization creates a new Organization. - rpc CreateOrganization(CreateOrganizationRequest) returns (CreateOrganizationResponse) {}; - - // GetOrganization retrieves a single Organization. - rpc GetOrganization(GetOrganizationRequest) returns (GetOrganizationResponse) {} - - // UpdateOrganization updates the properties of an Organization. - rpc UpdateOrganization(UpdateOrganizationRequest) returns (UpdateOrganizationResponse) {}; - - // ListOrganizations lists all organization the caller has access to. - rpc ListOrganizations(ListOrganizationsRequest) returns (ListOrganizationsResponse) {}; - - // DeleteOrganization deletes the specified organization. - rpc DeleteOrganization(DeleteOrganizationRequest) returns (DeleteOrganizationResponse) {}; - - // GetOrganizationInvitation retrieves the invitation for a Organization. - rpc GetOrganizationInvitation(GetOrganizationInvitationRequest) returns (GetOrganizationInvitationResponse) {}; - - // JoinOrganization makes the caller a OrganizationMember of the Organization. - rpc JoinOrganization(JoinOrganizationRequest) returns (JoinOrganizationResponse) {}; - - // ResetOrganizationInvitation resets the invitation_id for a Organization. - rpc ResetOrganizationInvitation(ResetOrganizationInvitationRequest) returns (ResetOrganizationInvitationResponse) {}; - - // ListOrganizationMembers lists the members of a Organization. - rpc ListOrganizationMembers(ListOrganizationMembersRequest) returns (ListOrganizationMembersResponse) {}; - - // UpdateOrganizationMember updates organization membership properties. - rpc UpdateOrganizationMember(UpdateOrganizationMemberRequest) returns (UpdateOrganizationMemberResponse) {}; - - // DeleteOrganizationMember removes a OrganizationMember from the Organization. - rpc DeleteOrganizationMember(DeleteOrganizationMemberRequest) returns (DeleteOrganizationMemberResponse) {}; - - // GetOrganizationSettings retrieves the settings of a Organization. - rpc GetOrganizationSettings(GetOrganizationSettingsRequest) returns (GetOrganizationSettingsResponse) {}; - - // UpdateOrganizationSettings updates the settings of a Organization. - rpc UpdateOrganizationSettings(UpdateOrganizationSettingsRequest) returns (UpdateOrganizationSettingsResponse) {}; -} - -message UpdateOrganizationRequest { - // organization_id is the ID of the organization to update the settings for. - string organization_id = 1; - - // name is the new name of the organization - string name = 2; -} - -message UpdateOrganizationResponse { -} - -message UpdateOrganizationSettingsRequest { - // organization_id is the ID of the organization to update the settings for. - string organization_id = 1; - - // settings are the settings to update - OrganizationSettings settings = 2; -} - -message UpdateOrganizationSettingsResponse { -} - -message GetOrganizationSettingsRequest { - // organization_id is the ID of the organization to retrieve the settings for. - string organization_id = 1; -} - -message GetOrganizationSettingsResponse { - // settings are the settings of the organization - OrganizationSettings settings = 1; -} - -message CreateOrganizationRequest { - // name is the organization name - string name = 1; -} - -message CreateOrganizationResponse { - Organization organization = 1; -} - -message GetOrganizationRequest { - // organization_id is the unique identifier of the Organization to retreive. - string organization_id = 1; -} - -message GetOrganizationResponse { - Organization organization = 1; -} - -message ListOrganizationsRequest { - PaginationRequest pagination = 1; -} - -message ListOrganizationsResponse { - repeated Organization organizations = 1; - PaginationResponse pagination = 2; -} - -message DeleteOrganizationRequest { - // organization_id is the ID of the organization to delete - string organization_id = 1; -} - -message DeleteOrganizationResponse { -} - -message GetOrganizationInvitationRequest { - string organization_id = 1; -} - -message GetOrganizationInvitationResponse { - // invitation_id is the invitation ID for an Organization - string invitation_id = 1; -} - -message JoinOrganizationRequest { - // invitation_id is the invitation ID for an Organization - string invitation_id = 1; -} - -message JoinOrganizationResponse { - // organization_id is the id of the organization the user has just joined - string organization_id = 1; -} - -message ResetOrganizationInvitationRequest { - string organization_id = 1; -} - -message ResetOrganizationInvitationResponse { - // invitation_id is the new invitation id for the organization. - string invitation_id = 1; -} - -message ListOrganizationMembersRequest { - // organization_id is the ID of the organization that contains the members to list - string organization_id = 1; - PaginationRequest pagination = 2; -} - -message ListOrganizationMembersResponse { - // members are the organization members of this Organization - repeated OrganizationMember members = 1; - PaginationResponse pagination = 2; -} - -message UpdateOrganizationMemberRequest { - // organization_id is the ID of the organization in which the role is to be updated - string organization_id = 1; - - // user_id is the user for which the membership shall be updated. - string user_id = 2; - - // role is the new role for the user in the organization - OrganizationRole role = 3; -} - -message UpdateOrganizationMemberResponse { -} - -message DeleteOrganizationMemberRequest { - // organization_id is the ID of the organization in which a member should be deleted. - string organization_id = 1; - - // user_id is the ID of the user that should be deleted from the organization. - string user_id = 2; -} - -message DeleteOrganizationMemberResponse {} diff --git a/components/public-api/gitpod/v1/organization.proto b/components/public-api/gitpod/v1/organization.proto new file mode 100644 index 00000000000000..c36d84f3e0ac95 --- /dev/null +++ b/components/public-api/gitpod/v1/organization.proto @@ -0,0 +1,246 @@ +syntax = "proto3"; + +package gitpod.v1; + +import "google/protobuf/timestamp.proto"; +import "gitpod/v1/pagination.proto"; + +option go_package = "github.com/gitpod-io/gitpod/components/public-api/go/v1"; + +message Organization { + string id = 1; + string name = 2; + google.protobuf.Timestamp creation_time = 3; + string slug = 4; +} + +message OrganizationMember { + string user_id = 1; + OrganizationRole role = 2; + google.protobuf.Timestamp member_since = 3; + optional string avatar_url = 4; + optional string full_name = 5; + optional string email = 6; + bool owned_by_organization = 7; +} + +enum OrganizationRole { + ORGANIZATION_ROLE_UNSPECIFIED = 0; + ORGANIZATION_ROLE_OWNER = 1; + ORGANIZATION_ROLE_MEMBER = 2; +} + +message OrganizationSettings { + bool workspace_sharing_disabled = 1; + optional string default_workspace_image = 2; +} + +service OrganizationService { + // CreateOrganization creates a new Organization. + rpc CreateOrganization(CreateOrganizationRequest) + returns (CreateOrganizationResponse) {}; + + // GetOrganization retrieves a single Organization. + rpc GetOrganization(GetOrganizationRequest) + returns (GetOrganizationResponse) {} + + // UpdateOrganization updates the properties of an Organization. + rpc UpdateOrganization(UpdateOrganizationRequest) + returns (UpdateOrganizationResponse) {}; + + // ListOrganizations lists all organization the caller has access to. + rpc ListOrganizations(ListOrganizationsRequest) + returns (ListOrganizationsResponse) {}; + + // DeleteOrganization deletes the specified organization. + rpc DeleteOrganization(DeleteOrganizationRequest) + returns (DeleteOrganizationResponse) {}; + + // GetOrganizationInvitation retrieves the invitation for a Organization. + rpc GetOrganizationInvitation(GetOrganizationInvitationRequest) + returns (GetOrganizationInvitationResponse) {}; + + // JoinOrganization makes the caller a OrganizationMember of the Organization. + rpc JoinOrganization(JoinOrganizationRequest) + returns (JoinOrganizationResponse) {}; + + // ResetOrganizationInvitation resets the invitation_id for a Organization. + rpc ResetOrganizationInvitation(ResetOrganizationInvitationRequest) + returns (ResetOrganizationInvitationResponse) {}; + + // ListOrganizationMembers lists the members of a Organization. + rpc ListOrganizationMembers(ListOrganizationMembersRequest) + returns (ListOrganizationMembersResponse) {}; + + // UpdateOrganizationMember updates organization membership properties. + rpc UpdateOrganizationMember(UpdateOrganizationMemberRequest) + returns (UpdateOrganizationMemberResponse) {}; + + // DeleteOrganizationMember removes a OrganizationMember from the + // Organization. + rpc DeleteOrganizationMember(DeleteOrganizationMemberRequest) + returns (DeleteOrganizationMemberResponse) {}; + + // GetOrganizationSettings retrieves the settings of a Organization. + rpc GetOrganizationSettings(GetOrganizationSettingsRequest) + returns (GetOrganizationSettingsResponse) {}; + + // UpdateOrganizationSettings updates the settings of a Organization. + rpc UpdateOrganizationSettings(UpdateOrganizationSettingsRequest) + returns (UpdateOrganizationSettingsResponse) {}; +} + +message UpdateOrganizationRequest { + // organization_id is the ID of the organization to update the settings for. + string organization_id = 1; + + // name is the new name of the organization + string name = 2; +} + +message UpdateOrganizationResponse { + // organization is the updated organization + Organization organization = 1; +} + +message UpdateOrganizationSettingsRequest { + // organization_id is the ID of the organization to update the settings for. + string organization_id = 1; + + // settings are the settings to update + OrganizationSettings settings = 2; +} + +message UpdateOrganizationSettingsResponse { + // settings are the updated settings + OrganizationSettings settings = 1; +} + +message GetOrganizationSettingsRequest { + // organization_id is the ID of the organization to retrieve the settings for. + string organization_id = 1; +} + +message GetOrganizationSettingsResponse { + // settings are the settings of the organization + OrganizationSettings settings = 1; +} + +message CreateOrganizationRequest { + // name is the organization name + string name = 1; +} + +message CreateOrganizationResponse { + // organization is the created organization + Organization organization = 1; +} + +message GetOrganizationRequest { + // organization_id is the unique identifier of the Organization to retreive. + string organization_id = 1; +} + +message GetOrganizationResponse { + // organization is the requested organization + Organization organization = 1; +} + +message ListOrganizationsRequest { + // pagination contains the pagination options for listing organizations + PaginationRequest pagination = 1; + + // scope is the scope of the organizations to list + Scope scope = 2; + + enum Scope { + SCOPE_UNSPECIFIED = 0; + SCOPE_MEMBER = 1; + SCOPE_ALL = 2; + } +} + +message ListOrganizationsResponse { + // organizations are the organizations that matched the query + repeated Organization organizations = 1; + // pagination contains the pagination options for listing organizations + PaginationResponse pagination = 2; +} + +message DeleteOrganizationRequest { + // organization_id is the ID of the organization to delete + string organization_id = 1; +} + +message DeleteOrganizationResponse {} + +message GetOrganizationInvitationRequest { + // organization_id is the ID of the organization to retrieve the invitation + string organization_id = 1; +} + +message GetOrganizationInvitationResponse { + // invitation_id is the invitation ID for an Organization + string invitation_id = 1; +} + +message JoinOrganizationRequest { + // invitation_id is the invitation ID for an Organization + string invitation_id = 1; +} + +message JoinOrganizationResponse { + // organization_id is the id of the organization the user has just joined + string organization_id = 1; +} + +message ResetOrganizationInvitationRequest { + // organization_id is the ID of the organization to reset the invitation for. + string organization_id = 1; +} + +message ResetOrganizationInvitationResponse { + // invitation_id is the new invitation id for the organization. + string invitation_id = 1; +} + +message ListOrganizationMembersRequest { + // organization_id is the ID of the organization that contains the members to + // list + string organization_id = 1; + PaginationRequest pagination = 2; +} + +message ListOrganizationMembersResponse { + // members are the organization members of this Organization + repeated OrganizationMember members = 1; + PaginationResponse pagination = 2; +} + +message UpdateOrganizationMemberRequest { + // organization_id is the ID of the organization in which the role is to be + // updated + string organization_id = 1; + + // user_id is the user for which the membership shall be updated. + string user_id = 2; + + // role is the new role for the user in the organization + OrganizationRole role = 3; +} + +message UpdateOrganizationMemberResponse { + // member is the updated organization member + OrganizationMember member = 1; +} + +message DeleteOrganizationMemberRequest { + // organization_id is the ID of the organization in which a member should be + // deleted. + string organization_id = 1; + + // user_id is the ID of the user that should be deleted from the organization. + string user_id = 2; +} + +message DeleteOrganizationMemberResponse {} diff --git a/components/public-api/gitpod/experimental/v2/pagination.proto b/components/public-api/gitpod/v1/pagination.proto similarity index 89% rename from components/public-api/gitpod/experimental/v2/pagination.proto rename to components/public-api/gitpod/v1/pagination.proto index e7f8dc251d4972..0f58ca8f6aab28 100644 --- a/components/public-api/gitpod/experimental/v2/pagination.proto +++ b/components/public-api/gitpod/v1/pagination.proto @@ -1,8 +1,8 @@ syntax = "proto3"; -package gitpod.experimental.v2; +package gitpod.v1; -option go_package = "github.com/gitpod-io/gitpod/components/public-api/go/experimental/v2"; +option go_package = "github.com/gitpod-io/gitpod/components/public-api/go/v1"; message PaginationRequest { // Page size is the maximum number of results to retrieve per page. diff --git a/components/public-api/gitpod/experimental/v2/workspace.proto b/components/public-api/gitpod/v1/workspace.proto similarity index 99% rename from components/public-api/gitpod/experimental/v2/workspace.proto rename to components/public-api/gitpod/v1/workspace.proto index cf9c006b46f90a..91ed2e61898e4c 100644 --- a/components/public-api/gitpod/experimental/v2/workspace.proto +++ b/components/public-api/gitpod/v1/workspace.proto @@ -1,10 +1,10 @@ syntax = "proto3"; -package gitpod.experimental.v2; +package gitpod.v1; import "google/protobuf/timestamp.proto"; -option go_package = "github.com/gitpod-io/gitpod/components/public-api/go/experimental/v2"; +option go_package = "github.com/gitpod-io/gitpod/components/public-api/go/v1"; service WorkspaceService { // GetWorkspace returns a single workspace. diff --git a/components/public-api/go/experimental/v2/v2connect/organization.connect.go b/components/public-api/go/experimental/v2/v2connect/organization.connect.go deleted file mode 100644 index 6bdcf59442f5e8..00000000000000 --- a/components/public-api/go/experimental/v2/v2connect/organization.connect.go +++ /dev/null @@ -1,386 +0,0 @@ -// Copyright (c) 2023 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. - -// Code generated by protoc-gen-connect-go. DO NOT EDIT. -// -// Source: gitpod/experimental/v2/organization.proto - -package v2connect - -import ( - context "context" - errors "errors" - connect_go "github.com/bufbuild/connect-go" - v2 "github.com/gitpod-io/gitpod/components/public-api/go/experimental/v2" - http "net/http" - strings "strings" -) - -// This is a compile-time assertion to ensure that this generated file and the connect package are -// compatible. If you get a compiler error that this constant is not defined, this code was -// generated with a version of connect newer than the one compiled into your binary. You can fix the -// problem by either regenerating this code with an older version of connect or updating the connect -// version compiled into your binary. -const _ = connect_go.IsAtLeastVersion0_1_0 - -const ( - // OrganizationServiceName is the fully-qualified name of the OrganizationService service. - OrganizationServiceName = "gitpod.experimental.v2.OrganizationService" -) - -// OrganizationServiceClient is a client for the gitpod.experimental.v2.OrganizationService service. -type OrganizationServiceClient interface { - // CreateOrganization creates a new Organization. - CreateOrganization(context.Context, *connect_go.Request[v2.CreateOrganizationRequest]) (*connect_go.Response[v2.CreateOrganizationResponse], error) - // GetOrganization retrieves a single Organization. - GetOrganization(context.Context, *connect_go.Request[v2.GetOrganizationRequest]) (*connect_go.Response[v2.GetOrganizationResponse], error) - // UpdateOrganization updates the properties of an Organization. - UpdateOrganization(context.Context, *connect_go.Request[v2.UpdateOrganizationRequest]) (*connect_go.Response[v2.UpdateOrganizationResponse], error) - // ListOrganizations lists all organization the caller has access to. - ListOrganizations(context.Context, *connect_go.Request[v2.ListOrganizationsRequest]) (*connect_go.Response[v2.ListOrganizationsResponse], error) - // DeleteOrganization deletes the specified organization. - DeleteOrganization(context.Context, *connect_go.Request[v2.DeleteOrganizationRequest]) (*connect_go.Response[v2.DeleteOrganizationResponse], error) - // GetOrganizationInvitation retrieves the invitation for a Organization. - GetOrganizationInvitation(context.Context, *connect_go.Request[v2.GetOrganizationInvitationRequest]) (*connect_go.Response[v2.GetOrganizationInvitationResponse], error) - // JoinOrganization makes the caller a OrganizationMember of the Organization. - JoinOrganization(context.Context, *connect_go.Request[v2.JoinOrganizationRequest]) (*connect_go.Response[v2.JoinOrganizationResponse], error) - // ResetOrganizationInvitation resets the invitation_id for a Organization. - ResetOrganizationInvitation(context.Context, *connect_go.Request[v2.ResetOrganizationInvitationRequest]) (*connect_go.Response[v2.ResetOrganizationInvitationResponse], error) - // ListOrganizationMembers lists the members of a Organization. - ListOrganizationMembers(context.Context, *connect_go.Request[v2.ListOrganizationMembersRequest]) (*connect_go.Response[v2.ListOrganizationMembersResponse], error) - // UpdateOrganizationMember updates organization membership properties. - UpdateOrganizationMember(context.Context, *connect_go.Request[v2.UpdateOrganizationMemberRequest]) (*connect_go.Response[v2.UpdateOrganizationMemberResponse], error) - // DeleteOrganizationMember removes a OrganizationMember from the Organization. - DeleteOrganizationMember(context.Context, *connect_go.Request[v2.DeleteOrganizationMemberRequest]) (*connect_go.Response[v2.DeleteOrganizationMemberResponse], error) - // GetOrganizationSettings retrieves the settings of a Organization. - GetOrganizationSettings(context.Context, *connect_go.Request[v2.GetOrganizationSettingsRequest]) (*connect_go.Response[v2.GetOrganizationSettingsResponse], error) - // UpdateOrganizationSettings updates the settings of a Organization. - UpdateOrganizationSettings(context.Context, *connect_go.Request[v2.UpdateOrganizationSettingsRequest]) (*connect_go.Response[v2.UpdateOrganizationSettingsResponse], error) -} - -// NewOrganizationServiceClient constructs a client for the -// gitpod.experimental.v2.OrganizationService service. By default, it uses the Connect protocol with -// the binary Protobuf Codec, asks for gzipped responses, and sends uncompressed requests. To use -// the gRPC or gRPC-Web protocols, supply the connect.WithGRPC() or connect.WithGRPCWeb() options. -// -// The URL supplied here should be the base URL for the Connect or gRPC server (for example, -// http://api.acme.com or https://acme.com/grpc). -func NewOrganizationServiceClient(httpClient connect_go.HTTPClient, baseURL string, opts ...connect_go.ClientOption) OrganizationServiceClient { - baseURL = strings.TrimRight(baseURL, "/") - return &organizationServiceClient{ - createOrganization: connect_go.NewClient[v2.CreateOrganizationRequest, v2.CreateOrganizationResponse]( - httpClient, - baseURL+"/gitpod.experimental.v2.OrganizationService/CreateOrganization", - opts..., - ), - getOrganization: connect_go.NewClient[v2.GetOrganizationRequest, v2.GetOrganizationResponse]( - httpClient, - baseURL+"/gitpod.experimental.v2.OrganizationService/GetOrganization", - opts..., - ), - updateOrganization: connect_go.NewClient[v2.UpdateOrganizationRequest, v2.UpdateOrganizationResponse]( - httpClient, - baseURL+"/gitpod.experimental.v2.OrganizationService/UpdateOrganization", - opts..., - ), - listOrganizations: connect_go.NewClient[v2.ListOrganizationsRequest, v2.ListOrganizationsResponse]( - httpClient, - baseURL+"/gitpod.experimental.v2.OrganizationService/ListOrganizations", - opts..., - ), - deleteOrganization: connect_go.NewClient[v2.DeleteOrganizationRequest, v2.DeleteOrganizationResponse]( - httpClient, - baseURL+"/gitpod.experimental.v2.OrganizationService/DeleteOrganization", - opts..., - ), - getOrganizationInvitation: connect_go.NewClient[v2.GetOrganizationInvitationRequest, v2.GetOrganizationInvitationResponse]( - httpClient, - baseURL+"/gitpod.experimental.v2.OrganizationService/GetOrganizationInvitation", - opts..., - ), - joinOrganization: connect_go.NewClient[v2.JoinOrganizationRequest, v2.JoinOrganizationResponse]( - httpClient, - baseURL+"/gitpod.experimental.v2.OrganizationService/JoinOrganization", - opts..., - ), - resetOrganizationInvitation: connect_go.NewClient[v2.ResetOrganizationInvitationRequest, v2.ResetOrganizationInvitationResponse]( - httpClient, - baseURL+"/gitpod.experimental.v2.OrganizationService/ResetOrganizationInvitation", - opts..., - ), - listOrganizationMembers: connect_go.NewClient[v2.ListOrganizationMembersRequest, v2.ListOrganizationMembersResponse]( - httpClient, - baseURL+"/gitpod.experimental.v2.OrganizationService/ListOrganizationMembers", - opts..., - ), - updateOrganizationMember: connect_go.NewClient[v2.UpdateOrganizationMemberRequest, v2.UpdateOrganizationMemberResponse]( - httpClient, - baseURL+"/gitpod.experimental.v2.OrganizationService/UpdateOrganizationMember", - opts..., - ), - deleteOrganizationMember: connect_go.NewClient[v2.DeleteOrganizationMemberRequest, v2.DeleteOrganizationMemberResponse]( - httpClient, - baseURL+"/gitpod.experimental.v2.OrganizationService/DeleteOrganizationMember", - opts..., - ), - getOrganizationSettings: connect_go.NewClient[v2.GetOrganizationSettingsRequest, v2.GetOrganizationSettingsResponse]( - httpClient, - baseURL+"/gitpod.experimental.v2.OrganizationService/GetOrganizationSettings", - opts..., - ), - updateOrganizationSettings: connect_go.NewClient[v2.UpdateOrganizationSettingsRequest, v2.UpdateOrganizationSettingsResponse]( - httpClient, - baseURL+"/gitpod.experimental.v2.OrganizationService/UpdateOrganizationSettings", - opts..., - ), - } -} - -// organizationServiceClient implements OrganizationServiceClient. -type organizationServiceClient struct { - createOrganization *connect_go.Client[v2.CreateOrganizationRequest, v2.CreateOrganizationResponse] - getOrganization *connect_go.Client[v2.GetOrganizationRequest, v2.GetOrganizationResponse] - updateOrganization *connect_go.Client[v2.UpdateOrganizationRequest, v2.UpdateOrganizationResponse] - listOrganizations *connect_go.Client[v2.ListOrganizationsRequest, v2.ListOrganizationsResponse] - deleteOrganization *connect_go.Client[v2.DeleteOrganizationRequest, v2.DeleteOrganizationResponse] - getOrganizationInvitation *connect_go.Client[v2.GetOrganizationInvitationRequest, v2.GetOrganizationInvitationResponse] - joinOrganization *connect_go.Client[v2.JoinOrganizationRequest, v2.JoinOrganizationResponse] - resetOrganizationInvitation *connect_go.Client[v2.ResetOrganizationInvitationRequest, v2.ResetOrganizationInvitationResponse] - listOrganizationMembers *connect_go.Client[v2.ListOrganizationMembersRequest, v2.ListOrganizationMembersResponse] - updateOrganizationMember *connect_go.Client[v2.UpdateOrganizationMemberRequest, v2.UpdateOrganizationMemberResponse] - deleteOrganizationMember *connect_go.Client[v2.DeleteOrganizationMemberRequest, v2.DeleteOrganizationMemberResponse] - getOrganizationSettings *connect_go.Client[v2.GetOrganizationSettingsRequest, v2.GetOrganizationSettingsResponse] - updateOrganizationSettings *connect_go.Client[v2.UpdateOrganizationSettingsRequest, v2.UpdateOrganizationSettingsResponse] -} - -// CreateOrganization calls gitpod.experimental.v2.OrganizationService.CreateOrganization. -func (c *organizationServiceClient) CreateOrganization(ctx context.Context, req *connect_go.Request[v2.CreateOrganizationRequest]) (*connect_go.Response[v2.CreateOrganizationResponse], error) { - return c.createOrganization.CallUnary(ctx, req) -} - -// GetOrganization calls gitpod.experimental.v2.OrganizationService.GetOrganization. -func (c *organizationServiceClient) GetOrganization(ctx context.Context, req *connect_go.Request[v2.GetOrganizationRequest]) (*connect_go.Response[v2.GetOrganizationResponse], error) { - return c.getOrganization.CallUnary(ctx, req) -} - -// UpdateOrganization calls gitpod.experimental.v2.OrganizationService.UpdateOrganization. -func (c *organizationServiceClient) UpdateOrganization(ctx context.Context, req *connect_go.Request[v2.UpdateOrganizationRequest]) (*connect_go.Response[v2.UpdateOrganizationResponse], error) { - return c.updateOrganization.CallUnary(ctx, req) -} - -// ListOrganizations calls gitpod.experimental.v2.OrganizationService.ListOrganizations. -func (c *organizationServiceClient) ListOrganizations(ctx context.Context, req *connect_go.Request[v2.ListOrganizationsRequest]) (*connect_go.Response[v2.ListOrganizationsResponse], error) { - return c.listOrganizations.CallUnary(ctx, req) -} - -// DeleteOrganization calls gitpod.experimental.v2.OrganizationService.DeleteOrganization. -func (c *organizationServiceClient) DeleteOrganization(ctx context.Context, req *connect_go.Request[v2.DeleteOrganizationRequest]) (*connect_go.Response[v2.DeleteOrganizationResponse], error) { - return c.deleteOrganization.CallUnary(ctx, req) -} - -// GetOrganizationInvitation calls -// gitpod.experimental.v2.OrganizationService.GetOrganizationInvitation. -func (c *organizationServiceClient) GetOrganizationInvitation(ctx context.Context, req *connect_go.Request[v2.GetOrganizationInvitationRequest]) (*connect_go.Response[v2.GetOrganizationInvitationResponse], error) { - return c.getOrganizationInvitation.CallUnary(ctx, req) -} - -// JoinOrganization calls gitpod.experimental.v2.OrganizationService.JoinOrganization. -func (c *organizationServiceClient) JoinOrganization(ctx context.Context, req *connect_go.Request[v2.JoinOrganizationRequest]) (*connect_go.Response[v2.JoinOrganizationResponse], error) { - return c.joinOrganization.CallUnary(ctx, req) -} - -// ResetOrganizationInvitation calls -// gitpod.experimental.v2.OrganizationService.ResetOrganizationInvitation. -func (c *organizationServiceClient) ResetOrganizationInvitation(ctx context.Context, req *connect_go.Request[v2.ResetOrganizationInvitationRequest]) (*connect_go.Response[v2.ResetOrganizationInvitationResponse], error) { - return c.resetOrganizationInvitation.CallUnary(ctx, req) -} - -// ListOrganizationMembers calls gitpod.experimental.v2.OrganizationService.ListOrganizationMembers. -func (c *organizationServiceClient) ListOrganizationMembers(ctx context.Context, req *connect_go.Request[v2.ListOrganizationMembersRequest]) (*connect_go.Response[v2.ListOrganizationMembersResponse], error) { - return c.listOrganizationMembers.CallUnary(ctx, req) -} - -// UpdateOrganizationMember calls -// gitpod.experimental.v2.OrganizationService.UpdateOrganizationMember. -func (c *organizationServiceClient) UpdateOrganizationMember(ctx context.Context, req *connect_go.Request[v2.UpdateOrganizationMemberRequest]) (*connect_go.Response[v2.UpdateOrganizationMemberResponse], error) { - return c.updateOrganizationMember.CallUnary(ctx, req) -} - -// DeleteOrganizationMember calls -// gitpod.experimental.v2.OrganizationService.DeleteOrganizationMember. -func (c *organizationServiceClient) DeleteOrganizationMember(ctx context.Context, req *connect_go.Request[v2.DeleteOrganizationMemberRequest]) (*connect_go.Response[v2.DeleteOrganizationMemberResponse], error) { - return c.deleteOrganizationMember.CallUnary(ctx, req) -} - -// GetOrganizationSettings calls gitpod.experimental.v2.OrganizationService.GetOrganizationSettings. -func (c *organizationServiceClient) GetOrganizationSettings(ctx context.Context, req *connect_go.Request[v2.GetOrganizationSettingsRequest]) (*connect_go.Response[v2.GetOrganizationSettingsResponse], error) { - return c.getOrganizationSettings.CallUnary(ctx, req) -} - -// UpdateOrganizationSettings calls -// gitpod.experimental.v2.OrganizationService.UpdateOrganizationSettings. -func (c *organizationServiceClient) UpdateOrganizationSettings(ctx context.Context, req *connect_go.Request[v2.UpdateOrganizationSettingsRequest]) (*connect_go.Response[v2.UpdateOrganizationSettingsResponse], error) { - return c.updateOrganizationSettings.CallUnary(ctx, req) -} - -// OrganizationServiceHandler is an implementation of the gitpod.experimental.v2.OrganizationService -// service. -type OrganizationServiceHandler interface { - // CreateOrganization creates a new Organization. - CreateOrganization(context.Context, *connect_go.Request[v2.CreateOrganizationRequest]) (*connect_go.Response[v2.CreateOrganizationResponse], error) - // GetOrganization retrieves a single Organization. - GetOrganization(context.Context, *connect_go.Request[v2.GetOrganizationRequest]) (*connect_go.Response[v2.GetOrganizationResponse], error) - // UpdateOrganization updates the properties of an Organization. - UpdateOrganization(context.Context, *connect_go.Request[v2.UpdateOrganizationRequest]) (*connect_go.Response[v2.UpdateOrganizationResponse], error) - // ListOrganizations lists all organization the caller has access to. - ListOrganizations(context.Context, *connect_go.Request[v2.ListOrganizationsRequest]) (*connect_go.Response[v2.ListOrganizationsResponse], error) - // DeleteOrganization deletes the specified organization. - DeleteOrganization(context.Context, *connect_go.Request[v2.DeleteOrganizationRequest]) (*connect_go.Response[v2.DeleteOrganizationResponse], error) - // GetOrganizationInvitation retrieves the invitation for a Organization. - GetOrganizationInvitation(context.Context, *connect_go.Request[v2.GetOrganizationInvitationRequest]) (*connect_go.Response[v2.GetOrganizationInvitationResponse], error) - // JoinOrganization makes the caller a OrganizationMember of the Organization. - JoinOrganization(context.Context, *connect_go.Request[v2.JoinOrganizationRequest]) (*connect_go.Response[v2.JoinOrganizationResponse], error) - // ResetOrganizationInvitation resets the invitation_id for a Organization. - ResetOrganizationInvitation(context.Context, *connect_go.Request[v2.ResetOrganizationInvitationRequest]) (*connect_go.Response[v2.ResetOrganizationInvitationResponse], error) - // ListOrganizationMembers lists the members of a Organization. - ListOrganizationMembers(context.Context, *connect_go.Request[v2.ListOrganizationMembersRequest]) (*connect_go.Response[v2.ListOrganizationMembersResponse], error) - // UpdateOrganizationMember updates organization membership properties. - UpdateOrganizationMember(context.Context, *connect_go.Request[v2.UpdateOrganizationMemberRequest]) (*connect_go.Response[v2.UpdateOrganizationMemberResponse], error) - // DeleteOrganizationMember removes a OrganizationMember from the Organization. - DeleteOrganizationMember(context.Context, *connect_go.Request[v2.DeleteOrganizationMemberRequest]) (*connect_go.Response[v2.DeleteOrganizationMemberResponse], error) - // GetOrganizationSettings retrieves the settings of a Organization. - GetOrganizationSettings(context.Context, *connect_go.Request[v2.GetOrganizationSettingsRequest]) (*connect_go.Response[v2.GetOrganizationSettingsResponse], error) - // UpdateOrganizationSettings updates the settings of a Organization. - UpdateOrganizationSettings(context.Context, *connect_go.Request[v2.UpdateOrganizationSettingsRequest]) (*connect_go.Response[v2.UpdateOrganizationSettingsResponse], error) -} - -// NewOrganizationServiceHandler builds an HTTP handler from the service implementation. It returns -// the path on which to mount the handler and the handler itself. -// -// By default, handlers support the Connect, gRPC, and gRPC-Web protocols with the binary Protobuf -// and JSON codecs. They also support gzip compression. -func NewOrganizationServiceHandler(svc OrganizationServiceHandler, opts ...connect_go.HandlerOption) (string, http.Handler) { - mux := http.NewServeMux() - mux.Handle("/gitpod.experimental.v2.OrganizationService/CreateOrganization", connect_go.NewUnaryHandler( - "/gitpod.experimental.v2.OrganizationService/CreateOrganization", - svc.CreateOrganization, - opts..., - )) - mux.Handle("/gitpod.experimental.v2.OrganizationService/GetOrganization", connect_go.NewUnaryHandler( - "/gitpod.experimental.v2.OrganizationService/GetOrganization", - svc.GetOrganization, - opts..., - )) - mux.Handle("/gitpod.experimental.v2.OrganizationService/UpdateOrganization", connect_go.NewUnaryHandler( - "/gitpod.experimental.v2.OrganizationService/UpdateOrganization", - svc.UpdateOrganization, - opts..., - )) - mux.Handle("/gitpod.experimental.v2.OrganizationService/ListOrganizations", connect_go.NewUnaryHandler( - "/gitpod.experimental.v2.OrganizationService/ListOrganizations", - svc.ListOrganizations, - opts..., - )) - mux.Handle("/gitpod.experimental.v2.OrganizationService/DeleteOrganization", connect_go.NewUnaryHandler( - "/gitpod.experimental.v2.OrganizationService/DeleteOrganization", - svc.DeleteOrganization, - opts..., - )) - mux.Handle("/gitpod.experimental.v2.OrganizationService/GetOrganizationInvitation", connect_go.NewUnaryHandler( - "/gitpod.experimental.v2.OrganizationService/GetOrganizationInvitation", - svc.GetOrganizationInvitation, - opts..., - )) - mux.Handle("/gitpod.experimental.v2.OrganizationService/JoinOrganization", connect_go.NewUnaryHandler( - "/gitpod.experimental.v2.OrganizationService/JoinOrganization", - svc.JoinOrganization, - opts..., - )) - mux.Handle("/gitpod.experimental.v2.OrganizationService/ResetOrganizationInvitation", connect_go.NewUnaryHandler( - "/gitpod.experimental.v2.OrganizationService/ResetOrganizationInvitation", - svc.ResetOrganizationInvitation, - opts..., - )) - mux.Handle("/gitpod.experimental.v2.OrganizationService/ListOrganizationMembers", connect_go.NewUnaryHandler( - "/gitpod.experimental.v2.OrganizationService/ListOrganizationMembers", - svc.ListOrganizationMembers, - opts..., - )) - mux.Handle("/gitpod.experimental.v2.OrganizationService/UpdateOrganizationMember", connect_go.NewUnaryHandler( - "/gitpod.experimental.v2.OrganizationService/UpdateOrganizationMember", - svc.UpdateOrganizationMember, - opts..., - )) - mux.Handle("/gitpod.experimental.v2.OrganizationService/DeleteOrganizationMember", connect_go.NewUnaryHandler( - "/gitpod.experimental.v2.OrganizationService/DeleteOrganizationMember", - svc.DeleteOrganizationMember, - opts..., - )) - mux.Handle("/gitpod.experimental.v2.OrganizationService/GetOrganizationSettings", connect_go.NewUnaryHandler( - "/gitpod.experimental.v2.OrganizationService/GetOrganizationSettings", - svc.GetOrganizationSettings, - opts..., - )) - mux.Handle("/gitpod.experimental.v2.OrganizationService/UpdateOrganizationSettings", connect_go.NewUnaryHandler( - "/gitpod.experimental.v2.OrganizationService/UpdateOrganizationSettings", - svc.UpdateOrganizationSettings, - opts..., - )) - return "/gitpod.experimental.v2.OrganizationService/", mux -} - -// UnimplementedOrganizationServiceHandler returns CodeUnimplemented from all methods. -type UnimplementedOrganizationServiceHandler struct{} - -func (UnimplementedOrganizationServiceHandler) CreateOrganization(context.Context, *connect_go.Request[v2.CreateOrganizationRequest]) (*connect_go.Response[v2.CreateOrganizationResponse], error) { - return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("gitpod.experimental.v2.OrganizationService.CreateOrganization is not implemented")) -} - -func (UnimplementedOrganizationServiceHandler) GetOrganization(context.Context, *connect_go.Request[v2.GetOrganizationRequest]) (*connect_go.Response[v2.GetOrganizationResponse], error) { - return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("gitpod.experimental.v2.OrganizationService.GetOrganization is not implemented")) -} - -func (UnimplementedOrganizationServiceHandler) UpdateOrganization(context.Context, *connect_go.Request[v2.UpdateOrganizationRequest]) (*connect_go.Response[v2.UpdateOrganizationResponse], error) { - return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("gitpod.experimental.v2.OrganizationService.UpdateOrganization is not implemented")) -} - -func (UnimplementedOrganizationServiceHandler) ListOrganizations(context.Context, *connect_go.Request[v2.ListOrganizationsRequest]) (*connect_go.Response[v2.ListOrganizationsResponse], error) { - return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("gitpod.experimental.v2.OrganizationService.ListOrganizations is not implemented")) -} - -func (UnimplementedOrganizationServiceHandler) DeleteOrganization(context.Context, *connect_go.Request[v2.DeleteOrganizationRequest]) (*connect_go.Response[v2.DeleteOrganizationResponse], error) { - return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("gitpod.experimental.v2.OrganizationService.DeleteOrganization is not implemented")) -} - -func (UnimplementedOrganizationServiceHandler) GetOrganizationInvitation(context.Context, *connect_go.Request[v2.GetOrganizationInvitationRequest]) (*connect_go.Response[v2.GetOrganizationInvitationResponse], error) { - return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("gitpod.experimental.v2.OrganizationService.GetOrganizationInvitation is not implemented")) -} - -func (UnimplementedOrganizationServiceHandler) JoinOrganization(context.Context, *connect_go.Request[v2.JoinOrganizationRequest]) (*connect_go.Response[v2.JoinOrganizationResponse], error) { - return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("gitpod.experimental.v2.OrganizationService.JoinOrganization is not implemented")) -} - -func (UnimplementedOrganizationServiceHandler) ResetOrganizationInvitation(context.Context, *connect_go.Request[v2.ResetOrganizationInvitationRequest]) (*connect_go.Response[v2.ResetOrganizationInvitationResponse], error) { - return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("gitpod.experimental.v2.OrganizationService.ResetOrganizationInvitation is not implemented")) -} - -func (UnimplementedOrganizationServiceHandler) ListOrganizationMembers(context.Context, *connect_go.Request[v2.ListOrganizationMembersRequest]) (*connect_go.Response[v2.ListOrganizationMembersResponse], error) { - return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("gitpod.experimental.v2.OrganizationService.ListOrganizationMembers is not implemented")) -} - -func (UnimplementedOrganizationServiceHandler) UpdateOrganizationMember(context.Context, *connect_go.Request[v2.UpdateOrganizationMemberRequest]) (*connect_go.Response[v2.UpdateOrganizationMemberResponse], error) { - return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("gitpod.experimental.v2.OrganizationService.UpdateOrganizationMember is not implemented")) -} - -func (UnimplementedOrganizationServiceHandler) DeleteOrganizationMember(context.Context, *connect_go.Request[v2.DeleteOrganizationMemberRequest]) (*connect_go.Response[v2.DeleteOrganizationMemberResponse], error) { - return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("gitpod.experimental.v2.OrganizationService.DeleteOrganizationMember is not implemented")) -} - -func (UnimplementedOrganizationServiceHandler) GetOrganizationSettings(context.Context, *connect_go.Request[v2.GetOrganizationSettingsRequest]) (*connect_go.Response[v2.GetOrganizationSettingsResponse], error) { - return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("gitpod.experimental.v2.OrganizationService.GetOrganizationSettings is not implemented")) -} - -func (UnimplementedOrganizationServiceHandler) UpdateOrganizationSettings(context.Context, *connect_go.Request[v2.UpdateOrganizationSettingsRequest]) (*connect_go.Response[v2.UpdateOrganizationSettingsResponse], error) { - return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("gitpod.experimental.v2.OrganizationService.UpdateOrganizationSettings is not implemented")) -} diff --git a/components/public-api/go/experimental/v2/organization.pb.go b/components/public-api/go/v1/organization.pb.go similarity index 54% rename from components/public-api/go/experimental/v2/organization.pb.go rename to components/public-api/go/v1/organization.pb.go index d22853dafaf810..f3bede2a109fa1 100644 --- a/components/public-api/go/experimental/v2/organization.pb.go +++ b/components/public-api/go/v1/organization.pb.go @@ -6,9 +6,9 @@ // versions: // protoc-gen-go v1.28.1 // protoc (unknown) -// source: gitpod/experimental/v2/organization.proto +// source: gitpod/v1/organization.proto -package v2 +package v1 import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -58,11 +58,11 @@ func (x OrganizationRole) String() string { } func (OrganizationRole) Descriptor() protoreflect.EnumDescriptor { - return file_gitpod_experimental_v2_organization_proto_enumTypes[0].Descriptor() + return file_gitpod_v1_organization_proto_enumTypes[0].Descriptor() } func (OrganizationRole) Type() protoreflect.EnumType { - return &file_gitpod_experimental_v2_organization_proto_enumTypes[0] + return &file_gitpod_v1_organization_proto_enumTypes[0] } func (x OrganizationRole) Number() protoreflect.EnumNumber { @@ -71,7 +71,56 @@ func (x OrganizationRole) Number() protoreflect.EnumNumber { // Deprecated: Use OrganizationRole.Descriptor instead. func (OrganizationRole) EnumDescriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_organization_proto_rawDescGZIP(), []int{0} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{0} +} + +type ListOrganizationsRequest_Scope int32 + +const ( + ListOrganizationsRequest_SCOPE_UNSPECIFIED ListOrganizationsRequest_Scope = 0 + ListOrganizationsRequest_SCOPE_MEMBER ListOrganizationsRequest_Scope = 1 + ListOrganizationsRequest_SCOPE_ALL ListOrganizationsRequest_Scope = 2 +) + +// Enum value maps for ListOrganizationsRequest_Scope. +var ( + ListOrganizationsRequest_Scope_name = map[int32]string{ + 0: "SCOPE_UNSPECIFIED", + 1: "SCOPE_MEMBER", + 2: "SCOPE_ALL", + } + ListOrganizationsRequest_Scope_value = map[string]int32{ + "SCOPE_UNSPECIFIED": 0, + "SCOPE_MEMBER": 1, + "SCOPE_ALL": 2, + } +) + +func (x ListOrganizationsRequest_Scope) Enum() *ListOrganizationsRequest_Scope { + p := new(ListOrganizationsRequest_Scope) + *p = x + return p +} + +func (x ListOrganizationsRequest_Scope) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ListOrganizationsRequest_Scope) Descriptor() protoreflect.EnumDescriptor { + return file_gitpod_v1_organization_proto_enumTypes[1].Descriptor() +} + +func (ListOrganizationsRequest_Scope) Type() protoreflect.EnumType { + return &file_gitpod_v1_organization_proto_enumTypes[1] +} + +func (x ListOrganizationsRequest_Scope) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ListOrganizationsRequest_Scope.Descriptor instead. +func (ListOrganizationsRequest_Scope) EnumDescriptor() ([]byte, []int) { + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{13, 0} } type Organization struct { @@ -82,12 +131,13 @@ type Organization struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` CreationTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=creation_time,json=creationTime,proto3" json:"creation_time,omitempty"` + Slug string `protobuf:"bytes,4,opt,name=slug,proto3" json:"slug,omitempty"` } func (x *Organization) Reset() { *x = Organization{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[0] + mi := &file_gitpod_v1_organization_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -100,7 +150,7 @@ func (x *Organization) String() string { func (*Organization) ProtoMessage() {} func (x *Organization) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[0] + mi := &file_gitpod_v1_organization_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -113,7 +163,7 @@ func (x *Organization) ProtoReflect() protoreflect.Message { // Deprecated: Use Organization.ProtoReflect.Descriptor instead. func (*Organization) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_organization_proto_rawDescGZIP(), []int{0} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{0} } func (x *Organization) GetId() string { @@ -137,13 +187,20 @@ func (x *Organization) GetCreationTime() *timestamppb.Timestamp { return nil } +func (x *Organization) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + type OrganizationMember struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` - Role OrganizationRole `protobuf:"varint,2,opt,name=role,proto3,enum=gitpod.experimental.v2.OrganizationRole" json:"role,omitempty"` + Role OrganizationRole `protobuf:"varint,2,opt,name=role,proto3,enum=gitpod.v1.OrganizationRole" json:"role,omitempty"` MemberSince *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=member_since,json=memberSince,proto3" json:"member_since,omitempty"` AvatarUrl *string `protobuf:"bytes,4,opt,name=avatar_url,json=avatarUrl,proto3,oneof" json:"avatar_url,omitempty"` FullName *string `protobuf:"bytes,5,opt,name=full_name,json=fullName,proto3,oneof" json:"full_name,omitempty"` @@ -154,7 +211,7 @@ type OrganizationMember struct { func (x *OrganizationMember) Reset() { *x = OrganizationMember{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[1] + mi := &file_gitpod_v1_organization_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -167,7 +224,7 @@ func (x *OrganizationMember) String() string { func (*OrganizationMember) ProtoMessage() {} func (x *OrganizationMember) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[1] + mi := &file_gitpod_v1_organization_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -180,7 +237,7 @@ func (x *OrganizationMember) ProtoReflect() protoreflect.Message { // Deprecated: Use OrganizationMember.ProtoReflect.Descriptor instead. func (*OrganizationMember) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_organization_proto_rawDescGZIP(), []int{1} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{1} } func (x *OrganizationMember) GetUserId() string { @@ -244,7 +301,7 @@ type OrganizationSettings struct { func (x *OrganizationSettings) Reset() { *x = OrganizationSettings{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[2] + mi := &file_gitpod_v1_organization_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -257,7 +314,7 @@ func (x *OrganizationSettings) String() string { func (*OrganizationSettings) ProtoMessage() {} func (x *OrganizationSettings) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[2] + mi := &file_gitpod_v1_organization_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -270,7 +327,7 @@ func (x *OrganizationSettings) ProtoReflect() protoreflect.Message { // Deprecated: Use OrganizationSettings.ProtoReflect.Descriptor instead. func (*OrganizationSettings) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_organization_proto_rawDescGZIP(), []int{2} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{2} } func (x *OrganizationSettings) GetWorkspaceSharingDisabled() bool { @@ -301,7 +358,7 @@ type UpdateOrganizationRequest struct { func (x *UpdateOrganizationRequest) Reset() { *x = UpdateOrganizationRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[3] + mi := &file_gitpod_v1_organization_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -314,7 +371,7 @@ func (x *UpdateOrganizationRequest) String() string { func (*UpdateOrganizationRequest) ProtoMessage() {} func (x *UpdateOrganizationRequest) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[3] + mi := &file_gitpod_v1_organization_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -327,7 +384,7 @@ func (x *UpdateOrganizationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateOrganizationRequest.ProtoReflect.Descriptor instead. func (*UpdateOrganizationRequest) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_organization_proto_rawDescGZIP(), []int{3} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{3} } func (x *UpdateOrganizationRequest) GetOrganizationId() string { @@ -348,12 +405,15 @@ type UpdateOrganizationResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // organization is the updated organization + Organization *Organization `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` } func (x *UpdateOrganizationResponse) Reset() { *x = UpdateOrganizationResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[4] + mi := &file_gitpod_v1_organization_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -366,7 +426,7 @@ func (x *UpdateOrganizationResponse) String() string { func (*UpdateOrganizationResponse) ProtoMessage() {} func (x *UpdateOrganizationResponse) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[4] + mi := &file_gitpod_v1_organization_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -379,7 +439,14 @@ func (x *UpdateOrganizationResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateOrganizationResponse.ProtoReflect.Descriptor instead. func (*UpdateOrganizationResponse) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_organization_proto_rawDescGZIP(), []int{4} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{4} +} + +func (x *UpdateOrganizationResponse) GetOrganization() *Organization { + if x != nil { + return x.Organization + } + return nil } type UpdateOrganizationSettingsRequest struct { @@ -396,7 +463,7 @@ type UpdateOrganizationSettingsRequest struct { func (x *UpdateOrganizationSettingsRequest) Reset() { *x = UpdateOrganizationSettingsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[5] + mi := &file_gitpod_v1_organization_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -409,7 +476,7 @@ func (x *UpdateOrganizationSettingsRequest) String() string { func (*UpdateOrganizationSettingsRequest) ProtoMessage() {} func (x *UpdateOrganizationSettingsRequest) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[5] + mi := &file_gitpod_v1_organization_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -422,7 +489,7 @@ func (x *UpdateOrganizationSettingsRequest) ProtoReflect() protoreflect.Message // Deprecated: Use UpdateOrganizationSettingsRequest.ProtoReflect.Descriptor instead. func (*UpdateOrganizationSettingsRequest) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_organization_proto_rawDescGZIP(), []int{5} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{5} } func (x *UpdateOrganizationSettingsRequest) GetOrganizationId() string { @@ -443,12 +510,15 @@ type UpdateOrganizationSettingsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // settings are the updated settings + Settings *OrganizationSettings `protobuf:"bytes,1,opt,name=settings,proto3" json:"settings,omitempty"` } func (x *UpdateOrganizationSettingsResponse) Reset() { *x = UpdateOrganizationSettingsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[6] + mi := &file_gitpod_v1_organization_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -461,7 +531,7 @@ func (x *UpdateOrganizationSettingsResponse) String() string { func (*UpdateOrganizationSettingsResponse) ProtoMessage() {} func (x *UpdateOrganizationSettingsResponse) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[6] + mi := &file_gitpod_v1_organization_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -474,7 +544,14 @@ func (x *UpdateOrganizationSettingsResponse) ProtoReflect() protoreflect.Message // Deprecated: Use UpdateOrganizationSettingsResponse.ProtoReflect.Descriptor instead. func (*UpdateOrganizationSettingsResponse) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_organization_proto_rawDescGZIP(), []int{6} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{6} +} + +func (x *UpdateOrganizationSettingsResponse) GetSettings() *OrganizationSettings { + if x != nil { + return x.Settings + } + return nil } type GetOrganizationSettingsRequest struct { @@ -489,7 +566,7 @@ type GetOrganizationSettingsRequest struct { func (x *GetOrganizationSettingsRequest) Reset() { *x = GetOrganizationSettingsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[7] + mi := &file_gitpod_v1_organization_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -502,7 +579,7 @@ func (x *GetOrganizationSettingsRequest) String() string { func (*GetOrganizationSettingsRequest) ProtoMessage() {} func (x *GetOrganizationSettingsRequest) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[7] + mi := &file_gitpod_v1_organization_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -515,7 +592,7 @@ func (x *GetOrganizationSettingsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOrganizationSettingsRequest.ProtoReflect.Descriptor instead. func (*GetOrganizationSettingsRequest) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_organization_proto_rawDescGZIP(), []int{7} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{7} } func (x *GetOrganizationSettingsRequest) GetOrganizationId() string { @@ -537,7 +614,7 @@ type GetOrganizationSettingsResponse struct { func (x *GetOrganizationSettingsResponse) Reset() { *x = GetOrganizationSettingsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[8] + mi := &file_gitpod_v1_organization_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -550,7 +627,7 @@ func (x *GetOrganizationSettingsResponse) String() string { func (*GetOrganizationSettingsResponse) ProtoMessage() {} func (x *GetOrganizationSettingsResponse) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[8] + mi := &file_gitpod_v1_organization_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -563,7 +640,7 @@ func (x *GetOrganizationSettingsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOrganizationSettingsResponse.ProtoReflect.Descriptor instead. func (*GetOrganizationSettingsResponse) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_organization_proto_rawDescGZIP(), []int{8} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{8} } func (x *GetOrganizationSettingsResponse) GetSettings() *OrganizationSettings { @@ -585,7 +662,7 @@ type CreateOrganizationRequest struct { func (x *CreateOrganizationRequest) Reset() { *x = CreateOrganizationRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[9] + mi := &file_gitpod_v1_organization_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -598,7 +675,7 @@ func (x *CreateOrganizationRequest) String() string { func (*CreateOrganizationRequest) ProtoMessage() {} func (x *CreateOrganizationRequest) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[9] + mi := &file_gitpod_v1_organization_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -611,7 +688,7 @@ func (x *CreateOrganizationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateOrganizationRequest.ProtoReflect.Descriptor instead. func (*CreateOrganizationRequest) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_organization_proto_rawDescGZIP(), []int{9} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{9} } func (x *CreateOrganizationRequest) GetName() string { @@ -626,13 +703,14 @@ type CreateOrganizationResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + // organization is the created organization Organization *Organization `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` } func (x *CreateOrganizationResponse) Reset() { *x = CreateOrganizationResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[10] + mi := &file_gitpod_v1_organization_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -645,7 +723,7 @@ func (x *CreateOrganizationResponse) String() string { func (*CreateOrganizationResponse) ProtoMessage() {} func (x *CreateOrganizationResponse) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[10] + mi := &file_gitpod_v1_organization_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -658,7 +736,7 @@ func (x *CreateOrganizationResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateOrganizationResponse.ProtoReflect.Descriptor instead. func (*CreateOrganizationResponse) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_organization_proto_rawDescGZIP(), []int{10} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{10} } func (x *CreateOrganizationResponse) GetOrganization() *Organization { @@ -680,7 +758,7 @@ type GetOrganizationRequest struct { func (x *GetOrganizationRequest) Reset() { *x = GetOrganizationRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[11] + mi := &file_gitpod_v1_organization_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -693,7 +771,7 @@ func (x *GetOrganizationRequest) String() string { func (*GetOrganizationRequest) ProtoMessage() {} func (x *GetOrganizationRequest) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[11] + mi := &file_gitpod_v1_organization_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -706,7 +784,7 @@ func (x *GetOrganizationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOrganizationRequest.ProtoReflect.Descriptor instead. func (*GetOrganizationRequest) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_organization_proto_rawDescGZIP(), []int{11} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{11} } func (x *GetOrganizationRequest) GetOrganizationId() string { @@ -721,13 +799,14 @@ type GetOrganizationResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + // organization is the requested organization Organization *Organization `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` } func (x *GetOrganizationResponse) Reset() { *x = GetOrganizationResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[12] + mi := &file_gitpod_v1_organization_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -740,7 +819,7 @@ func (x *GetOrganizationResponse) String() string { func (*GetOrganizationResponse) ProtoMessage() {} func (x *GetOrganizationResponse) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[12] + mi := &file_gitpod_v1_organization_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -753,7 +832,7 @@ func (x *GetOrganizationResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOrganizationResponse.ProtoReflect.Descriptor instead. func (*GetOrganizationResponse) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_organization_proto_rawDescGZIP(), []int{12} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{12} } func (x *GetOrganizationResponse) GetOrganization() *Organization { @@ -768,13 +847,16 @@ type ListOrganizationsRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + // pagination contains the pagination options for listing organizations Pagination *PaginationRequest `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination,omitempty"` + // scope is the scope of the organizations to list + Scope ListOrganizationsRequest_Scope `protobuf:"varint,2,opt,name=scope,proto3,enum=gitpod.v1.ListOrganizationsRequest_Scope" json:"scope,omitempty"` } func (x *ListOrganizationsRequest) Reset() { *x = ListOrganizationsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[13] + mi := &file_gitpod_v1_organization_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -787,7 +869,7 @@ func (x *ListOrganizationsRequest) String() string { func (*ListOrganizationsRequest) ProtoMessage() {} func (x *ListOrganizationsRequest) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[13] + mi := &file_gitpod_v1_organization_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -800,7 +882,7 @@ func (x *ListOrganizationsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListOrganizationsRequest.ProtoReflect.Descriptor instead. func (*ListOrganizationsRequest) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_organization_proto_rawDescGZIP(), []int{13} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{13} } func (x *ListOrganizationsRequest) GetPagination() *PaginationRequest { @@ -810,19 +892,28 @@ func (x *ListOrganizationsRequest) GetPagination() *PaginationRequest { return nil } +func (x *ListOrganizationsRequest) GetScope() ListOrganizationsRequest_Scope { + if x != nil { + return x.Scope + } + return ListOrganizationsRequest_SCOPE_UNSPECIFIED +} + type ListOrganizationsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Organizations []*Organization `protobuf:"bytes,1,rep,name=organizations,proto3" json:"organizations,omitempty"` - Pagination *PaginationResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` + // organizations are the organizations that matched the query + Organizations []*Organization `protobuf:"bytes,1,rep,name=organizations,proto3" json:"organizations,omitempty"` + // pagination contains the pagination options for listing organizations + Pagination *PaginationResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` } func (x *ListOrganizationsResponse) Reset() { *x = ListOrganizationsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[14] + mi := &file_gitpod_v1_organization_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -835,7 +926,7 @@ func (x *ListOrganizationsResponse) String() string { func (*ListOrganizationsResponse) ProtoMessage() {} func (x *ListOrganizationsResponse) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[14] + mi := &file_gitpod_v1_organization_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -848,7 +939,7 @@ func (x *ListOrganizationsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListOrganizationsResponse.ProtoReflect.Descriptor instead. func (*ListOrganizationsResponse) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_organization_proto_rawDescGZIP(), []int{14} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{14} } func (x *ListOrganizationsResponse) GetOrganizations() []*Organization { @@ -877,7 +968,7 @@ type DeleteOrganizationRequest struct { func (x *DeleteOrganizationRequest) Reset() { *x = DeleteOrganizationRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[15] + mi := &file_gitpod_v1_organization_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -890,7 +981,7 @@ func (x *DeleteOrganizationRequest) String() string { func (*DeleteOrganizationRequest) ProtoMessage() {} func (x *DeleteOrganizationRequest) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[15] + mi := &file_gitpod_v1_organization_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -903,7 +994,7 @@ func (x *DeleteOrganizationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteOrganizationRequest.ProtoReflect.Descriptor instead. func (*DeleteOrganizationRequest) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_organization_proto_rawDescGZIP(), []int{15} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{15} } func (x *DeleteOrganizationRequest) GetOrganizationId() string { @@ -922,7 +1013,7 @@ type DeleteOrganizationResponse struct { func (x *DeleteOrganizationResponse) Reset() { *x = DeleteOrganizationResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[16] + mi := &file_gitpod_v1_organization_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -935,7 +1026,7 @@ func (x *DeleteOrganizationResponse) String() string { func (*DeleteOrganizationResponse) ProtoMessage() {} func (x *DeleteOrganizationResponse) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[16] + mi := &file_gitpod_v1_organization_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -948,7 +1039,7 @@ func (x *DeleteOrganizationResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteOrganizationResponse.ProtoReflect.Descriptor instead. func (*DeleteOrganizationResponse) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_organization_proto_rawDescGZIP(), []int{16} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{16} } type GetOrganizationInvitationRequest struct { @@ -956,13 +1047,14 @@ type GetOrganizationInvitationRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + // organization_id is the ID of the organization to retrieve the invitation OrganizationId string `protobuf:"bytes,1,opt,name=organization_id,json=organizationId,proto3" json:"organization_id,omitempty"` } func (x *GetOrganizationInvitationRequest) Reset() { *x = GetOrganizationInvitationRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[17] + mi := &file_gitpod_v1_organization_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -975,7 +1067,7 @@ func (x *GetOrganizationInvitationRequest) String() string { func (*GetOrganizationInvitationRequest) ProtoMessage() {} func (x *GetOrganizationInvitationRequest) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[17] + mi := &file_gitpod_v1_organization_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -988,7 +1080,7 @@ func (x *GetOrganizationInvitationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOrganizationInvitationRequest.ProtoReflect.Descriptor instead. func (*GetOrganizationInvitationRequest) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_organization_proto_rawDescGZIP(), []int{17} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{17} } func (x *GetOrganizationInvitationRequest) GetOrganizationId() string { @@ -1010,7 +1102,7 @@ type GetOrganizationInvitationResponse struct { func (x *GetOrganizationInvitationResponse) Reset() { *x = GetOrganizationInvitationResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[18] + mi := &file_gitpod_v1_organization_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1023,7 +1115,7 @@ func (x *GetOrganizationInvitationResponse) String() string { func (*GetOrganizationInvitationResponse) ProtoMessage() {} func (x *GetOrganizationInvitationResponse) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[18] + mi := &file_gitpod_v1_organization_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1036,7 +1128,7 @@ func (x *GetOrganizationInvitationResponse) ProtoReflect() protoreflect.Message // Deprecated: Use GetOrganizationInvitationResponse.ProtoReflect.Descriptor instead. func (*GetOrganizationInvitationResponse) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_organization_proto_rawDescGZIP(), []int{18} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{18} } func (x *GetOrganizationInvitationResponse) GetInvitationId() string { @@ -1058,7 +1150,7 @@ type JoinOrganizationRequest struct { func (x *JoinOrganizationRequest) Reset() { *x = JoinOrganizationRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[19] + mi := &file_gitpod_v1_organization_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1071,7 +1163,7 @@ func (x *JoinOrganizationRequest) String() string { func (*JoinOrganizationRequest) ProtoMessage() {} func (x *JoinOrganizationRequest) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[19] + mi := &file_gitpod_v1_organization_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1084,7 +1176,7 @@ func (x *JoinOrganizationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use JoinOrganizationRequest.ProtoReflect.Descriptor instead. func (*JoinOrganizationRequest) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_organization_proto_rawDescGZIP(), []int{19} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{19} } func (x *JoinOrganizationRequest) GetInvitationId() string { @@ -1106,7 +1198,7 @@ type JoinOrganizationResponse struct { func (x *JoinOrganizationResponse) Reset() { *x = JoinOrganizationResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[20] + mi := &file_gitpod_v1_organization_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1119,7 +1211,7 @@ func (x *JoinOrganizationResponse) String() string { func (*JoinOrganizationResponse) ProtoMessage() {} func (x *JoinOrganizationResponse) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[20] + mi := &file_gitpod_v1_organization_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1132,7 +1224,7 @@ func (x *JoinOrganizationResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use JoinOrganizationResponse.ProtoReflect.Descriptor instead. func (*JoinOrganizationResponse) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_organization_proto_rawDescGZIP(), []int{20} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{20} } func (x *JoinOrganizationResponse) GetOrganizationId() string { @@ -1147,13 +1239,14 @@ type ResetOrganizationInvitationRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + // organization_id is the ID of the organization to reset the invitation for. OrganizationId string `protobuf:"bytes,1,opt,name=organization_id,json=organizationId,proto3" json:"organization_id,omitempty"` } func (x *ResetOrganizationInvitationRequest) Reset() { *x = ResetOrganizationInvitationRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[21] + mi := &file_gitpod_v1_organization_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1166,7 +1259,7 @@ func (x *ResetOrganizationInvitationRequest) String() string { func (*ResetOrganizationInvitationRequest) ProtoMessage() {} func (x *ResetOrganizationInvitationRequest) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[21] + mi := &file_gitpod_v1_organization_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1179,7 +1272,7 @@ func (x *ResetOrganizationInvitationRequest) ProtoReflect() protoreflect.Message // Deprecated: Use ResetOrganizationInvitationRequest.ProtoReflect.Descriptor instead. func (*ResetOrganizationInvitationRequest) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_organization_proto_rawDescGZIP(), []int{21} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{21} } func (x *ResetOrganizationInvitationRequest) GetOrganizationId() string { @@ -1201,7 +1294,7 @@ type ResetOrganizationInvitationResponse struct { func (x *ResetOrganizationInvitationResponse) Reset() { *x = ResetOrganizationInvitationResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[22] + mi := &file_gitpod_v1_organization_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1214,7 +1307,7 @@ func (x *ResetOrganizationInvitationResponse) String() string { func (*ResetOrganizationInvitationResponse) ProtoMessage() {} func (x *ResetOrganizationInvitationResponse) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[22] + mi := &file_gitpod_v1_organization_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1227,7 +1320,7 @@ func (x *ResetOrganizationInvitationResponse) ProtoReflect() protoreflect.Messag // Deprecated: Use ResetOrganizationInvitationResponse.ProtoReflect.Descriptor instead. func (*ResetOrganizationInvitationResponse) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_organization_proto_rawDescGZIP(), []int{22} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{22} } func (x *ResetOrganizationInvitationResponse) GetInvitationId() string { @@ -1242,7 +1335,8 @@ type ListOrganizationMembersRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // organization_id is the ID of the organization that contains the members to list + // organization_id is the ID of the organization that contains the members to + // list OrganizationId string `protobuf:"bytes,1,opt,name=organization_id,json=organizationId,proto3" json:"organization_id,omitempty"` Pagination *PaginationRequest `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` } @@ -1250,7 +1344,7 @@ type ListOrganizationMembersRequest struct { func (x *ListOrganizationMembersRequest) Reset() { *x = ListOrganizationMembersRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[23] + mi := &file_gitpod_v1_organization_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1263,7 +1357,7 @@ func (x *ListOrganizationMembersRequest) String() string { func (*ListOrganizationMembersRequest) ProtoMessage() {} func (x *ListOrganizationMembersRequest) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[23] + mi := &file_gitpod_v1_organization_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1276,7 +1370,7 @@ func (x *ListOrganizationMembersRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListOrganizationMembersRequest.ProtoReflect.Descriptor instead. func (*ListOrganizationMembersRequest) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_organization_proto_rawDescGZIP(), []int{23} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{23} } func (x *ListOrganizationMembersRequest) GetOrganizationId() string { @@ -1306,7 +1400,7 @@ type ListOrganizationMembersResponse struct { func (x *ListOrganizationMembersResponse) Reset() { *x = ListOrganizationMembersResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[24] + mi := &file_gitpod_v1_organization_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1319,7 +1413,7 @@ func (x *ListOrganizationMembersResponse) String() string { func (*ListOrganizationMembersResponse) ProtoMessage() {} func (x *ListOrganizationMembersResponse) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[24] + mi := &file_gitpod_v1_organization_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1332,7 +1426,7 @@ func (x *ListOrganizationMembersResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListOrganizationMembersResponse.ProtoReflect.Descriptor instead. func (*ListOrganizationMembersResponse) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_organization_proto_rawDescGZIP(), []int{24} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{24} } func (x *ListOrganizationMembersResponse) GetMembers() []*OrganizationMember { @@ -1354,18 +1448,19 @@ type UpdateOrganizationMemberRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // organization_id is the ID of the organization in which the role is to be updated + // organization_id is the ID of the organization in which the role is to be + // updated OrganizationId string `protobuf:"bytes,1,opt,name=organization_id,json=organizationId,proto3" json:"organization_id,omitempty"` // user_id is the user for which the membership shall be updated. UserId string `protobuf:"bytes,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` // role is the new role for the user in the organization - Role OrganizationRole `protobuf:"varint,3,opt,name=role,proto3,enum=gitpod.experimental.v2.OrganizationRole" json:"role,omitempty"` + Role OrganizationRole `protobuf:"varint,3,opt,name=role,proto3,enum=gitpod.v1.OrganizationRole" json:"role,omitempty"` } func (x *UpdateOrganizationMemberRequest) Reset() { *x = UpdateOrganizationMemberRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[25] + mi := &file_gitpod_v1_organization_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1378,7 +1473,7 @@ func (x *UpdateOrganizationMemberRequest) String() string { func (*UpdateOrganizationMemberRequest) ProtoMessage() {} func (x *UpdateOrganizationMemberRequest) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[25] + mi := &file_gitpod_v1_organization_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1391,7 +1486,7 @@ func (x *UpdateOrganizationMemberRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateOrganizationMemberRequest.ProtoReflect.Descriptor instead. func (*UpdateOrganizationMemberRequest) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_organization_proto_rawDescGZIP(), []int{25} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{25} } func (x *UpdateOrganizationMemberRequest) GetOrganizationId() string { @@ -1419,12 +1514,15 @@ type UpdateOrganizationMemberResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // member is the updated organization member + Member *OrganizationMember `protobuf:"bytes,1,opt,name=member,proto3" json:"member,omitempty"` } func (x *UpdateOrganizationMemberResponse) Reset() { *x = UpdateOrganizationMemberResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[26] + mi := &file_gitpod_v1_organization_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1437,7 +1535,7 @@ func (x *UpdateOrganizationMemberResponse) String() string { func (*UpdateOrganizationMemberResponse) ProtoMessage() {} func (x *UpdateOrganizationMemberResponse) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[26] + mi := &file_gitpod_v1_organization_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1450,7 +1548,14 @@ func (x *UpdateOrganizationMemberResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateOrganizationMemberResponse.ProtoReflect.Descriptor instead. func (*UpdateOrganizationMemberResponse) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_organization_proto_rawDescGZIP(), []int{26} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{26} +} + +func (x *UpdateOrganizationMemberResponse) GetMember() *OrganizationMember { + if x != nil { + return x.Member + } + return nil } type DeleteOrganizationMemberRequest struct { @@ -1458,7 +1563,8 @@ type DeleteOrganizationMemberRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // organization_id is the ID of the organization in which a member should be deleted. + // organization_id is the ID of the organization in which a member should be + // deleted. OrganizationId string `protobuf:"bytes,1,opt,name=organization_id,json=organizationId,proto3" json:"organization_id,omitempty"` // user_id is the ID of the user that should be deleted from the organization. UserId string `protobuf:"bytes,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` @@ -1467,7 +1573,7 @@ type DeleteOrganizationMemberRequest struct { func (x *DeleteOrganizationMemberRequest) Reset() { *x = DeleteOrganizationMemberRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[27] + mi := &file_gitpod_v1_organization_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1480,7 +1586,7 @@ func (x *DeleteOrganizationMemberRequest) String() string { func (*DeleteOrganizationMemberRequest) ProtoMessage() {} func (x *DeleteOrganizationMemberRequest) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[27] + mi := &file_gitpod_v1_organization_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1493,7 +1599,7 @@ func (x *DeleteOrganizationMemberRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteOrganizationMemberRequest.ProtoReflect.Descriptor instead. func (*DeleteOrganizationMemberRequest) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_organization_proto_rawDescGZIP(), []int{27} + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{27} } func (x *DeleteOrganizationMemberRequest) GetOrganizationId() string { @@ -1519,7 +1625,7 @@ type DeleteOrganizationMemberResponse struct { func (x *DeleteOrganizationMemberResponse) Reset() { *x = DeleteOrganizationMemberResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[28] + mi := &file_gitpod_v1_organization_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1532,7 +1638,7 @@ func (x *DeleteOrganizationMemberResponse) String() string { func (*DeleteOrganizationMemberResponse) ProtoMessage() {} func (x *DeleteOrganizationMemberResponse) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v2_organization_proto_msgTypes[28] + mi := &file_gitpod_v1_organization_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1545,438 +1651,429 @@ func (x *DeleteOrganizationMemberResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteOrganizationMemberResponse.ProtoReflect.Descriptor instead. func (*DeleteOrganizationMemberResponse) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_organization_proto_rawDescGZIP(), []int{28} -} - -var File_gitpod_experimental_v2_organization_proto protoreflect.FileDescriptor - -var file_gitpod_experimental_v2_organization_proto_rawDesc = []byte{ - 0x0a, 0x29, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, - 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2f, 0x76, 0x32, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x67, 0x69, 0x74, - 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, - 0x2e, 0x76, 0x32, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x27, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2f, 0x65, 0x78, 0x70, - 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2f, 0x76, 0x32, 0x2f, 0x70, 0x61, 0x67, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x73, 0x0a, - 0x0c, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, - 0x6d, 0x65, 0x22, 0xe6, 0x02, 0x0a, 0x12, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, - 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, - 0x49, 0x64, 0x12, 0x3c, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x28, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, - 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, - 0x12, 0x3d, 0x0a, 0x0c, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x52, 0x0b, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x12, - 0x22, 0x0a, 0x0a, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x55, 0x72, 0x6c, - 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x08, 0x66, 0x75, 0x6c, 0x6c, 0x4e, 0x61, - 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x88, 0x01, 0x01, - 0x12, 0x32, 0x0a, 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, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, - 0x75, 0x72, 0x6c, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0xad, 0x01, 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, 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, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 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, 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, 0x22, 0x58, 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, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x1c, 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, 0x22, 0x96, 0x01, 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, + return file_gitpod_v1_organization_proto_rawDescGZIP(), []int{28} +} + +var File_gitpod_v1_organization_proto protoreflect.FileDescriptor + +var file_gitpod_v1_organization_proto_rawDesc = []byte{ + 0x0a, 0x1c, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, + 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1a, 0x67, 0x69, 0x74, 0x70, + 0x6f, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x87, 0x01, 0x0a, 0x0c, 0x4f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x73, 0x6c, 0x75, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6c, 0x75, 0x67, + 0x22, 0xd9, 0x02, 0x0a, 0x12, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, + 0x12, 0x2f, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 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, 0x52, 0x04, 0x72, 0x6f, 0x6c, + 0x65, 0x12, 0x3d, 0x0a, 0x0c, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x6e, 0x63, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x53, 0x69, 0x6e, 0x63, 0x65, + 0x12, 0x22, 0x0a, 0x0a, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x55, 0x72, + 0x6c, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x08, 0x66, 0x75, 0x6c, 0x6c, 0x4e, + 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x88, 0x01, + 0x01, 0x12, 0x32, 0x0a, 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, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, + 0x5f, 0x75, 0x72, 0x6c, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0xad, 0x01, 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, 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, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 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, + 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, 0x22, 0x58, 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, 0x48, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, - 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x32, 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, 0x24, 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, 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, 0x6b, 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, 0x48, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, - 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x72, 0x67, 0x61, + 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 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, 0x89, 0x01, 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, 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, 0x66, 0x0a, 0x1a, 0x43, + 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, 0x3b, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x02, 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, 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, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x0c, 0x6f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x24, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, - 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x32, 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, 0x63, 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, 0x48, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, - 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x32, - 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, 0x65, 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, 0x49, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x69, - 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, - 0x6c, 0x2e, 0x76, 0x32, 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, 0xb3, 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, 0x4a, 0x0a, 0x0d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, - 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x32, + 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, 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, 0x4a, 0x0a, 0x0a, + 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, 0x2a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, - 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x32, 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, 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, + 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, 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, 0x71, 0x75, 0x65, 0x73, 0x74, + 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, 0x94, 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, 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, + 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, 0x2f, 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, 0x52, 0x04, 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, 0x70, 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, 0x32, 0xae, 0x0b, 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, 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, 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, 0x94, 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, - 0x49, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, - 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x32, 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, 0xb3, 0x01, 0x0a, 0x1f, 0x4c, + 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, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, - 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x2a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, - 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x32, 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, 0x4a, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, - 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, - 0x32, 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, 0xa1, 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, 0x3c, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, - 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, - 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x22, 0x0a, 0x20, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, + 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, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 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, 0x70, 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, 0x32, 0x87, 0x0e, 0x0a, 0x13, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x7d, 0x0a, 0x12, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x31, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, - 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x32, 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, 0x32, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, - 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x32, 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, 0x74, 0x0a, 0x0f, 0x47, 0x65, - 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x2e, - 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, - 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, - 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, - 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x32, 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, 0x7d, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, - 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x32, 0x2e, + 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, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x67, 0x69, 0x74, 0x70, - 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, - 0x76, 0x32, 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, - 0x7a, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, - 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x32, 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, 0x31, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, - 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x32, 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, 0x7d, 0x0a, 0x12, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x31, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, - 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x32, 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, 0x32, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, - 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x32, 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, 0x92, 0x01, 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, 0x38, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, - 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, - 0x32, 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, 0x39, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, - 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x32, 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, - 0x77, 0x0a, 0x10, 0x4a, 0x6f, 0x69, 0x6e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, - 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x32, 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, 0x30, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, - 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x32, 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, 0x98, 0x01, 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, 0x3a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, - 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, - 0x32, 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, 0x3b, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, - 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x32, 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, 0x8c, 0x01, 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, - 0x36, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, - 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x32, 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, 0x37, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, - 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x32, - 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, 0x8f, 0x01, 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, - 0x37, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, - 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x32, 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, 0x38, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, - 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, - 0x32, 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, 0x8f, 0x01, 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, 0x37, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, - 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 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, 0x38, 0x2e, 0x67, 0x69, 0x74, - 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, - 0x2e, 0x76, 0x32, 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, 0x8c, 0x01, 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, 0x36, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, - 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x32, 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, 0x37, 0x2e, 0x67, 0x69, 0x74, - 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, - 0x2e, 0x76, 0x32, 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, 0x95, 0x01, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 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, 0x39, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, - 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 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, - 0x3a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, - 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, + 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, 0x42, 0x46, 0x5a, - 0x44, 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, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, - 0x61, 0x6c, 0x2f, 0x76, 0x32, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 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, 0x42, 0x39, 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 ( - file_gitpod_experimental_v2_organization_proto_rawDescOnce sync.Once - file_gitpod_experimental_v2_organization_proto_rawDescData = file_gitpod_experimental_v2_organization_proto_rawDesc + file_gitpod_v1_organization_proto_rawDescOnce sync.Once + file_gitpod_v1_organization_proto_rawDescData = file_gitpod_v1_organization_proto_rawDesc ) -func file_gitpod_experimental_v2_organization_proto_rawDescGZIP() []byte { - file_gitpod_experimental_v2_organization_proto_rawDescOnce.Do(func() { - file_gitpod_experimental_v2_organization_proto_rawDescData = protoimpl.X.CompressGZIP(file_gitpod_experimental_v2_organization_proto_rawDescData) +func file_gitpod_v1_organization_proto_rawDescGZIP() []byte { + file_gitpod_v1_organization_proto_rawDescOnce.Do(func() { + file_gitpod_v1_organization_proto_rawDescData = protoimpl.X.CompressGZIP(file_gitpod_v1_organization_proto_rawDescData) }) - return file_gitpod_experimental_v2_organization_proto_rawDescData -} - -var file_gitpod_experimental_v2_organization_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_gitpod_experimental_v2_organization_proto_msgTypes = make([]protoimpl.MessageInfo, 29) -var file_gitpod_experimental_v2_organization_proto_goTypes = []interface{}{ - (OrganizationRole)(0), // 0: gitpod.experimental.v2.OrganizationRole - (*Organization)(nil), // 1: gitpod.experimental.v2.Organization - (*OrganizationMember)(nil), // 2: gitpod.experimental.v2.OrganizationMember - (*OrganizationSettings)(nil), // 3: gitpod.experimental.v2.OrganizationSettings - (*UpdateOrganizationRequest)(nil), // 4: gitpod.experimental.v2.UpdateOrganizationRequest - (*UpdateOrganizationResponse)(nil), // 5: gitpod.experimental.v2.UpdateOrganizationResponse - (*UpdateOrganizationSettingsRequest)(nil), // 6: gitpod.experimental.v2.UpdateOrganizationSettingsRequest - (*UpdateOrganizationSettingsResponse)(nil), // 7: gitpod.experimental.v2.UpdateOrganizationSettingsResponse - (*GetOrganizationSettingsRequest)(nil), // 8: gitpod.experimental.v2.GetOrganizationSettingsRequest - (*GetOrganizationSettingsResponse)(nil), // 9: gitpod.experimental.v2.GetOrganizationSettingsResponse - (*CreateOrganizationRequest)(nil), // 10: gitpod.experimental.v2.CreateOrganizationRequest - (*CreateOrganizationResponse)(nil), // 11: gitpod.experimental.v2.CreateOrganizationResponse - (*GetOrganizationRequest)(nil), // 12: gitpod.experimental.v2.GetOrganizationRequest - (*GetOrganizationResponse)(nil), // 13: gitpod.experimental.v2.GetOrganizationResponse - (*ListOrganizationsRequest)(nil), // 14: gitpod.experimental.v2.ListOrganizationsRequest - (*ListOrganizationsResponse)(nil), // 15: gitpod.experimental.v2.ListOrganizationsResponse - (*DeleteOrganizationRequest)(nil), // 16: gitpod.experimental.v2.DeleteOrganizationRequest - (*DeleteOrganizationResponse)(nil), // 17: gitpod.experimental.v2.DeleteOrganizationResponse - (*GetOrganizationInvitationRequest)(nil), // 18: gitpod.experimental.v2.GetOrganizationInvitationRequest - (*GetOrganizationInvitationResponse)(nil), // 19: gitpod.experimental.v2.GetOrganizationInvitationResponse - (*JoinOrganizationRequest)(nil), // 20: gitpod.experimental.v2.JoinOrganizationRequest - (*JoinOrganizationResponse)(nil), // 21: gitpod.experimental.v2.JoinOrganizationResponse - (*ResetOrganizationInvitationRequest)(nil), // 22: gitpod.experimental.v2.ResetOrganizationInvitationRequest - (*ResetOrganizationInvitationResponse)(nil), // 23: gitpod.experimental.v2.ResetOrganizationInvitationResponse - (*ListOrganizationMembersRequest)(nil), // 24: gitpod.experimental.v2.ListOrganizationMembersRequest - (*ListOrganizationMembersResponse)(nil), // 25: gitpod.experimental.v2.ListOrganizationMembersResponse - (*UpdateOrganizationMemberRequest)(nil), // 26: gitpod.experimental.v2.UpdateOrganizationMemberRequest - (*UpdateOrganizationMemberResponse)(nil), // 27: gitpod.experimental.v2.UpdateOrganizationMemberResponse - (*DeleteOrganizationMemberRequest)(nil), // 28: gitpod.experimental.v2.DeleteOrganizationMemberRequest - (*DeleteOrganizationMemberResponse)(nil), // 29: gitpod.experimental.v2.DeleteOrganizationMemberResponse - (*timestamppb.Timestamp)(nil), // 30: google.protobuf.Timestamp - (*PaginationRequest)(nil), // 31: gitpod.experimental.v2.PaginationRequest - (*PaginationResponse)(nil), // 32: gitpod.experimental.v2.PaginationResponse -} -var file_gitpod_experimental_v2_organization_proto_depIdxs = []int32{ - 30, // 0: gitpod.experimental.v2.Organization.creation_time:type_name -> google.protobuf.Timestamp - 0, // 1: gitpod.experimental.v2.OrganizationMember.role:type_name -> gitpod.experimental.v2.OrganizationRole - 30, // 2: gitpod.experimental.v2.OrganizationMember.member_since:type_name -> google.protobuf.Timestamp - 3, // 3: gitpod.experimental.v2.UpdateOrganizationSettingsRequest.settings:type_name -> gitpod.experimental.v2.OrganizationSettings - 3, // 4: gitpod.experimental.v2.GetOrganizationSettingsResponse.settings:type_name -> gitpod.experimental.v2.OrganizationSettings - 1, // 5: gitpod.experimental.v2.CreateOrganizationResponse.organization:type_name -> gitpod.experimental.v2.Organization - 1, // 6: gitpod.experimental.v2.GetOrganizationResponse.organization:type_name -> gitpod.experimental.v2.Organization - 31, // 7: gitpod.experimental.v2.ListOrganizationsRequest.pagination:type_name -> gitpod.experimental.v2.PaginationRequest - 1, // 8: gitpod.experimental.v2.ListOrganizationsResponse.organizations:type_name -> gitpod.experimental.v2.Organization - 32, // 9: gitpod.experimental.v2.ListOrganizationsResponse.pagination:type_name -> gitpod.experimental.v2.PaginationResponse - 31, // 10: gitpod.experimental.v2.ListOrganizationMembersRequest.pagination:type_name -> gitpod.experimental.v2.PaginationRequest - 2, // 11: gitpod.experimental.v2.ListOrganizationMembersResponse.members:type_name -> gitpod.experimental.v2.OrganizationMember - 32, // 12: gitpod.experimental.v2.ListOrganizationMembersResponse.pagination:type_name -> gitpod.experimental.v2.PaginationResponse - 0, // 13: gitpod.experimental.v2.UpdateOrganizationMemberRequest.role:type_name -> gitpod.experimental.v2.OrganizationRole - 10, // 14: gitpod.experimental.v2.OrganizationService.CreateOrganization:input_type -> gitpod.experimental.v2.CreateOrganizationRequest - 12, // 15: gitpod.experimental.v2.OrganizationService.GetOrganization:input_type -> gitpod.experimental.v2.GetOrganizationRequest - 4, // 16: gitpod.experimental.v2.OrganizationService.UpdateOrganization:input_type -> gitpod.experimental.v2.UpdateOrganizationRequest - 14, // 17: gitpod.experimental.v2.OrganizationService.ListOrganizations:input_type -> gitpod.experimental.v2.ListOrganizationsRequest - 16, // 18: gitpod.experimental.v2.OrganizationService.DeleteOrganization:input_type -> gitpod.experimental.v2.DeleteOrganizationRequest - 18, // 19: gitpod.experimental.v2.OrganizationService.GetOrganizationInvitation:input_type -> gitpod.experimental.v2.GetOrganizationInvitationRequest - 20, // 20: gitpod.experimental.v2.OrganizationService.JoinOrganization:input_type -> gitpod.experimental.v2.JoinOrganizationRequest - 22, // 21: gitpod.experimental.v2.OrganizationService.ResetOrganizationInvitation:input_type -> gitpod.experimental.v2.ResetOrganizationInvitationRequest - 24, // 22: gitpod.experimental.v2.OrganizationService.ListOrganizationMembers:input_type -> gitpod.experimental.v2.ListOrganizationMembersRequest - 26, // 23: gitpod.experimental.v2.OrganizationService.UpdateOrganizationMember:input_type -> gitpod.experimental.v2.UpdateOrganizationMemberRequest - 28, // 24: gitpod.experimental.v2.OrganizationService.DeleteOrganizationMember:input_type -> gitpod.experimental.v2.DeleteOrganizationMemberRequest - 8, // 25: gitpod.experimental.v2.OrganizationService.GetOrganizationSettings:input_type -> gitpod.experimental.v2.GetOrganizationSettingsRequest - 6, // 26: gitpod.experimental.v2.OrganizationService.UpdateOrganizationSettings:input_type -> gitpod.experimental.v2.UpdateOrganizationSettingsRequest - 11, // 27: gitpod.experimental.v2.OrganizationService.CreateOrganization:output_type -> gitpod.experimental.v2.CreateOrganizationResponse - 13, // 28: gitpod.experimental.v2.OrganizationService.GetOrganization:output_type -> gitpod.experimental.v2.GetOrganizationResponse - 5, // 29: gitpod.experimental.v2.OrganizationService.UpdateOrganization:output_type -> gitpod.experimental.v2.UpdateOrganizationResponse - 15, // 30: gitpod.experimental.v2.OrganizationService.ListOrganizations:output_type -> gitpod.experimental.v2.ListOrganizationsResponse - 17, // 31: gitpod.experimental.v2.OrganizationService.DeleteOrganization:output_type -> gitpod.experimental.v2.DeleteOrganizationResponse - 19, // 32: gitpod.experimental.v2.OrganizationService.GetOrganizationInvitation:output_type -> gitpod.experimental.v2.GetOrganizationInvitationResponse - 21, // 33: gitpod.experimental.v2.OrganizationService.JoinOrganization:output_type -> gitpod.experimental.v2.JoinOrganizationResponse - 23, // 34: gitpod.experimental.v2.OrganizationService.ResetOrganizationInvitation:output_type -> gitpod.experimental.v2.ResetOrganizationInvitationResponse - 25, // 35: gitpod.experimental.v2.OrganizationService.ListOrganizationMembers:output_type -> gitpod.experimental.v2.ListOrganizationMembersResponse - 27, // 36: gitpod.experimental.v2.OrganizationService.UpdateOrganizationMember:output_type -> gitpod.experimental.v2.UpdateOrganizationMemberResponse - 29, // 37: gitpod.experimental.v2.OrganizationService.DeleteOrganizationMember:output_type -> gitpod.experimental.v2.DeleteOrganizationMemberResponse - 9, // 38: gitpod.experimental.v2.OrganizationService.GetOrganizationSettings:output_type -> gitpod.experimental.v2.GetOrganizationSettingsResponse - 7, // 39: gitpod.experimental.v2.OrganizationService.UpdateOrganizationSettings:output_type -> gitpod.experimental.v2.UpdateOrganizationSettingsResponse - 27, // [27:40] is the sub-list for method output_type - 14, // [14:27] is the sub-list for method input_type - 14, // [14:14] is the sub-list for extension type_name - 14, // [14:14] is the sub-list for extension extendee - 0, // [0:14] is the sub-list for field type_name -} - -func init() { file_gitpod_experimental_v2_organization_proto_init() } -func file_gitpod_experimental_v2_organization_proto_init() { - if File_gitpod_experimental_v2_organization_proto != nil { + 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, 29) +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 + (*UpdateOrganizationRequest)(nil), // 5: gitpod.v1.UpdateOrganizationRequest + (*UpdateOrganizationResponse)(nil), // 6: gitpod.v1.UpdateOrganizationResponse + (*UpdateOrganizationSettingsRequest)(nil), // 7: gitpod.v1.UpdateOrganizationSettingsRequest + (*UpdateOrganizationSettingsResponse)(nil), // 8: gitpod.v1.UpdateOrganizationSettingsResponse + (*GetOrganizationSettingsRequest)(nil), // 9: gitpod.v1.GetOrganizationSettingsRequest + (*GetOrganizationSettingsResponse)(nil), // 10: gitpod.v1.GetOrganizationSettingsResponse + (*CreateOrganizationRequest)(nil), // 11: gitpod.v1.CreateOrganizationRequest + (*CreateOrganizationResponse)(nil), // 12: gitpod.v1.CreateOrganizationResponse + (*GetOrganizationRequest)(nil), // 13: gitpod.v1.GetOrganizationRequest + (*GetOrganizationResponse)(nil), // 14: gitpod.v1.GetOrganizationResponse + (*ListOrganizationsRequest)(nil), // 15: gitpod.v1.ListOrganizationsRequest + (*ListOrganizationsResponse)(nil), // 16: gitpod.v1.ListOrganizationsResponse + (*DeleteOrganizationRequest)(nil), // 17: gitpod.v1.DeleteOrganizationRequest + (*DeleteOrganizationResponse)(nil), // 18: gitpod.v1.DeleteOrganizationResponse + (*GetOrganizationInvitationRequest)(nil), // 19: gitpod.v1.GetOrganizationInvitationRequest + (*GetOrganizationInvitationResponse)(nil), // 20: gitpod.v1.GetOrganizationInvitationResponse + (*JoinOrganizationRequest)(nil), // 21: gitpod.v1.JoinOrganizationRequest + (*JoinOrganizationResponse)(nil), // 22: gitpod.v1.JoinOrganizationResponse + (*ResetOrganizationInvitationRequest)(nil), // 23: gitpod.v1.ResetOrganizationInvitationRequest + (*ResetOrganizationInvitationResponse)(nil), // 24: gitpod.v1.ResetOrganizationInvitationResponse + (*ListOrganizationMembersRequest)(nil), // 25: gitpod.v1.ListOrganizationMembersRequest + (*ListOrganizationMembersResponse)(nil), // 26: gitpod.v1.ListOrganizationMembersResponse + (*UpdateOrganizationMemberRequest)(nil), // 27: gitpod.v1.UpdateOrganizationMemberRequest + (*UpdateOrganizationMemberResponse)(nil), // 28: gitpod.v1.UpdateOrganizationMemberResponse + (*DeleteOrganizationMemberRequest)(nil), // 29: gitpod.v1.DeleteOrganizationMemberRequest + (*DeleteOrganizationMemberResponse)(nil), // 30: gitpod.v1.DeleteOrganizationMemberResponse + (*timestamppb.Timestamp)(nil), // 31: google.protobuf.Timestamp + (*PaginationRequest)(nil), // 32: gitpod.v1.PaginationRequest + (*PaginationResponse)(nil), // 33: gitpod.v1.PaginationResponse +} +var file_gitpod_v1_organization_proto_depIdxs = []int32{ + 31, // 0: gitpod.v1.Organization.creation_time:type_name -> google.protobuf.Timestamp + 0, // 1: gitpod.v1.OrganizationMember.role:type_name -> gitpod.v1.OrganizationRole + 31, // 2: gitpod.v1.OrganizationMember.member_since:type_name -> google.protobuf.Timestamp + 2, // 3: gitpod.v1.UpdateOrganizationResponse.organization:type_name -> gitpod.v1.Organization + 4, // 4: gitpod.v1.UpdateOrganizationSettingsRequest.settings:type_name -> gitpod.v1.OrganizationSettings + 4, // 5: gitpod.v1.UpdateOrganizationSettingsResponse.settings:type_name -> gitpod.v1.OrganizationSettings + 4, // 6: gitpod.v1.GetOrganizationSettingsResponse.settings:type_name -> gitpod.v1.OrganizationSettings + 2, // 7: gitpod.v1.CreateOrganizationResponse.organization:type_name -> gitpod.v1.Organization + 2, // 8: gitpod.v1.GetOrganizationResponse.organization:type_name -> gitpod.v1.Organization + 32, // 9: gitpod.v1.ListOrganizationsRequest.pagination:type_name -> gitpod.v1.PaginationRequest + 1, // 10: gitpod.v1.ListOrganizationsRequest.scope:type_name -> gitpod.v1.ListOrganizationsRequest.Scope + 2, // 11: gitpod.v1.ListOrganizationsResponse.organizations:type_name -> gitpod.v1.Organization + 33, // 12: gitpod.v1.ListOrganizationsResponse.pagination:type_name -> gitpod.v1.PaginationResponse + 32, // 13: gitpod.v1.ListOrganizationMembersRequest.pagination:type_name -> gitpod.v1.PaginationRequest + 3, // 14: gitpod.v1.ListOrganizationMembersResponse.members:type_name -> gitpod.v1.OrganizationMember + 33, // 15: gitpod.v1.ListOrganizationMembersResponse.pagination:type_name -> gitpod.v1.PaginationResponse + 0, // 16: gitpod.v1.UpdateOrganizationMemberRequest.role:type_name -> gitpod.v1.OrganizationRole + 3, // 17: gitpod.v1.UpdateOrganizationMemberResponse.member:type_name -> gitpod.v1.OrganizationMember + 11, // 18: gitpod.v1.OrganizationService.CreateOrganization:input_type -> gitpod.v1.CreateOrganizationRequest + 13, // 19: gitpod.v1.OrganizationService.GetOrganization:input_type -> gitpod.v1.GetOrganizationRequest + 5, // 20: gitpod.v1.OrganizationService.UpdateOrganization:input_type -> gitpod.v1.UpdateOrganizationRequest + 15, // 21: gitpod.v1.OrganizationService.ListOrganizations:input_type -> gitpod.v1.ListOrganizationsRequest + 17, // 22: gitpod.v1.OrganizationService.DeleteOrganization:input_type -> gitpod.v1.DeleteOrganizationRequest + 19, // 23: gitpod.v1.OrganizationService.GetOrganizationInvitation:input_type -> gitpod.v1.GetOrganizationInvitationRequest + 21, // 24: gitpod.v1.OrganizationService.JoinOrganization:input_type -> gitpod.v1.JoinOrganizationRequest + 23, // 25: gitpod.v1.OrganizationService.ResetOrganizationInvitation:input_type -> gitpod.v1.ResetOrganizationInvitationRequest + 25, // 26: gitpod.v1.OrganizationService.ListOrganizationMembers:input_type -> gitpod.v1.ListOrganizationMembersRequest + 27, // 27: gitpod.v1.OrganizationService.UpdateOrganizationMember:input_type -> gitpod.v1.UpdateOrganizationMemberRequest + 29, // 28: gitpod.v1.OrganizationService.DeleteOrganizationMember:input_type -> gitpod.v1.DeleteOrganizationMemberRequest + 9, // 29: gitpod.v1.OrganizationService.GetOrganizationSettings:input_type -> gitpod.v1.GetOrganizationSettingsRequest + 7, // 30: gitpod.v1.OrganizationService.UpdateOrganizationSettings:input_type -> gitpod.v1.UpdateOrganizationSettingsRequest + 12, // 31: gitpod.v1.OrganizationService.CreateOrganization:output_type -> gitpod.v1.CreateOrganizationResponse + 14, // 32: gitpod.v1.OrganizationService.GetOrganization:output_type -> gitpod.v1.GetOrganizationResponse + 6, // 33: gitpod.v1.OrganizationService.UpdateOrganization:output_type -> gitpod.v1.UpdateOrganizationResponse + 16, // 34: gitpod.v1.OrganizationService.ListOrganizations:output_type -> gitpod.v1.ListOrganizationsResponse + 18, // 35: gitpod.v1.OrganizationService.DeleteOrganization:output_type -> gitpod.v1.DeleteOrganizationResponse + 20, // 36: gitpod.v1.OrganizationService.GetOrganizationInvitation:output_type -> gitpod.v1.GetOrganizationInvitationResponse + 22, // 37: gitpod.v1.OrganizationService.JoinOrganization:output_type -> gitpod.v1.JoinOrganizationResponse + 24, // 38: gitpod.v1.OrganizationService.ResetOrganizationInvitation:output_type -> gitpod.v1.ResetOrganizationInvitationResponse + 26, // 39: gitpod.v1.OrganizationService.ListOrganizationMembers:output_type -> gitpod.v1.ListOrganizationMembersResponse + 28, // 40: gitpod.v1.OrganizationService.UpdateOrganizationMember:output_type -> gitpod.v1.UpdateOrganizationMemberResponse + 30, // 41: gitpod.v1.OrganizationService.DeleteOrganizationMember:output_type -> gitpod.v1.DeleteOrganizationMemberResponse + 10, // 42: gitpod.v1.OrganizationService.GetOrganizationSettings:output_type -> gitpod.v1.GetOrganizationSettingsResponse + 8, // 43: gitpod.v1.OrganizationService.UpdateOrganizationSettings:output_type -> gitpod.v1.UpdateOrganizationSettingsResponse + 31, // [31:44] is the sub-list for method output_type + 18, // [18:31] is the sub-list for method input_type + 18, // [18:18] is the sub-list for extension type_name + 18, // [18:18] is the sub-list for extension extendee + 0, // [0:18] is the sub-list for field type_name +} + +func init() { file_gitpod_v1_organization_proto_init() } +func file_gitpod_v1_organization_proto_init() { + if File_gitpod_v1_organization_proto != nil { return } - file_gitpod_experimental_v2_pagination_proto_init() + file_gitpod_v1_pagination_proto_init() if !protoimpl.UnsafeEnabled { - file_gitpod_experimental_v2_organization_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_gitpod_v1_organization_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Organization); i { case 0: return &v.state @@ -1988,7 +2085,7 @@ func file_gitpod_experimental_v2_organization_proto_init() { return nil } } - file_gitpod_experimental_v2_organization_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_gitpod_v1_organization_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OrganizationMember); i { case 0: return &v.state @@ -2000,7 +2097,7 @@ func file_gitpod_experimental_v2_organization_proto_init() { return nil } } - file_gitpod_experimental_v2_organization_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_gitpod_v1_organization_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OrganizationSettings); i { case 0: return &v.state @@ -2012,7 +2109,7 @@ func file_gitpod_experimental_v2_organization_proto_init() { return nil } } - file_gitpod_experimental_v2_organization_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_gitpod_v1_organization_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateOrganizationRequest); i { case 0: return &v.state @@ -2024,7 +2121,7 @@ func file_gitpod_experimental_v2_organization_proto_init() { return nil } } - file_gitpod_experimental_v2_organization_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_gitpod_v1_organization_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateOrganizationResponse); i { case 0: return &v.state @@ -2036,7 +2133,7 @@ func file_gitpod_experimental_v2_organization_proto_init() { return nil } } - file_gitpod_experimental_v2_organization_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_gitpod_v1_organization_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateOrganizationSettingsRequest); i { case 0: return &v.state @@ -2048,7 +2145,7 @@ func file_gitpod_experimental_v2_organization_proto_init() { return nil } } - file_gitpod_experimental_v2_organization_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_gitpod_v1_organization_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateOrganizationSettingsResponse); i { case 0: return &v.state @@ -2060,7 +2157,7 @@ func file_gitpod_experimental_v2_organization_proto_init() { return nil } } - file_gitpod_experimental_v2_organization_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_gitpod_v1_organization_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetOrganizationSettingsRequest); i { case 0: return &v.state @@ -2072,7 +2169,7 @@ func file_gitpod_experimental_v2_organization_proto_init() { return nil } } - file_gitpod_experimental_v2_organization_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_gitpod_v1_organization_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetOrganizationSettingsResponse); i { case 0: return &v.state @@ -2084,7 +2181,7 @@ func file_gitpod_experimental_v2_organization_proto_init() { return nil } } - file_gitpod_experimental_v2_organization_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_gitpod_v1_organization_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateOrganizationRequest); i { case 0: return &v.state @@ -2096,7 +2193,7 @@ func file_gitpod_experimental_v2_organization_proto_init() { return nil } } - file_gitpod_experimental_v2_organization_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_gitpod_v1_organization_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateOrganizationResponse); i { case 0: return &v.state @@ -2108,7 +2205,7 @@ func file_gitpod_experimental_v2_organization_proto_init() { return nil } } - file_gitpod_experimental_v2_organization_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + file_gitpod_v1_organization_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetOrganizationRequest); i { case 0: return &v.state @@ -2120,7 +2217,7 @@ func file_gitpod_experimental_v2_organization_proto_init() { return nil } } - file_gitpod_experimental_v2_organization_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + file_gitpod_v1_organization_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetOrganizationResponse); i { case 0: return &v.state @@ -2132,7 +2229,7 @@ func file_gitpod_experimental_v2_organization_proto_init() { return nil } } - file_gitpod_experimental_v2_organization_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + file_gitpod_v1_organization_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListOrganizationsRequest); i { case 0: return &v.state @@ -2144,7 +2241,7 @@ func file_gitpod_experimental_v2_organization_proto_init() { return nil } } - file_gitpod_experimental_v2_organization_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + file_gitpod_v1_organization_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListOrganizationsResponse); i { case 0: return &v.state @@ -2156,7 +2253,7 @@ func file_gitpod_experimental_v2_organization_proto_init() { return nil } } - file_gitpod_experimental_v2_organization_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + file_gitpod_v1_organization_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteOrganizationRequest); i { case 0: return &v.state @@ -2168,7 +2265,7 @@ func file_gitpod_experimental_v2_organization_proto_init() { return nil } } - file_gitpod_experimental_v2_organization_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + file_gitpod_v1_organization_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteOrganizationResponse); i { case 0: return &v.state @@ -2180,7 +2277,7 @@ func file_gitpod_experimental_v2_organization_proto_init() { return nil } } - file_gitpod_experimental_v2_organization_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + file_gitpod_v1_organization_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetOrganizationInvitationRequest); i { case 0: return &v.state @@ -2192,7 +2289,7 @@ func file_gitpod_experimental_v2_organization_proto_init() { return nil } } - file_gitpod_experimental_v2_organization_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + file_gitpod_v1_organization_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetOrganizationInvitationResponse); i { case 0: return &v.state @@ -2204,7 +2301,7 @@ func file_gitpod_experimental_v2_organization_proto_init() { return nil } } - file_gitpod_experimental_v2_organization_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + file_gitpod_v1_organization_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*JoinOrganizationRequest); i { case 0: return &v.state @@ -2216,7 +2313,7 @@ func file_gitpod_experimental_v2_organization_proto_init() { return nil } } - file_gitpod_experimental_v2_organization_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + file_gitpod_v1_organization_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*JoinOrganizationResponse); i { case 0: return &v.state @@ -2228,7 +2325,7 @@ func file_gitpod_experimental_v2_organization_proto_init() { return nil } } - file_gitpod_experimental_v2_organization_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + file_gitpod_v1_organization_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ResetOrganizationInvitationRequest); i { case 0: return &v.state @@ -2240,7 +2337,7 @@ func file_gitpod_experimental_v2_organization_proto_init() { return nil } } - file_gitpod_experimental_v2_organization_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + file_gitpod_v1_organization_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ResetOrganizationInvitationResponse); i { case 0: return &v.state @@ -2252,7 +2349,7 @@ func file_gitpod_experimental_v2_organization_proto_init() { return nil } } - file_gitpod_experimental_v2_organization_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + file_gitpod_v1_organization_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListOrganizationMembersRequest); i { case 0: return &v.state @@ -2264,7 +2361,7 @@ func file_gitpod_experimental_v2_organization_proto_init() { return nil } } - file_gitpod_experimental_v2_organization_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + file_gitpod_v1_organization_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListOrganizationMembersResponse); i { case 0: return &v.state @@ -2276,7 +2373,7 @@ func file_gitpod_experimental_v2_organization_proto_init() { return nil } } - file_gitpod_experimental_v2_organization_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + file_gitpod_v1_organization_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateOrganizationMemberRequest); i { case 0: return &v.state @@ -2288,7 +2385,7 @@ func file_gitpod_experimental_v2_organization_proto_init() { return nil } } - file_gitpod_experimental_v2_organization_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + file_gitpod_v1_organization_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateOrganizationMemberResponse); i { case 0: return &v.state @@ -2300,7 +2397,7 @@ func file_gitpod_experimental_v2_organization_proto_init() { return nil } } - file_gitpod_experimental_v2_organization_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + file_gitpod_v1_organization_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteOrganizationMemberRequest); i { case 0: return &v.state @@ -2312,7 +2409,7 @@ func file_gitpod_experimental_v2_organization_proto_init() { return nil } } - file_gitpod_experimental_v2_organization_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + file_gitpod_v1_organization_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteOrganizationMemberResponse); i { case 0: return &v.state @@ -2325,25 +2422,25 @@ func file_gitpod_experimental_v2_organization_proto_init() { } } } - file_gitpod_experimental_v2_organization_proto_msgTypes[1].OneofWrappers = []interface{}{} - file_gitpod_experimental_v2_organization_proto_msgTypes[2].OneofWrappers = []interface{}{} + file_gitpod_v1_organization_proto_msgTypes[1].OneofWrappers = []interface{}{} + file_gitpod_v1_organization_proto_msgTypes[2].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_gitpod_experimental_v2_organization_proto_rawDesc, - NumEnums: 1, + RawDescriptor: file_gitpod_v1_organization_proto_rawDesc, + NumEnums: 2, NumMessages: 29, NumExtensions: 0, NumServices: 1, }, - GoTypes: file_gitpod_experimental_v2_organization_proto_goTypes, - DependencyIndexes: file_gitpod_experimental_v2_organization_proto_depIdxs, - EnumInfos: file_gitpod_experimental_v2_organization_proto_enumTypes, - MessageInfos: file_gitpod_experimental_v2_organization_proto_msgTypes, + GoTypes: file_gitpod_v1_organization_proto_goTypes, + DependencyIndexes: file_gitpod_v1_organization_proto_depIdxs, + EnumInfos: file_gitpod_v1_organization_proto_enumTypes, + MessageInfos: file_gitpod_v1_organization_proto_msgTypes, }.Build() - File_gitpod_experimental_v2_organization_proto = out.File - file_gitpod_experimental_v2_organization_proto_rawDesc = nil - file_gitpod_experimental_v2_organization_proto_goTypes = nil - file_gitpod_experimental_v2_organization_proto_depIdxs = nil + File_gitpod_v1_organization_proto = out.File + file_gitpod_v1_organization_proto_rawDesc = nil + file_gitpod_v1_organization_proto_goTypes = nil + file_gitpod_v1_organization_proto_depIdxs = nil } diff --git a/components/public-api/go/experimental/v2/organization_grpc.pb.go b/components/public-api/go/v1/organization_grpc.pb.go similarity index 90% rename from components/public-api/go/experimental/v2/organization_grpc.pb.go rename to components/public-api/go/v1/organization_grpc.pb.go index 7716b3c4331fe7..7dc19f0bcec31e 100644 --- a/components/public-api/go/experimental/v2/organization_grpc.pb.go +++ b/components/public-api/go/v1/organization_grpc.pb.go @@ -6,9 +6,9 @@ // versions: // - protoc-gen-go-grpc v1.2.0 // - protoc (unknown) -// source: gitpod/experimental/v2/organization.proto +// source: gitpod/v1/organization.proto -package v2 +package v1 import ( context "context" @@ -46,7 +46,8 @@ type OrganizationServiceClient interface { ListOrganizationMembers(ctx context.Context, in *ListOrganizationMembersRequest, opts ...grpc.CallOption) (*ListOrganizationMembersResponse, error) // UpdateOrganizationMember updates organization membership properties. UpdateOrganizationMember(ctx context.Context, in *UpdateOrganizationMemberRequest, opts ...grpc.CallOption) (*UpdateOrganizationMemberResponse, error) - // DeleteOrganizationMember removes a OrganizationMember from the Organization. + // DeleteOrganizationMember removes a OrganizationMember from the + // Organization. DeleteOrganizationMember(ctx context.Context, in *DeleteOrganizationMemberRequest, opts ...grpc.CallOption) (*DeleteOrganizationMemberResponse, error) // GetOrganizationSettings retrieves the settings of a Organization. GetOrganizationSettings(ctx context.Context, in *GetOrganizationSettingsRequest, opts ...grpc.CallOption) (*GetOrganizationSettingsResponse, error) @@ -64,7 +65,7 @@ func NewOrganizationServiceClient(cc grpc.ClientConnInterface) OrganizationServi func (c *organizationServiceClient) CreateOrganization(ctx context.Context, in *CreateOrganizationRequest, opts ...grpc.CallOption) (*CreateOrganizationResponse, error) { out := new(CreateOrganizationResponse) - err := c.cc.Invoke(ctx, "/gitpod.experimental.v2.OrganizationService/CreateOrganization", in, out, opts...) + err := c.cc.Invoke(ctx, "/gitpod.v1.OrganizationService/CreateOrganization", in, out, opts...) if err != nil { return nil, err } @@ -73,7 +74,7 @@ func (c *organizationServiceClient) CreateOrganization(ctx context.Context, in * func (c *organizationServiceClient) GetOrganization(ctx context.Context, in *GetOrganizationRequest, opts ...grpc.CallOption) (*GetOrganizationResponse, error) { out := new(GetOrganizationResponse) - err := c.cc.Invoke(ctx, "/gitpod.experimental.v2.OrganizationService/GetOrganization", in, out, opts...) + err := c.cc.Invoke(ctx, "/gitpod.v1.OrganizationService/GetOrganization", in, out, opts...) if err != nil { return nil, err } @@ -82,7 +83,7 @@ func (c *organizationServiceClient) GetOrganization(ctx context.Context, in *Get func (c *organizationServiceClient) UpdateOrganization(ctx context.Context, in *UpdateOrganizationRequest, opts ...grpc.CallOption) (*UpdateOrganizationResponse, error) { out := new(UpdateOrganizationResponse) - err := c.cc.Invoke(ctx, "/gitpod.experimental.v2.OrganizationService/UpdateOrganization", in, out, opts...) + err := c.cc.Invoke(ctx, "/gitpod.v1.OrganizationService/UpdateOrganization", in, out, opts...) if err != nil { return nil, err } @@ -91,7 +92,7 @@ func (c *organizationServiceClient) UpdateOrganization(ctx context.Context, in * func (c *organizationServiceClient) ListOrganizations(ctx context.Context, in *ListOrganizationsRequest, opts ...grpc.CallOption) (*ListOrganizationsResponse, error) { out := new(ListOrganizationsResponse) - err := c.cc.Invoke(ctx, "/gitpod.experimental.v2.OrganizationService/ListOrganizations", in, out, opts...) + err := c.cc.Invoke(ctx, "/gitpod.v1.OrganizationService/ListOrganizations", in, out, opts...) if err != nil { return nil, err } @@ -100,7 +101,7 @@ func (c *organizationServiceClient) ListOrganizations(ctx context.Context, in *L func (c *organizationServiceClient) DeleteOrganization(ctx context.Context, in *DeleteOrganizationRequest, opts ...grpc.CallOption) (*DeleteOrganizationResponse, error) { out := new(DeleteOrganizationResponse) - err := c.cc.Invoke(ctx, "/gitpod.experimental.v2.OrganizationService/DeleteOrganization", in, out, opts...) + err := c.cc.Invoke(ctx, "/gitpod.v1.OrganizationService/DeleteOrganization", in, out, opts...) if err != nil { return nil, err } @@ -109,7 +110,7 @@ func (c *organizationServiceClient) DeleteOrganization(ctx context.Context, in * func (c *organizationServiceClient) GetOrganizationInvitation(ctx context.Context, in *GetOrganizationInvitationRequest, opts ...grpc.CallOption) (*GetOrganizationInvitationResponse, error) { out := new(GetOrganizationInvitationResponse) - err := c.cc.Invoke(ctx, "/gitpod.experimental.v2.OrganizationService/GetOrganizationInvitation", in, out, opts...) + err := c.cc.Invoke(ctx, "/gitpod.v1.OrganizationService/GetOrganizationInvitation", in, out, opts...) if err != nil { return nil, err } @@ -118,7 +119,7 @@ func (c *organizationServiceClient) GetOrganizationInvitation(ctx context.Contex func (c *organizationServiceClient) JoinOrganization(ctx context.Context, in *JoinOrganizationRequest, opts ...grpc.CallOption) (*JoinOrganizationResponse, error) { out := new(JoinOrganizationResponse) - err := c.cc.Invoke(ctx, "/gitpod.experimental.v2.OrganizationService/JoinOrganization", in, out, opts...) + err := c.cc.Invoke(ctx, "/gitpod.v1.OrganizationService/JoinOrganization", in, out, opts...) if err != nil { return nil, err } @@ -127,7 +128,7 @@ func (c *organizationServiceClient) JoinOrganization(ctx context.Context, in *Jo func (c *organizationServiceClient) ResetOrganizationInvitation(ctx context.Context, in *ResetOrganizationInvitationRequest, opts ...grpc.CallOption) (*ResetOrganizationInvitationResponse, error) { out := new(ResetOrganizationInvitationResponse) - err := c.cc.Invoke(ctx, "/gitpod.experimental.v2.OrganizationService/ResetOrganizationInvitation", in, out, opts...) + err := c.cc.Invoke(ctx, "/gitpod.v1.OrganizationService/ResetOrganizationInvitation", in, out, opts...) if err != nil { return nil, err } @@ -136,7 +137,7 @@ func (c *organizationServiceClient) ResetOrganizationInvitation(ctx context.Cont func (c *organizationServiceClient) ListOrganizationMembers(ctx context.Context, in *ListOrganizationMembersRequest, opts ...grpc.CallOption) (*ListOrganizationMembersResponse, error) { out := new(ListOrganizationMembersResponse) - err := c.cc.Invoke(ctx, "/gitpod.experimental.v2.OrganizationService/ListOrganizationMembers", in, out, opts...) + err := c.cc.Invoke(ctx, "/gitpod.v1.OrganizationService/ListOrganizationMembers", in, out, opts...) if err != nil { return nil, err } @@ -145,7 +146,7 @@ func (c *organizationServiceClient) ListOrganizationMembers(ctx context.Context, func (c *organizationServiceClient) UpdateOrganizationMember(ctx context.Context, in *UpdateOrganizationMemberRequest, opts ...grpc.CallOption) (*UpdateOrganizationMemberResponse, error) { out := new(UpdateOrganizationMemberResponse) - err := c.cc.Invoke(ctx, "/gitpod.experimental.v2.OrganizationService/UpdateOrganizationMember", in, out, opts...) + err := c.cc.Invoke(ctx, "/gitpod.v1.OrganizationService/UpdateOrganizationMember", in, out, opts...) if err != nil { return nil, err } @@ -154,7 +155,7 @@ func (c *organizationServiceClient) UpdateOrganizationMember(ctx context.Context func (c *organizationServiceClient) DeleteOrganizationMember(ctx context.Context, in *DeleteOrganizationMemberRequest, opts ...grpc.CallOption) (*DeleteOrganizationMemberResponse, error) { out := new(DeleteOrganizationMemberResponse) - err := c.cc.Invoke(ctx, "/gitpod.experimental.v2.OrganizationService/DeleteOrganizationMember", in, out, opts...) + err := c.cc.Invoke(ctx, "/gitpod.v1.OrganizationService/DeleteOrganizationMember", in, out, opts...) if err != nil { return nil, err } @@ -163,7 +164,7 @@ func (c *organizationServiceClient) DeleteOrganizationMember(ctx context.Context func (c *organizationServiceClient) GetOrganizationSettings(ctx context.Context, in *GetOrganizationSettingsRequest, opts ...grpc.CallOption) (*GetOrganizationSettingsResponse, error) { out := new(GetOrganizationSettingsResponse) - err := c.cc.Invoke(ctx, "/gitpod.experimental.v2.OrganizationService/GetOrganizationSettings", in, out, opts...) + err := c.cc.Invoke(ctx, "/gitpod.v1.OrganizationService/GetOrganizationSettings", in, out, opts...) if err != nil { return nil, err } @@ -172,7 +173,7 @@ func (c *organizationServiceClient) GetOrganizationSettings(ctx context.Context, func (c *organizationServiceClient) UpdateOrganizationSettings(ctx context.Context, in *UpdateOrganizationSettingsRequest, opts ...grpc.CallOption) (*UpdateOrganizationSettingsResponse, error) { out := new(UpdateOrganizationSettingsResponse) - err := c.cc.Invoke(ctx, "/gitpod.experimental.v2.OrganizationService/UpdateOrganizationSettings", in, out, opts...) + err := c.cc.Invoke(ctx, "/gitpod.v1.OrganizationService/UpdateOrganizationSettings", in, out, opts...) if err != nil { return nil, err } @@ -203,7 +204,8 @@ type OrganizationServiceServer interface { ListOrganizationMembers(context.Context, *ListOrganizationMembersRequest) (*ListOrganizationMembersResponse, error) // UpdateOrganizationMember updates organization membership properties. UpdateOrganizationMember(context.Context, *UpdateOrganizationMemberRequest) (*UpdateOrganizationMemberResponse, error) - // DeleteOrganizationMember removes a OrganizationMember from the Organization. + // DeleteOrganizationMember removes a OrganizationMember from the + // Organization. DeleteOrganizationMember(context.Context, *DeleteOrganizationMemberRequest) (*DeleteOrganizationMemberResponse, error) // GetOrganizationSettings retrieves the settings of a Organization. GetOrganizationSettings(context.Context, *GetOrganizationSettingsRequest) (*GetOrganizationSettingsResponse, error) @@ -278,7 +280,7 @@ func _OrganizationService_CreateOrganization_Handler(srv interface{}, ctx contex } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/gitpod.experimental.v2.OrganizationService/CreateOrganization", + FullMethod: "/gitpod.v1.OrganizationService/CreateOrganization", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(OrganizationServiceServer).CreateOrganization(ctx, req.(*CreateOrganizationRequest)) @@ -296,7 +298,7 @@ func _OrganizationService_GetOrganization_Handler(srv interface{}, ctx context.C } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/gitpod.experimental.v2.OrganizationService/GetOrganization", + FullMethod: "/gitpod.v1.OrganizationService/GetOrganization", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(OrganizationServiceServer).GetOrganization(ctx, req.(*GetOrganizationRequest)) @@ -314,7 +316,7 @@ func _OrganizationService_UpdateOrganization_Handler(srv interface{}, ctx contex } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/gitpod.experimental.v2.OrganizationService/UpdateOrganization", + FullMethod: "/gitpod.v1.OrganizationService/UpdateOrganization", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(OrganizationServiceServer).UpdateOrganization(ctx, req.(*UpdateOrganizationRequest)) @@ -332,7 +334,7 @@ func _OrganizationService_ListOrganizations_Handler(srv interface{}, ctx context } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/gitpod.experimental.v2.OrganizationService/ListOrganizations", + FullMethod: "/gitpod.v1.OrganizationService/ListOrganizations", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(OrganizationServiceServer).ListOrganizations(ctx, req.(*ListOrganizationsRequest)) @@ -350,7 +352,7 @@ func _OrganizationService_DeleteOrganization_Handler(srv interface{}, ctx contex } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/gitpod.experimental.v2.OrganizationService/DeleteOrganization", + FullMethod: "/gitpod.v1.OrganizationService/DeleteOrganization", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(OrganizationServiceServer).DeleteOrganization(ctx, req.(*DeleteOrganizationRequest)) @@ -368,7 +370,7 @@ func _OrganizationService_GetOrganizationInvitation_Handler(srv interface{}, ctx } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/gitpod.experimental.v2.OrganizationService/GetOrganizationInvitation", + FullMethod: "/gitpod.v1.OrganizationService/GetOrganizationInvitation", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(OrganizationServiceServer).GetOrganizationInvitation(ctx, req.(*GetOrganizationInvitationRequest)) @@ -386,7 +388,7 @@ func _OrganizationService_JoinOrganization_Handler(srv interface{}, ctx context. } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/gitpod.experimental.v2.OrganizationService/JoinOrganization", + FullMethod: "/gitpod.v1.OrganizationService/JoinOrganization", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(OrganizationServiceServer).JoinOrganization(ctx, req.(*JoinOrganizationRequest)) @@ -404,7 +406,7 @@ func _OrganizationService_ResetOrganizationInvitation_Handler(srv interface{}, c } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/gitpod.experimental.v2.OrganizationService/ResetOrganizationInvitation", + FullMethod: "/gitpod.v1.OrganizationService/ResetOrganizationInvitation", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(OrganizationServiceServer).ResetOrganizationInvitation(ctx, req.(*ResetOrganizationInvitationRequest)) @@ -422,7 +424,7 @@ func _OrganizationService_ListOrganizationMembers_Handler(srv interface{}, ctx c } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/gitpod.experimental.v2.OrganizationService/ListOrganizationMembers", + FullMethod: "/gitpod.v1.OrganizationService/ListOrganizationMembers", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(OrganizationServiceServer).ListOrganizationMembers(ctx, req.(*ListOrganizationMembersRequest)) @@ -440,7 +442,7 @@ func _OrganizationService_UpdateOrganizationMember_Handler(srv interface{}, ctx } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/gitpod.experimental.v2.OrganizationService/UpdateOrganizationMember", + FullMethod: "/gitpod.v1.OrganizationService/UpdateOrganizationMember", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(OrganizationServiceServer).UpdateOrganizationMember(ctx, req.(*UpdateOrganizationMemberRequest)) @@ -458,7 +460,7 @@ func _OrganizationService_DeleteOrganizationMember_Handler(srv interface{}, ctx } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/gitpod.experimental.v2.OrganizationService/DeleteOrganizationMember", + FullMethod: "/gitpod.v1.OrganizationService/DeleteOrganizationMember", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(OrganizationServiceServer).DeleteOrganizationMember(ctx, req.(*DeleteOrganizationMemberRequest)) @@ -476,7 +478,7 @@ func _OrganizationService_GetOrganizationSettings_Handler(srv interface{}, ctx c } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/gitpod.experimental.v2.OrganizationService/GetOrganizationSettings", + FullMethod: "/gitpod.v1.OrganizationService/GetOrganizationSettings", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(OrganizationServiceServer).GetOrganizationSettings(ctx, req.(*GetOrganizationSettingsRequest)) @@ -494,7 +496,7 @@ func _OrganizationService_UpdateOrganizationSettings_Handler(srv interface{}, ct } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/gitpod.experimental.v2.OrganizationService/UpdateOrganizationSettings", + FullMethod: "/gitpod.v1.OrganizationService/UpdateOrganizationSettings", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(OrganizationServiceServer).UpdateOrganizationSettings(ctx, req.(*UpdateOrganizationSettingsRequest)) @@ -506,7 +508,7 @@ func _OrganizationService_UpdateOrganizationSettings_Handler(srv interface{}, ct // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) var OrganizationService_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "gitpod.experimental.v2.OrganizationService", + ServiceName: "gitpod.v1.OrganizationService", HandlerType: (*OrganizationServiceServer)(nil), Methods: []grpc.MethodDesc{ { @@ -563,5 +565,5 @@ var OrganizationService_ServiceDesc = grpc.ServiceDesc{ }, }, Streams: []grpc.StreamDesc{}, - Metadata: "gitpod/experimental/v2/organization.proto", + Metadata: "gitpod/v1/organization.proto", } diff --git a/components/public-api/go/experimental/v2/pagination.pb.go b/components/public-api/go/v1/pagination.pb.go similarity index 50% rename from components/public-api/go/experimental/v2/pagination.pb.go rename to components/public-api/go/v1/pagination.pb.go index 26b94d33b560e9..fb8f9fd0cbd3a8 100644 --- a/components/public-api/go/experimental/v2/pagination.pb.go +++ b/components/public-api/go/v1/pagination.pb.go @@ -6,9 +6,9 @@ // versions: // protoc-gen-go v1.28.1 // protoc (unknown) -// source: gitpod/experimental/v2/pagination.proto +// source: gitpod/v1/pagination.proto -package v2 +package v1 import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -41,7 +41,7 @@ type PaginationRequest struct { func (x *PaginationRequest) Reset() { *x = PaginationRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v2_pagination_proto_msgTypes[0] + mi := &file_gitpod_v1_pagination_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -54,7 +54,7 @@ func (x *PaginationRequest) String() string { func (*PaginationRequest) ProtoMessage() {} func (x *PaginationRequest) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v2_pagination_proto_msgTypes[0] + mi := &file_gitpod_v1_pagination_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -67,7 +67,7 @@ func (x *PaginationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PaginationRequest.ProtoReflect.Descriptor instead. func (*PaginationRequest) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_pagination_proto_rawDescGZIP(), []int{0} + return file_gitpod_v1_pagination_proto_rawDescGZIP(), []int{0} } func (x *PaginationRequest) GetPageSize() int32 { @@ -96,7 +96,7 @@ type PaginationResponse struct { func (x *PaginationResponse) Reset() { *x = PaginationResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v2_pagination_proto_msgTypes[1] + mi := &file_gitpod_v1_pagination_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -109,7 +109,7 @@ func (x *PaginationResponse) String() string { func (*PaginationResponse) ProtoMessage() {} func (x *PaginationResponse) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v2_pagination_proto_msgTypes[1] + mi := &file_gitpod_v1_pagination_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -122,7 +122,7 @@ func (x *PaginationResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use PaginationResponse.ProtoReflect.Descriptor instead. func (*PaginationResponse) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_pagination_proto_rawDescGZIP(), []int{1} + return file_gitpod_v1_pagination_proto_rawDescGZIP(), []int{1} } func (x *PaginationResponse) GetTotal() int32 { @@ -132,46 +132,43 @@ func (x *PaginationResponse) GetTotal() int32 { return 0 } -var File_gitpod_experimental_v2_pagination_proto protoreflect.FileDescriptor - -var file_gitpod_experimental_v2_pagination_proto_rawDesc = []byte{ - 0x0a, 0x27, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, - 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2f, 0x76, 0x32, 0x2f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x67, 0x69, 0x74, 0x70, 0x6f, - 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, - 0x32, 0x22, 0x44, 0x0a, 0x11, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, - 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, - 0x69, 0x7a, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x22, 0x2a, 0x0a, 0x12, 0x50, 0x61, 0x67, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x42, 0x46, 0x5a, 0x44, 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, 0x65, 0x78, 0x70, 0x65, - 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2f, 0x76, 0x32, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, +var File_gitpod_v1_pagination_proto protoreflect.FileDescriptor + +var file_gitpod_v1_pagination_proto_rawDesc = []byte{ + 0x0a, 0x1a, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x61, 0x67, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x67, 0x69, + 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x22, 0x44, 0x0a, 0x11, 0x50, 0x61, 0x67, 0x69, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, + 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x22, 0x2a, 0x0a, + 0x12, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x39, 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 ( - file_gitpod_experimental_v2_pagination_proto_rawDescOnce sync.Once - file_gitpod_experimental_v2_pagination_proto_rawDescData = file_gitpod_experimental_v2_pagination_proto_rawDesc + file_gitpod_v1_pagination_proto_rawDescOnce sync.Once + file_gitpod_v1_pagination_proto_rawDescData = file_gitpod_v1_pagination_proto_rawDesc ) -func file_gitpod_experimental_v2_pagination_proto_rawDescGZIP() []byte { - file_gitpod_experimental_v2_pagination_proto_rawDescOnce.Do(func() { - file_gitpod_experimental_v2_pagination_proto_rawDescData = protoimpl.X.CompressGZIP(file_gitpod_experimental_v2_pagination_proto_rawDescData) +func file_gitpod_v1_pagination_proto_rawDescGZIP() []byte { + file_gitpod_v1_pagination_proto_rawDescOnce.Do(func() { + file_gitpod_v1_pagination_proto_rawDescData = protoimpl.X.CompressGZIP(file_gitpod_v1_pagination_proto_rawDescData) }) - return file_gitpod_experimental_v2_pagination_proto_rawDescData + return file_gitpod_v1_pagination_proto_rawDescData } -var file_gitpod_experimental_v2_pagination_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_gitpod_experimental_v2_pagination_proto_goTypes = []interface{}{ - (*PaginationRequest)(nil), // 0: gitpod.experimental.v2.PaginationRequest - (*PaginationResponse)(nil), // 1: gitpod.experimental.v2.PaginationResponse +var file_gitpod_v1_pagination_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_gitpod_v1_pagination_proto_goTypes = []interface{}{ + (*PaginationRequest)(nil), // 0: gitpod.v1.PaginationRequest + (*PaginationResponse)(nil), // 1: gitpod.v1.PaginationResponse } -var file_gitpod_experimental_v2_pagination_proto_depIdxs = []int32{ +var file_gitpod_v1_pagination_proto_depIdxs = []int32{ 0, // [0:0] is the sub-list for method output_type 0, // [0:0] is the sub-list for method input_type 0, // [0:0] is the sub-list for extension type_name @@ -179,13 +176,13 @@ var file_gitpod_experimental_v2_pagination_proto_depIdxs = []int32{ 0, // [0:0] is the sub-list for field type_name } -func init() { file_gitpod_experimental_v2_pagination_proto_init() } -func file_gitpod_experimental_v2_pagination_proto_init() { - if File_gitpod_experimental_v2_pagination_proto != nil { +func init() { file_gitpod_v1_pagination_proto_init() } +func file_gitpod_v1_pagination_proto_init() { + if File_gitpod_v1_pagination_proto != nil { return } if !protoimpl.UnsafeEnabled { - file_gitpod_experimental_v2_pagination_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_gitpod_v1_pagination_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PaginationRequest); i { case 0: return &v.state @@ -197,7 +194,7 @@ func file_gitpod_experimental_v2_pagination_proto_init() { return nil } } - file_gitpod_experimental_v2_pagination_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_gitpod_v1_pagination_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PaginationResponse); i { case 0: return &v.state @@ -214,18 +211,18 @@ func file_gitpod_experimental_v2_pagination_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_gitpod_experimental_v2_pagination_proto_rawDesc, + RawDescriptor: file_gitpod_v1_pagination_proto_rawDesc, NumEnums: 0, NumMessages: 2, NumExtensions: 0, NumServices: 0, }, - GoTypes: file_gitpod_experimental_v2_pagination_proto_goTypes, - DependencyIndexes: file_gitpod_experimental_v2_pagination_proto_depIdxs, - MessageInfos: file_gitpod_experimental_v2_pagination_proto_msgTypes, + GoTypes: file_gitpod_v1_pagination_proto_goTypes, + DependencyIndexes: file_gitpod_v1_pagination_proto_depIdxs, + MessageInfos: file_gitpod_v1_pagination_proto_msgTypes, }.Build() - File_gitpod_experimental_v2_pagination_proto = out.File - file_gitpod_experimental_v2_pagination_proto_rawDesc = nil - file_gitpod_experimental_v2_pagination_proto_goTypes = nil - file_gitpod_experimental_v2_pagination_proto_depIdxs = nil + File_gitpod_v1_pagination_proto = out.File + file_gitpod_v1_pagination_proto_rawDesc = nil + file_gitpod_v1_pagination_proto_goTypes = nil + file_gitpod_v1_pagination_proto_depIdxs = nil } diff --git a/components/public-api/go/v1/v1connect/organization.connect.go b/components/public-api/go/v1/v1connect/organization.connect.go new file mode 100644 index 00000000000000..5e5ac10ec39ece --- /dev/null +++ b/components/public-api/go/v1/v1connect/organization.connect.go @@ -0,0 +1,382 @@ +// Copyright (c) 2023 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. + +// Code generated by protoc-gen-connect-go. DO NOT EDIT. +// +// Source: gitpod/v1/organization.proto + +package v1connect + +import ( + context "context" + errors "errors" + connect_go "github.com/bufbuild/connect-go" + v1 "github.com/gitpod-io/gitpod/components/public-api/go/v1" + http "net/http" + strings "strings" +) + +// This is a compile-time assertion to ensure that this generated file and the connect package are +// compatible. If you get a compiler error that this constant is not defined, this code was +// generated with a version of connect newer than the one compiled into your binary. You can fix the +// problem by either regenerating this code with an older version of connect or updating the connect +// version compiled into your binary. +const _ = connect_go.IsAtLeastVersion0_1_0 + +const ( + // OrganizationServiceName is the fully-qualified name of the OrganizationService service. + OrganizationServiceName = "gitpod.v1.OrganizationService" +) + +// OrganizationServiceClient is a client for the gitpod.v1.OrganizationService service. +type OrganizationServiceClient interface { + // CreateOrganization creates a new Organization. + CreateOrganization(context.Context, *connect_go.Request[v1.CreateOrganizationRequest]) (*connect_go.Response[v1.CreateOrganizationResponse], error) + // GetOrganization retrieves a single Organization. + GetOrganization(context.Context, *connect_go.Request[v1.GetOrganizationRequest]) (*connect_go.Response[v1.GetOrganizationResponse], error) + // UpdateOrganization updates the properties of an Organization. + UpdateOrganization(context.Context, *connect_go.Request[v1.UpdateOrganizationRequest]) (*connect_go.Response[v1.UpdateOrganizationResponse], error) + // ListOrganizations lists all organization the caller has access to. + ListOrganizations(context.Context, *connect_go.Request[v1.ListOrganizationsRequest]) (*connect_go.Response[v1.ListOrganizationsResponse], error) + // DeleteOrganization deletes the specified organization. + DeleteOrganization(context.Context, *connect_go.Request[v1.DeleteOrganizationRequest]) (*connect_go.Response[v1.DeleteOrganizationResponse], error) + // GetOrganizationInvitation retrieves the invitation for a Organization. + GetOrganizationInvitation(context.Context, *connect_go.Request[v1.GetOrganizationInvitationRequest]) (*connect_go.Response[v1.GetOrganizationInvitationResponse], error) + // JoinOrganization makes the caller a OrganizationMember of the Organization. + JoinOrganization(context.Context, *connect_go.Request[v1.JoinOrganizationRequest]) (*connect_go.Response[v1.JoinOrganizationResponse], error) + // ResetOrganizationInvitation resets the invitation_id for a Organization. + ResetOrganizationInvitation(context.Context, *connect_go.Request[v1.ResetOrganizationInvitationRequest]) (*connect_go.Response[v1.ResetOrganizationInvitationResponse], error) + // ListOrganizationMembers lists the members of a Organization. + ListOrganizationMembers(context.Context, *connect_go.Request[v1.ListOrganizationMembersRequest]) (*connect_go.Response[v1.ListOrganizationMembersResponse], error) + // UpdateOrganizationMember updates organization membership properties. + UpdateOrganizationMember(context.Context, *connect_go.Request[v1.UpdateOrganizationMemberRequest]) (*connect_go.Response[v1.UpdateOrganizationMemberResponse], error) + // DeleteOrganizationMember removes a OrganizationMember from the + // Organization. + DeleteOrganizationMember(context.Context, *connect_go.Request[v1.DeleteOrganizationMemberRequest]) (*connect_go.Response[v1.DeleteOrganizationMemberResponse], error) + // GetOrganizationSettings retrieves the settings of a Organization. + GetOrganizationSettings(context.Context, *connect_go.Request[v1.GetOrganizationSettingsRequest]) (*connect_go.Response[v1.GetOrganizationSettingsResponse], error) + // UpdateOrganizationSettings updates the settings of a Organization. + UpdateOrganizationSettings(context.Context, *connect_go.Request[v1.UpdateOrganizationSettingsRequest]) (*connect_go.Response[v1.UpdateOrganizationSettingsResponse], error) +} + +// NewOrganizationServiceClient constructs a client for the gitpod.v1.OrganizationService service. +// By default, it uses the Connect protocol with the binary Protobuf Codec, asks for gzipped +// responses, and sends uncompressed requests. To use the gRPC or gRPC-Web protocols, supply the +// connect.WithGRPC() or connect.WithGRPCWeb() options. +// +// The URL supplied here should be the base URL for the Connect or gRPC server (for example, +// http://api.acme.com or https://acme.com/grpc). +func NewOrganizationServiceClient(httpClient connect_go.HTTPClient, baseURL string, opts ...connect_go.ClientOption) OrganizationServiceClient { + baseURL = strings.TrimRight(baseURL, "/") + return &organizationServiceClient{ + createOrganization: connect_go.NewClient[v1.CreateOrganizationRequest, v1.CreateOrganizationResponse]( + httpClient, + baseURL+"/gitpod.v1.OrganizationService/CreateOrganization", + opts..., + ), + getOrganization: connect_go.NewClient[v1.GetOrganizationRequest, v1.GetOrganizationResponse]( + httpClient, + baseURL+"/gitpod.v1.OrganizationService/GetOrganization", + opts..., + ), + updateOrganization: connect_go.NewClient[v1.UpdateOrganizationRequest, v1.UpdateOrganizationResponse]( + httpClient, + baseURL+"/gitpod.v1.OrganizationService/UpdateOrganization", + opts..., + ), + listOrganizations: connect_go.NewClient[v1.ListOrganizationsRequest, v1.ListOrganizationsResponse]( + httpClient, + baseURL+"/gitpod.v1.OrganizationService/ListOrganizations", + opts..., + ), + deleteOrganization: connect_go.NewClient[v1.DeleteOrganizationRequest, v1.DeleteOrganizationResponse]( + httpClient, + baseURL+"/gitpod.v1.OrganizationService/DeleteOrganization", + opts..., + ), + getOrganizationInvitation: connect_go.NewClient[v1.GetOrganizationInvitationRequest, v1.GetOrganizationInvitationResponse]( + httpClient, + baseURL+"/gitpod.v1.OrganizationService/GetOrganizationInvitation", + opts..., + ), + joinOrganization: connect_go.NewClient[v1.JoinOrganizationRequest, v1.JoinOrganizationResponse]( + httpClient, + baseURL+"/gitpod.v1.OrganizationService/JoinOrganization", + opts..., + ), + resetOrganizationInvitation: connect_go.NewClient[v1.ResetOrganizationInvitationRequest, v1.ResetOrganizationInvitationResponse]( + httpClient, + baseURL+"/gitpod.v1.OrganizationService/ResetOrganizationInvitation", + opts..., + ), + listOrganizationMembers: connect_go.NewClient[v1.ListOrganizationMembersRequest, v1.ListOrganizationMembersResponse]( + httpClient, + baseURL+"/gitpod.v1.OrganizationService/ListOrganizationMembers", + opts..., + ), + updateOrganizationMember: connect_go.NewClient[v1.UpdateOrganizationMemberRequest, v1.UpdateOrganizationMemberResponse]( + httpClient, + baseURL+"/gitpod.v1.OrganizationService/UpdateOrganizationMember", + opts..., + ), + deleteOrganizationMember: connect_go.NewClient[v1.DeleteOrganizationMemberRequest, v1.DeleteOrganizationMemberResponse]( + httpClient, + baseURL+"/gitpod.v1.OrganizationService/DeleteOrganizationMember", + opts..., + ), + getOrganizationSettings: connect_go.NewClient[v1.GetOrganizationSettingsRequest, v1.GetOrganizationSettingsResponse]( + httpClient, + baseURL+"/gitpod.v1.OrganizationService/GetOrganizationSettings", + opts..., + ), + updateOrganizationSettings: connect_go.NewClient[v1.UpdateOrganizationSettingsRequest, v1.UpdateOrganizationSettingsResponse]( + httpClient, + baseURL+"/gitpod.v1.OrganizationService/UpdateOrganizationSettings", + opts..., + ), + } +} + +// organizationServiceClient implements OrganizationServiceClient. +type organizationServiceClient struct { + createOrganization *connect_go.Client[v1.CreateOrganizationRequest, v1.CreateOrganizationResponse] + getOrganization *connect_go.Client[v1.GetOrganizationRequest, v1.GetOrganizationResponse] + updateOrganization *connect_go.Client[v1.UpdateOrganizationRequest, v1.UpdateOrganizationResponse] + listOrganizations *connect_go.Client[v1.ListOrganizationsRequest, v1.ListOrganizationsResponse] + deleteOrganization *connect_go.Client[v1.DeleteOrganizationRequest, v1.DeleteOrganizationResponse] + getOrganizationInvitation *connect_go.Client[v1.GetOrganizationInvitationRequest, v1.GetOrganizationInvitationResponse] + joinOrganization *connect_go.Client[v1.JoinOrganizationRequest, v1.JoinOrganizationResponse] + resetOrganizationInvitation *connect_go.Client[v1.ResetOrganizationInvitationRequest, v1.ResetOrganizationInvitationResponse] + listOrganizationMembers *connect_go.Client[v1.ListOrganizationMembersRequest, v1.ListOrganizationMembersResponse] + updateOrganizationMember *connect_go.Client[v1.UpdateOrganizationMemberRequest, v1.UpdateOrganizationMemberResponse] + deleteOrganizationMember *connect_go.Client[v1.DeleteOrganizationMemberRequest, v1.DeleteOrganizationMemberResponse] + getOrganizationSettings *connect_go.Client[v1.GetOrganizationSettingsRequest, v1.GetOrganizationSettingsResponse] + updateOrganizationSettings *connect_go.Client[v1.UpdateOrganizationSettingsRequest, v1.UpdateOrganizationSettingsResponse] +} + +// CreateOrganization calls gitpod.v1.OrganizationService.CreateOrganization. +func (c *organizationServiceClient) CreateOrganization(ctx context.Context, req *connect_go.Request[v1.CreateOrganizationRequest]) (*connect_go.Response[v1.CreateOrganizationResponse], error) { + return c.createOrganization.CallUnary(ctx, req) +} + +// GetOrganization calls gitpod.v1.OrganizationService.GetOrganization. +func (c *organizationServiceClient) GetOrganization(ctx context.Context, req *connect_go.Request[v1.GetOrganizationRequest]) (*connect_go.Response[v1.GetOrganizationResponse], error) { + return c.getOrganization.CallUnary(ctx, req) +} + +// UpdateOrganization calls gitpod.v1.OrganizationService.UpdateOrganization. +func (c *organizationServiceClient) UpdateOrganization(ctx context.Context, req *connect_go.Request[v1.UpdateOrganizationRequest]) (*connect_go.Response[v1.UpdateOrganizationResponse], error) { + return c.updateOrganization.CallUnary(ctx, req) +} + +// ListOrganizations calls gitpod.v1.OrganizationService.ListOrganizations. +func (c *organizationServiceClient) ListOrganizations(ctx context.Context, req *connect_go.Request[v1.ListOrganizationsRequest]) (*connect_go.Response[v1.ListOrganizationsResponse], error) { + return c.listOrganizations.CallUnary(ctx, req) +} + +// DeleteOrganization calls gitpod.v1.OrganizationService.DeleteOrganization. +func (c *organizationServiceClient) DeleteOrganization(ctx context.Context, req *connect_go.Request[v1.DeleteOrganizationRequest]) (*connect_go.Response[v1.DeleteOrganizationResponse], error) { + return c.deleteOrganization.CallUnary(ctx, req) +} + +// GetOrganizationInvitation calls gitpod.v1.OrganizationService.GetOrganizationInvitation. +func (c *organizationServiceClient) GetOrganizationInvitation(ctx context.Context, req *connect_go.Request[v1.GetOrganizationInvitationRequest]) (*connect_go.Response[v1.GetOrganizationInvitationResponse], error) { + return c.getOrganizationInvitation.CallUnary(ctx, req) +} + +// JoinOrganization calls gitpod.v1.OrganizationService.JoinOrganization. +func (c *organizationServiceClient) JoinOrganization(ctx context.Context, req *connect_go.Request[v1.JoinOrganizationRequest]) (*connect_go.Response[v1.JoinOrganizationResponse], error) { + return c.joinOrganization.CallUnary(ctx, req) +} + +// ResetOrganizationInvitation calls gitpod.v1.OrganizationService.ResetOrganizationInvitation. +func (c *organizationServiceClient) ResetOrganizationInvitation(ctx context.Context, req *connect_go.Request[v1.ResetOrganizationInvitationRequest]) (*connect_go.Response[v1.ResetOrganizationInvitationResponse], error) { + return c.resetOrganizationInvitation.CallUnary(ctx, req) +} + +// ListOrganizationMembers calls gitpod.v1.OrganizationService.ListOrganizationMembers. +func (c *organizationServiceClient) ListOrganizationMembers(ctx context.Context, req *connect_go.Request[v1.ListOrganizationMembersRequest]) (*connect_go.Response[v1.ListOrganizationMembersResponse], error) { + return c.listOrganizationMembers.CallUnary(ctx, req) +} + +// UpdateOrganizationMember calls gitpod.v1.OrganizationService.UpdateOrganizationMember. +func (c *organizationServiceClient) UpdateOrganizationMember(ctx context.Context, req *connect_go.Request[v1.UpdateOrganizationMemberRequest]) (*connect_go.Response[v1.UpdateOrganizationMemberResponse], error) { + return c.updateOrganizationMember.CallUnary(ctx, req) +} + +// DeleteOrganizationMember calls gitpod.v1.OrganizationService.DeleteOrganizationMember. +func (c *organizationServiceClient) DeleteOrganizationMember(ctx context.Context, req *connect_go.Request[v1.DeleteOrganizationMemberRequest]) (*connect_go.Response[v1.DeleteOrganizationMemberResponse], error) { + return c.deleteOrganizationMember.CallUnary(ctx, req) +} + +// GetOrganizationSettings calls gitpod.v1.OrganizationService.GetOrganizationSettings. +func (c *organizationServiceClient) GetOrganizationSettings(ctx context.Context, req *connect_go.Request[v1.GetOrganizationSettingsRequest]) (*connect_go.Response[v1.GetOrganizationSettingsResponse], error) { + return c.getOrganizationSettings.CallUnary(ctx, req) +} + +// UpdateOrganizationSettings calls gitpod.v1.OrganizationService.UpdateOrganizationSettings. +func (c *organizationServiceClient) UpdateOrganizationSettings(ctx context.Context, req *connect_go.Request[v1.UpdateOrganizationSettingsRequest]) (*connect_go.Response[v1.UpdateOrganizationSettingsResponse], error) { + return c.updateOrganizationSettings.CallUnary(ctx, req) +} + +// OrganizationServiceHandler is an implementation of the gitpod.v1.OrganizationService service. +type OrganizationServiceHandler interface { + // CreateOrganization creates a new Organization. + CreateOrganization(context.Context, *connect_go.Request[v1.CreateOrganizationRequest]) (*connect_go.Response[v1.CreateOrganizationResponse], error) + // GetOrganization retrieves a single Organization. + GetOrganization(context.Context, *connect_go.Request[v1.GetOrganizationRequest]) (*connect_go.Response[v1.GetOrganizationResponse], error) + // UpdateOrganization updates the properties of an Organization. + UpdateOrganization(context.Context, *connect_go.Request[v1.UpdateOrganizationRequest]) (*connect_go.Response[v1.UpdateOrganizationResponse], error) + // ListOrganizations lists all organization the caller has access to. + ListOrganizations(context.Context, *connect_go.Request[v1.ListOrganizationsRequest]) (*connect_go.Response[v1.ListOrganizationsResponse], error) + // DeleteOrganization deletes the specified organization. + DeleteOrganization(context.Context, *connect_go.Request[v1.DeleteOrganizationRequest]) (*connect_go.Response[v1.DeleteOrganizationResponse], error) + // GetOrganizationInvitation retrieves the invitation for a Organization. + GetOrganizationInvitation(context.Context, *connect_go.Request[v1.GetOrganizationInvitationRequest]) (*connect_go.Response[v1.GetOrganizationInvitationResponse], error) + // JoinOrganization makes the caller a OrganizationMember of the Organization. + JoinOrganization(context.Context, *connect_go.Request[v1.JoinOrganizationRequest]) (*connect_go.Response[v1.JoinOrganizationResponse], error) + // ResetOrganizationInvitation resets the invitation_id for a Organization. + ResetOrganizationInvitation(context.Context, *connect_go.Request[v1.ResetOrganizationInvitationRequest]) (*connect_go.Response[v1.ResetOrganizationInvitationResponse], error) + // ListOrganizationMembers lists the members of a Organization. + ListOrganizationMembers(context.Context, *connect_go.Request[v1.ListOrganizationMembersRequest]) (*connect_go.Response[v1.ListOrganizationMembersResponse], error) + // UpdateOrganizationMember updates organization membership properties. + UpdateOrganizationMember(context.Context, *connect_go.Request[v1.UpdateOrganizationMemberRequest]) (*connect_go.Response[v1.UpdateOrganizationMemberResponse], error) + // DeleteOrganizationMember removes a OrganizationMember from the + // Organization. + DeleteOrganizationMember(context.Context, *connect_go.Request[v1.DeleteOrganizationMemberRequest]) (*connect_go.Response[v1.DeleteOrganizationMemberResponse], error) + // GetOrganizationSettings retrieves the settings of a Organization. + GetOrganizationSettings(context.Context, *connect_go.Request[v1.GetOrganizationSettingsRequest]) (*connect_go.Response[v1.GetOrganizationSettingsResponse], error) + // UpdateOrganizationSettings updates the settings of a Organization. + UpdateOrganizationSettings(context.Context, *connect_go.Request[v1.UpdateOrganizationSettingsRequest]) (*connect_go.Response[v1.UpdateOrganizationSettingsResponse], error) +} + +// NewOrganizationServiceHandler builds an HTTP handler from the service implementation. It returns +// the path on which to mount the handler and the handler itself. +// +// By default, handlers support the Connect, gRPC, and gRPC-Web protocols with the binary Protobuf +// and JSON codecs. They also support gzip compression. +func NewOrganizationServiceHandler(svc OrganizationServiceHandler, opts ...connect_go.HandlerOption) (string, http.Handler) { + mux := http.NewServeMux() + mux.Handle("/gitpod.v1.OrganizationService/CreateOrganization", connect_go.NewUnaryHandler( + "/gitpod.v1.OrganizationService/CreateOrganization", + svc.CreateOrganization, + opts..., + )) + mux.Handle("/gitpod.v1.OrganizationService/GetOrganization", connect_go.NewUnaryHandler( + "/gitpod.v1.OrganizationService/GetOrganization", + svc.GetOrganization, + opts..., + )) + mux.Handle("/gitpod.v1.OrganizationService/UpdateOrganization", connect_go.NewUnaryHandler( + "/gitpod.v1.OrganizationService/UpdateOrganization", + svc.UpdateOrganization, + opts..., + )) + mux.Handle("/gitpod.v1.OrganizationService/ListOrganizations", connect_go.NewUnaryHandler( + "/gitpod.v1.OrganizationService/ListOrganizations", + svc.ListOrganizations, + opts..., + )) + mux.Handle("/gitpod.v1.OrganizationService/DeleteOrganization", connect_go.NewUnaryHandler( + "/gitpod.v1.OrganizationService/DeleteOrganization", + svc.DeleteOrganization, + opts..., + )) + mux.Handle("/gitpod.v1.OrganizationService/GetOrganizationInvitation", connect_go.NewUnaryHandler( + "/gitpod.v1.OrganizationService/GetOrganizationInvitation", + svc.GetOrganizationInvitation, + opts..., + )) + mux.Handle("/gitpod.v1.OrganizationService/JoinOrganization", connect_go.NewUnaryHandler( + "/gitpod.v1.OrganizationService/JoinOrganization", + svc.JoinOrganization, + opts..., + )) + mux.Handle("/gitpod.v1.OrganizationService/ResetOrganizationInvitation", connect_go.NewUnaryHandler( + "/gitpod.v1.OrganizationService/ResetOrganizationInvitation", + svc.ResetOrganizationInvitation, + opts..., + )) + mux.Handle("/gitpod.v1.OrganizationService/ListOrganizationMembers", connect_go.NewUnaryHandler( + "/gitpod.v1.OrganizationService/ListOrganizationMembers", + svc.ListOrganizationMembers, + opts..., + )) + mux.Handle("/gitpod.v1.OrganizationService/UpdateOrganizationMember", connect_go.NewUnaryHandler( + "/gitpod.v1.OrganizationService/UpdateOrganizationMember", + svc.UpdateOrganizationMember, + opts..., + )) + mux.Handle("/gitpod.v1.OrganizationService/DeleteOrganizationMember", connect_go.NewUnaryHandler( + "/gitpod.v1.OrganizationService/DeleteOrganizationMember", + svc.DeleteOrganizationMember, + opts..., + )) + mux.Handle("/gitpod.v1.OrganizationService/GetOrganizationSettings", connect_go.NewUnaryHandler( + "/gitpod.v1.OrganizationService/GetOrganizationSettings", + svc.GetOrganizationSettings, + opts..., + )) + mux.Handle("/gitpod.v1.OrganizationService/UpdateOrganizationSettings", connect_go.NewUnaryHandler( + "/gitpod.v1.OrganizationService/UpdateOrganizationSettings", + svc.UpdateOrganizationSettings, + opts..., + )) + return "/gitpod.v1.OrganizationService/", mux +} + +// UnimplementedOrganizationServiceHandler returns CodeUnimplemented from all methods. +type UnimplementedOrganizationServiceHandler struct{} + +func (UnimplementedOrganizationServiceHandler) CreateOrganization(context.Context, *connect_go.Request[v1.CreateOrganizationRequest]) (*connect_go.Response[v1.CreateOrganizationResponse], error) { + return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("gitpod.v1.OrganizationService.CreateOrganization is not implemented")) +} + +func (UnimplementedOrganizationServiceHandler) GetOrganization(context.Context, *connect_go.Request[v1.GetOrganizationRequest]) (*connect_go.Response[v1.GetOrganizationResponse], error) { + return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("gitpod.v1.OrganizationService.GetOrganization is not implemented")) +} + +func (UnimplementedOrganizationServiceHandler) UpdateOrganization(context.Context, *connect_go.Request[v1.UpdateOrganizationRequest]) (*connect_go.Response[v1.UpdateOrganizationResponse], error) { + return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("gitpod.v1.OrganizationService.UpdateOrganization is not implemented")) +} + +func (UnimplementedOrganizationServiceHandler) ListOrganizations(context.Context, *connect_go.Request[v1.ListOrganizationsRequest]) (*connect_go.Response[v1.ListOrganizationsResponse], error) { + return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("gitpod.v1.OrganizationService.ListOrganizations is not implemented")) +} + +func (UnimplementedOrganizationServiceHandler) DeleteOrganization(context.Context, *connect_go.Request[v1.DeleteOrganizationRequest]) (*connect_go.Response[v1.DeleteOrganizationResponse], error) { + return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("gitpod.v1.OrganizationService.DeleteOrganization is not implemented")) +} + +func (UnimplementedOrganizationServiceHandler) GetOrganizationInvitation(context.Context, *connect_go.Request[v1.GetOrganizationInvitationRequest]) (*connect_go.Response[v1.GetOrganizationInvitationResponse], error) { + return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("gitpod.v1.OrganizationService.GetOrganizationInvitation is not implemented")) +} + +func (UnimplementedOrganizationServiceHandler) JoinOrganization(context.Context, *connect_go.Request[v1.JoinOrganizationRequest]) (*connect_go.Response[v1.JoinOrganizationResponse], error) { + return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("gitpod.v1.OrganizationService.JoinOrganization is not implemented")) +} + +func (UnimplementedOrganizationServiceHandler) ResetOrganizationInvitation(context.Context, *connect_go.Request[v1.ResetOrganizationInvitationRequest]) (*connect_go.Response[v1.ResetOrganizationInvitationResponse], error) { + return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("gitpod.v1.OrganizationService.ResetOrganizationInvitation is not implemented")) +} + +func (UnimplementedOrganizationServiceHandler) ListOrganizationMembers(context.Context, *connect_go.Request[v1.ListOrganizationMembersRequest]) (*connect_go.Response[v1.ListOrganizationMembersResponse], error) { + return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("gitpod.v1.OrganizationService.ListOrganizationMembers is not implemented")) +} + +func (UnimplementedOrganizationServiceHandler) UpdateOrganizationMember(context.Context, *connect_go.Request[v1.UpdateOrganizationMemberRequest]) (*connect_go.Response[v1.UpdateOrganizationMemberResponse], error) { + return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("gitpod.v1.OrganizationService.UpdateOrganizationMember is not implemented")) +} + +func (UnimplementedOrganizationServiceHandler) DeleteOrganizationMember(context.Context, *connect_go.Request[v1.DeleteOrganizationMemberRequest]) (*connect_go.Response[v1.DeleteOrganizationMemberResponse], error) { + return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("gitpod.v1.OrganizationService.DeleteOrganizationMember is not implemented")) +} + +func (UnimplementedOrganizationServiceHandler) GetOrganizationSettings(context.Context, *connect_go.Request[v1.GetOrganizationSettingsRequest]) (*connect_go.Response[v1.GetOrganizationSettingsResponse], error) { + return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("gitpod.v1.OrganizationService.GetOrganizationSettings is not implemented")) +} + +func (UnimplementedOrganizationServiceHandler) UpdateOrganizationSettings(context.Context, *connect_go.Request[v1.UpdateOrganizationSettingsRequest]) (*connect_go.Response[v1.UpdateOrganizationSettingsResponse], error) { + return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("gitpod.v1.OrganizationService.UpdateOrganizationSettings is not implemented")) +} diff --git a/components/public-api/go/experimental/v2/v2connect/organization.proxy.connect.go b/components/public-api/go/v1/v1connect/organization.proxy.connect.go similarity index 69% rename from components/public-api/go/experimental/v2/v2connect/organization.proxy.connect.go rename to components/public-api/go/v1/v1connect/organization.proxy.connect.go index 6bcc43a3f373fe..9627bfc4ebbf6e 100644 --- a/components/public-api/go/experimental/v2/v2connect/organization.proxy.connect.go +++ b/components/public-api/go/v1/v1connect/organization.proxy.connect.go @@ -4,22 +4,22 @@ // Code generated by protoc-proxy-gen. DO NOT EDIT. -package v2connect +package v1connect import ( context "context" connect_go "github.com/bufbuild/connect-go" - v2 "github.com/gitpod-io/gitpod/components/public-api/go/experimental/v2" + v1 "github.com/gitpod-io/gitpod/components/public-api/go/v1" ) var _ OrganizationServiceHandler = (*ProxyOrganizationServiceHandler)(nil) type ProxyOrganizationServiceHandler struct { - Client v2.OrganizationServiceClient + Client v1.OrganizationServiceClient UnimplementedOrganizationServiceHandler } -func (s *ProxyOrganizationServiceHandler) CreateOrganization(ctx context.Context, req *connect_go.Request[v2.CreateOrganizationRequest]) (*connect_go.Response[v2.CreateOrganizationResponse], error) { +func (s *ProxyOrganizationServiceHandler) CreateOrganization(ctx context.Context, req *connect_go.Request[v1.CreateOrganizationRequest]) (*connect_go.Response[v1.CreateOrganizationResponse], error) { resp, err := s.Client.CreateOrganization(ctx, req.Msg) if err != nil { // TODO(milan): Convert to correct status code @@ -29,7 +29,7 @@ func (s *ProxyOrganizationServiceHandler) CreateOrganization(ctx context.Context return connect_go.NewResponse(resp), nil } -func (s *ProxyOrganizationServiceHandler) GetOrganization(ctx context.Context, req *connect_go.Request[v2.GetOrganizationRequest]) (*connect_go.Response[v2.GetOrganizationResponse], error) { +func (s *ProxyOrganizationServiceHandler) GetOrganization(ctx context.Context, req *connect_go.Request[v1.GetOrganizationRequest]) (*connect_go.Response[v1.GetOrganizationResponse], error) { resp, err := s.Client.GetOrganization(ctx, req.Msg) if err != nil { // TODO(milan): Convert to correct status code @@ -39,7 +39,7 @@ func (s *ProxyOrganizationServiceHandler) GetOrganization(ctx context.Context, r return connect_go.NewResponse(resp), nil } -func (s *ProxyOrganizationServiceHandler) UpdateOrganization(ctx context.Context, req *connect_go.Request[v2.UpdateOrganizationRequest]) (*connect_go.Response[v2.UpdateOrganizationResponse], error) { +func (s *ProxyOrganizationServiceHandler) UpdateOrganization(ctx context.Context, req *connect_go.Request[v1.UpdateOrganizationRequest]) (*connect_go.Response[v1.UpdateOrganizationResponse], error) { resp, err := s.Client.UpdateOrganization(ctx, req.Msg) if err != nil { // TODO(milan): Convert to correct status code @@ -49,7 +49,7 @@ func (s *ProxyOrganizationServiceHandler) UpdateOrganization(ctx context.Context return connect_go.NewResponse(resp), nil } -func (s *ProxyOrganizationServiceHandler) ListOrganizations(ctx context.Context, req *connect_go.Request[v2.ListOrganizationsRequest]) (*connect_go.Response[v2.ListOrganizationsResponse], error) { +func (s *ProxyOrganizationServiceHandler) ListOrganizations(ctx context.Context, req *connect_go.Request[v1.ListOrganizationsRequest]) (*connect_go.Response[v1.ListOrganizationsResponse], error) { resp, err := s.Client.ListOrganizations(ctx, req.Msg) if err != nil { // TODO(milan): Convert to correct status code @@ -59,7 +59,7 @@ func (s *ProxyOrganizationServiceHandler) ListOrganizations(ctx context.Context, return connect_go.NewResponse(resp), nil } -func (s *ProxyOrganizationServiceHandler) DeleteOrganization(ctx context.Context, req *connect_go.Request[v2.DeleteOrganizationRequest]) (*connect_go.Response[v2.DeleteOrganizationResponse], error) { +func (s *ProxyOrganizationServiceHandler) DeleteOrganization(ctx context.Context, req *connect_go.Request[v1.DeleteOrganizationRequest]) (*connect_go.Response[v1.DeleteOrganizationResponse], error) { resp, err := s.Client.DeleteOrganization(ctx, req.Msg) if err != nil { // TODO(milan): Convert to correct status code @@ -69,7 +69,7 @@ func (s *ProxyOrganizationServiceHandler) DeleteOrganization(ctx context.Context return connect_go.NewResponse(resp), nil } -func (s *ProxyOrganizationServiceHandler) GetOrganizationInvitation(ctx context.Context, req *connect_go.Request[v2.GetOrganizationInvitationRequest]) (*connect_go.Response[v2.GetOrganizationInvitationResponse], error) { +func (s *ProxyOrganizationServiceHandler) GetOrganizationInvitation(ctx context.Context, req *connect_go.Request[v1.GetOrganizationInvitationRequest]) (*connect_go.Response[v1.GetOrganizationInvitationResponse], error) { resp, err := s.Client.GetOrganizationInvitation(ctx, req.Msg) if err != nil { // TODO(milan): Convert to correct status code @@ -79,7 +79,7 @@ func (s *ProxyOrganizationServiceHandler) GetOrganizationInvitation(ctx context. return connect_go.NewResponse(resp), nil } -func (s *ProxyOrganizationServiceHandler) JoinOrganization(ctx context.Context, req *connect_go.Request[v2.JoinOrganizationRequest]) (*connect_go.Response[v2.JoinOrganizationResponse], error) { +func (s *ProxyOrganizationServiceHandler) JoinOrganization(ctx context.Context, req *connect_go.Request[v1.JoinOrganizationRequest]) (*connect_go.Response[v1.JoinOrganizationResponse], error) { resp, err := s.Client.JoinOrganization(ctx, req.Msg) if err != nil { // TODO(milan): Convert to correct status code @@ -89,7 +89,7 @@ func (s *ProxyOrganizationServiceHandler) JoinOrganization(ctx context.Context, return connect_go.NewResponse(resp), nil } -func (s *ProxyOrganizationServiceHandler) ResetOrganizationInvitation(ctx context.Context, req *connect_go.Request[v2.ResetOrganizationInvitationRequest]) (*connect_go.Response[v2.ResetOrganizationInvitationResponse], error) { +func (s *ProxyOrganizationServiceHandler) ResetOrganizationInvitation(ctx context.Context, req *connect_go.Request[v1.ResetOrganizationInvitationRequest]) (*connect_go.Response[v1.ResetOrganizationInvitationResponse], error) { resp, err := s.Client.ResetOrganizationInvitation(ctx, req.Msg) if err != nil { // TODO(milan): Convert to correct status code @@ -99,7 +99,7 @@ func (s *ProxyOrganizationServiceHandler) ResetOrganizationInvitation(ctx contex return connect_go.NewResponse(resp), nil } -func (s *ProxyOrganizationServiceHandler) ListOrganizationMembers(ctx context.Context, req *connect_go.Request[v2.ListOrganizationMembersRequest]) (*connect_go.Response[v2.ListOrganizationMembersResponse], error) { +func (s *ProxyOrganizationServiceHandler) ListOrganizationMembers(ctx context.Context, req *connect_go.Request[v1.ListOrganizationMembersRequest]) (*connect_go.Response[v1.ListOrganizationMembersResponse], error) { resp, err := s.Client.ListOrganizationMembers(ctx, req.Msg) if err != nil { // TODO(milan): Convert to correct status code @@ -109,7 +109,7 @@ func (s *ProxyOrganizationServiceHandler) ListOrganizationMembers(ctx context.Co return connect_go.NewResponse(resp), nil } -func (s *ProxyOrganizationServiceHandler) UpdateOrganizationMember(ctx context.Context, req *connect_go.Request[v2.UpdateOrganizationMemberRequest]) (*connect_go.Response[v2.UpdateOrganizationMemberResponse], error) { +func (s *ProxyOrganizationServiceHandler) UpdateOrganizationMember(ctx context.Context, req *connect_go.Request[v1.UpdateOrganizationMemberRequest]) (*connect_go.Response[v1.UpdateOrganizationMemberResponse], error) { resp, err := s.Client.UpdateOrganizationMember(ctx, req.Msg) if err != nil { // TODO(milan): Convert to correct status code @@ -119,7 +119,7 @@ func (s *ProxyOrganizationServiceHandler) UpdateOrganizationMember(ctx context.C return connect_go.NewResponse(resp), nil } -func (s *ProxyOrganizationServiceHandler) DeleteOrganizationMember(ctx context.Context, req *connect_go.Request[v2.DeleteOrganizationMemberRequest]) (*connect_go.Response[v2.DeleteOrganizationMemberResponse], error) { +func (s *ProxyOrganizationServiceHandler) DeleteOrganizationMember(ctx context.Context, req *connect_go.Request[v1.DeleteOrganizationMemberRequest]) (*connect_go.Response[v1.DeleteOrganizationMemberResponse], error) { resp, err := s.Client.DeleteOrganizationMember(ctx, req.Msg) if err != nil { // TODO(milan): Convert to correct status code @@ -129,7 +129,7 @@ func (s *ProxyOrganizationServiceHandler) DeleteOrganizationMember(ctx context.C return connect_go.NewResponse(resp), nil } -func (s *ProxyOrganizationServiceHandler) GetOrganizationSettings(ctx context.Context, req *connect_go.Request[v2.GetOrganizationSettingsRequest]) (*connect_go.Response[v2.GetOrganizationSettingsResponse], error) { +func (s *ProxyOrganizationServiceHandler) GetOrganizationSettings(ctx context.Context, req *connect_go.Request[v1.GetOrganizationSettingsRequest]) (*connect_go.Response[v1.GetOrganizationSettingsResponse], error) { resp, err := s.Client.GetOrganizationSettings(ctx, req.Msg) if err != nil { // TODO(milan): Convert to correct status code @@ -139,7 +139,7 @@ func (s *ProxyOrganizationServiceHandler) GetOrganizationSettings(ctx context.Co return connect_go.NewResponse(resp), nil } -func (s *ProxyOrganizationServiceHandler) UpdateOrganizationSettings(ctx context.Context, req *connect_go.Request[v2.UpdateOrganizationSettingsRequest]) (*connect_go.Response[v2.UpdateOrganizationSettingsResponse], error) { +func (s *ProxyOrganizationServiceHandler) UpdateOrganizationSettings(ctx context.Context, req *connect_go.Request[v1.UpdateOrganizationSettingsRequest]) (*connect_go.Response[v1.UpdateOrganizationSettingsResponse], error) { resp, err := s.Client.UpdateOrganizationSettings(ctx, req.Msg) if err != nil { // TODO(milan): Convert to correct status code diff --git a/components/public-api/go/experimental/v2/v2connect/workspace.connect.go b/components/public-api/go/v1/v1connect/workspace.connect.go similarity index 62% rename from components/public-api/go/experimental/v2/v2connect/workspace.connect.go rename to components/public-api/go/v1/v1connect/workspace.connect.go index 99088f06a4518f..8d08e6ef2fe707 100644 --- a/components/public-api/go/experimental/v2/v2connect/workspace.connect.go +++ b/components/public-api/go/v1/v1connect/workspace.connect.go @@ -4,15 +4,15 @@ // Code generated by protoc-gen-connect-go. DO NOT EDIT. // -// Source: gitpod/experimental/v2/workspace.proto +// Source: gitpod/v1/workspace.proto -package v2connect +package v1connect import ( context "context" errors "errors" connect_go "github.com/bufbuild/connect-go" - v2 "github.com/gitpod-io/gitpod/components/public-api/go/experimental/v2" + v1 "github.com/gitpod-io/gitpod/components/public-api/go/v1" http "net/http" strings "strings" ) @@ -26,31 +26,31 @@ const _ = connect_go.IsAtLeastVersion0_1_0 const ( // WorkspaceServiceName is the fully-qualified name of the WorkspaceService service. - WorkspaceServiceName = "gitpod.experimental.v2.WorkspaceService" + WorkspaceServiceName = "gitpod.v1.WorkspaceService" ) -// WorkspaceServiceClient is a client for the gitpod.experimental.v2.WorkspaceService service. +// WorkspaceServiceClient is a client for the gitpod.v1.WorkspaceService service. type WorkspaceServiceClient interface { // GetWorkspace returns a single workspace. // // +return NOT_FOUND User does not have access to a workspace with the given // ID +return NOT_FOUND Workspace does not exist - GetWorkspace(context.Context, *connect_go.Request[v2.GetWorkspaceRequest]) (*connect_go.Response[v2.GetWorkspaceResponse], error) + GetWorkspace(context.Context, *connect_go.Request[v1.GetWorkspaceRequest]) (*connect_go.Response[v1.GetWorkspaceResponse], error) } -// NewWorkspaceServiceClient constructs a client for the gitpod.experimental.v2.WorkspaceService -// service. By default, it uses the Connect protocol with the binary Protobuf Codec, asks for -// gzipped responses, and sends uncompressed requests. To use the gRPC or gRPC-Web protocols, supply -// the connect.WithGRPC() or connect.WithGRPCWeb() options. +// NewWorkspaceServiceClient constructs a client for the gitpod.v1.WorkspaceService service. By +// default, it uses the Connect protocol with the binary Protobuf Codec, asks for gzipped responses, +// and sends uncompressed requests. To use the gRPC or gRPC-Web protocols, supply the +// connect.WithGRPC() or connect.WithGRPCWeb() options. // // The URL supplied here should be the base URL for the Connect or gRPC server (for example, // http://api.acme.com or https://acme.com/grpc). func NewWorkspaceServiceClient(httpClient connect_go.HTTPClient, baseURL string, opts ...connect_go.ClientOption) WorkspaceServiceClient { baseURL = strings.TrimRight(baseURL, "/") return &workspaceServiceClient{ - getWorkspace: connect_go.NewClient[v2.GetWorkspaceRequest, v2.GetWorkspaceResponse]( + getWorkspace: connect_go.NewClient[v1.GetWorkspaceRequest, v1.GetWorkspaceResponse]( httpClient, - baseURL+"/gitpod.experimental.v2.WorkspaceService/GetWorkspace", + baseURL+"/gitpod.v1.WorkspaceService/GetWorkspace", opts..., ), } @@ -58,22 +58,21 @@ func NewWorkspaceServiceClient(httpClient connect_go.HTTPClient, baseURL string, // workspaceServiceClient implements WorkspaceServiceClient. type workspaceServiceClient struct { - getWorkspace *connect_go.Client[v2.GetWorkspaceRequest, v2.GetWorkspaceResponse] + getWorkspace *connect_go.Client[v1.GetWorkspaceRequest, v1.GetWorkspaceResponse] } -// GetWorkspace calls gitpod.experimental.v2.WorkspaceService.GetWorkspace. -func (c *workspaceServiceClient) GetWorkspace(ctx context.Context, req *connect_go.Request[v2.GetWorkspaceRequest]) (*connect_go.Response[v2.GetWorkspaceResponse], error) { +// GetWorkspace calls gitpod.v1.WorkspaceService.GetWorkspace. +func (c *workspaceServiceClient) GetWorkspace(ctx context.Context, req *connect_go.Request[v1.GetWorkspaceRequest]) (*connect_go.Response[v1.GetWorkspaceResponse], error) { return c.getWorkspace.CallUnary(ctx, req) } -// WorkspaceServiceHandler is an implementation of the gitpod.experimental.v2.WorkspaceService -// service. +// WorkspaceServiceHandler is an implementation of the gitpod.v1.WorkspaceService service. type WorkspaceServiceHandler interface { // GetWorkspace returns a single workspace. // // +return NOT_FOUND User does not have access to a workspace with the given // ID +return NOT_FOUND Workspace does not exist - GetWorkspace(context.Context, *connect_go.Request[v2.GetWorkspaceRequest]) (*connect_go.Response[v2.GetWorkspaceResponse], error) + GetWorkspace(context.Context, *connect_go.Request[v1.GetWorkspaceRequest]) (*connect_go.Response[v1.GetWorkspaceResponse], error) } // NewWorkspaceServiceHandler builds an HTTP handler from the service implementation. It returns the @@ -83,17 +82,17 @@ type WorkspaceServiceHandler interface { // and JSON codecs. They also support gzip compression. func NewWorkspaceServiceHandler(svc WorkspaceServiceHandler, opts ...connect_go.HandlerOption) (string, http.Handler) { mux := http.NewServeMux() - mux.Handle("/gitpod.experimental.v2.WorkspaceService/GetWorkspace", connect_go.NewUnaryHandler( - "/gitpod.experimental.v2.WorkspaceService/GetWorkspace", + mux.Handle("/gitpod.v1.WorkspaceService/GetWorkspace", connect_go.NewUnaryHandler( + "/gitpod.v1.WorkspaceService/GetWorkspace", svc.GetWorkspace, opts..., )) - return "/gitpod.experimental.v2.WorkspaceService/", mux + return "/gitpod.v1.WorkspaceService/", mux } // UnimplementedWorkspaceServiceHandler returns CodeUnimplemented from all methods. type UnimplementedWorkspaceServiceHandler struct{} -func (UnimplementedWorkspaceServiceHandler) GetWorkspace(context.Context, *connect_go.Request[v2.GetWorkspaceRequest]) (*connect_go.Response[v2.GetWorkspaceResponse], error) { - return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("gitpod.experimental.v2.WorkspaceService.GetWorkspace is not implemented")) +func (UnimplementedWorkspaceServiceHandler) GetWorkspace(context.Context, *connect_go.Request[v1.GetWorkspaceRequest]) (*connect_go.Response[v1.GetWorkspaceResponse], error) { + return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("gitpod.v1.WorkspaceService.GetWorkspace is not implemented")) } diff --git a/components/public-api/go/experimental/v2/v2connect/workspace.proxy.connect.go b/components/public-api/go/v1/v1connect/workspace.proxy.connect.go similarity index 74% rename from components/public-api/go/experimental/v2/v2connect/workspace.proxy.connect.go rename to components/public-api/go/v1/v1connect/workspace.proxy.connect.go index d708438ab96498..4ddcbccc800e4a 100644 --- a/components/public-api/go/experimental/v2/v2connect/workspace.proxy.connect.go +++ b/components/public-api/go/v1/v1connect/workspace.proxy.connect.go @@ -4,22 +4,22 @@ // Code generated by protoc-proxy-gen. DO NOT EDIT. -package v2connect +package v1connect import ( context "context" connect_go "github.com/bufbuild/connect-go" - v2 "github.com/gitpod-io/gitpod/components/public-api/go/experimental/v2" + v1 "github.com/gitpod-io/gitpod/components/public-api/go/v1" ) var _ WorkspaceServiceHandler = (*ProxyWorkspaceServiceHandler)(nil) type ProxyWorkspaceServiceHandler struct { - Client v2.WorkspaceServiceClient + Client v1.WorkspaceServiceClient UnimplementedWorkspaceServiceHandler } -func (s *ProxyWorkspaceServiceHandler) GetWorkspace(ctx context.Context, req *connect_go.Request[v2.GetWorkspaceRequest]) (*connect_go.Response[v2.GetWorkspaceResponse], error) { +func (s *ProxyWorkspaceServiceHandler) GetWorkspace(ctx context.Context, req *connect_go.Request[v1.GetWorkspaceRequest]) (*connect_go.Response[v1.GetWorkspaceResponse], error) { resp, err := s.Client.GetWorkspace(ctx, req.Msg) if err != nil { // TODO(milan): Convert to correct status code diff --git a/components/public-api/go/experimental/v2/workspace.pb.go b/components/public-api/go/v1/workspace.pb.go similarity index 55% rename from components/public-api/go/experimental/v2/workspace.pb.go rename to components/public-api/go/v1/workspace.pb.go index 6438a28b6d809e..c7f211182213a5 100644 --- a/components/public-api/go/experimental/v2/workspace.pb.go +++ b/components/public-api/go/v1/workspace.pb.go @@ -6,9 +6,9 @@ // versions: // protoc-gen-go v1.28.1 // protoc (unknown) -// source: gitpod/experimental/v2/workspace.proto +// source: gitpod/v1/workspace.proto -package v2 +package v1 import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -63,11 +63,11 @@ func (x AdmissionLevel) String() string { } func (AdmissionLevel) Descriptor() protoreflect.EnumDescriptor { - return file_gitpod_experimental_v2_workspace_proto_enumTypes[0].Descriptor() + return file_gitpod_v1_workspace_proto_enumTypes[0].Descriptor() } func (AdmissionLevel) Type() protoreflect.EnumType { - return &file_gitpod_experimental_v2_workspace_proto_enumTypes[0] + return &file_gitpod_v1_workspace_proto_enumTypes[0] } func (x AdmissionLevel) Number() protoreflect.EnumNumber { @@ -76,7 +76,7 @@ func (x AdmissionLevel) Number() protoreflect.EnumNumber { // Deprecated: Use AdmissionLevel.Descriptor instead. func (AdmissionLevel) EnumDescriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_workspace_proto_rawDescGZIP(), []int{0} + return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{0} } // Policy defines the accssbility policy of a workspace port is guarded by an @@ -118,11 +118,11 @@ func (x WorkspacePort_Policy) String() string { } func (WorkspacePort_Policy) Descriptor() protoreflect.EnumDescriptor { - return file_gitpod_experimental_v2_workspace_proto_enumTypes[1].Descriptor() + return file_gitpod_v1_workspace_proto_enumTypes[1].Descriptor() } func (WorkspacePort_Policy) Type() protoreflect.EnumType { - return &file_gitpod_experimental_v2_workspace_proto_enumTypes[1] + return &file_gitpod_v1_workspace_proto_enumTypes[1] } func (x WorkspacePort_Policy) Number() protoreflect.EnumNumber { @@ -131,7 +131,7 @@ func (x WorkspacePort_Policy) Number() protoreflect.EnumNumber { // Deprecated: Use WorkspacePort_Policy.Descriptor instead. func (WorkspacePort_Policy) EnumDescriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_workspace_proto_rawDescGZIP(), []int{5, 0} + return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{5, 0} } // Protocol defines the backend protocol of port @@ -170,11 +170,11 @@ func (x WorkspacePort_Protocol) String() string { } func (WorkspacePort_Protocol) Descriptor() protoreflect.EnumDescriptor { - return file_gitpod_experimental_v2_workspace_proto_enumTypes[2].Descriptor() + return file_gitpod_v1_workspace_proto_enumTypes[2].Descriptor() } func (WorkspacePort_Protocol) Type() protoreflect.EnumType { - return &file_gitpod_experimental_v2_workspace_proto_enumTypes[2] + return &file_gitpod_v1_workspace_proto_enumTypes[2] } func (x WorkspacePort_Protocol) Number() protoreflect.EnumNumber { @@ -183,7 +183,7 @@ func (x WorkspacePort_Protocol) Number() protoreflect.EnumNumber { // Deprecated: Use WorkspacePort_Protocol.Descriptor instead. func (WorkspacePort_Protocol) EnumDescriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_workspace_proto_rawDescGZIP(), []int{5, 1} + return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{5, 1} } type WorkspacePhase_Phase int32 @@ -267,11 +267,11 @@ func (x WorkspacePhase_Phase) String() string { } func (WorkspacePhase_Phase) Descriptor() protoreflect.EnumDescriptor { - return file_gitpod_experimental_v2_workspace_proto_enumTypes[3].Descriptor() + return file_gitpod_v1_workspace_proto_enumTypes[3].Descriptor() } func (WorkspacePhase_Phase) Type() protoreflect.EnumType { - return &file_gitpod_experimental_v2_workspace_proto_enumTypes[3] + return &file_gitpod_v1_workspace_proto_enumTypes[3] } func (x WorkspacePhase_Phase) Number() protoreflect.EnumNumber { @@ -280,7 +280,7 @@ func (x WorkspacePhase_Phase) Number() protoreflect.EnumNumber { // Deprecated: Use WorkspacePhase_Phase.Descriptor instead. func (WorkspacePhase_Phase) EnumDescriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_workspace_proto_rawDescGZIP(), []int{7, 0} + return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{7, 0} } type GetWorkspaceRequest struct { @@ -294,7 +294,7 @@ type GetWorkspaceRequest struct { func (x *GetWorkspaceRequest) Reset() { *x = GetWorkspaceRequest{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v2_workspace_proto_msgTypes[0] + mi := &file_gitpod_v1_workspace_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -307,7 +307,7 @@ func (x *GetWorkspaceRequest) String() string { func (*GetWorkspaceRequest) ProtoMessage() {} func (x *GetWorkspaceRequest) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v2_workspace_proto_msgTypes[0] + mi := &file_gitpod_v1_workspace_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -320,7 +320,7 @@ func (x *GetWorkspaceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetWorkspaceRequest.ProtoReflect.Descriptor instead. func (*GetWorkspaceRequest) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_workspace_proto_rawDescGZIP(), []int{0} + return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{0} } func (x *GetWorkspaceRequest) GetId() string { @@ -341,7 +341,7 @@ type GetWorkspaceResponse struct { func (x *GetWorkspaceResponse) Reset() { *x = GetWorkspaceResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v2_workspace_proto_msgTypes[1] + mi := &file_gitpod_v1_workspace_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -354,7 +354,7 @@ func (x *GetWorkspaceResponse) String() string { func (*GetWorkspaceResponse) ProtoMessage() {} func (x *GetWorkspaceResponse) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v2_workspace_proto_msgTypes[1] + mi := &file_gitpod_v1_workspace_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -367,7 +367,7 @@ func (x *GetWorkspaceResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetWorkspaceResponse.ProtoReflect.Descriptor instead. func (*GetWorkspaceResponse) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_workspace_proto_rawDescGZIP(), []int{1} + return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{1} } func (x *GetWorkspaceResponse) GetItem() *Workspace { @@ -426,7 +426,7 @@ type Workspace struct { func (x *Workspace) Reset() { *x = Workspace{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v2_workspace_proto_msgTypes[2] + mi := &file_gitpod_v1_workspace_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -439,7 +439,7 @@ func (x *Workspace) String() string { func (*Workspace) ProtoMessage() {} func (x *Workspace) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v2_workspace_proto_msgTypes[2] + mi := &file_gitpod_v1_workspace_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -452,7 +452,7 @@ func (x *Workspace) ProtoReflect() protoreflect.Message { // Deprecated: Use Workspace.ProtoReflect.Descriptor instead. func (*Workspace) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_workspace_proto_rawDescGZIP(), []int{2} + return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{2} } func (x *Workspace) GetId() string { @@ -561,7 +561,7 @@ type WorkspaceStatus struct { // ports lists the network ports currently available/known of this workspace Ports []*WorkspacePort `protobuf:"bytes,5,rep,name=ports,proto3" json:"ports,omitempty"` // Admission describes who can access a workspace instance and its ports. - Admission AdmissionLevel `protobuf:"varint,6,opt,name=admission,proto3,enum=gitpod.experimental.v2.AdmissionLevel" json:"admission,omitempty"` + Admission AdmissionLevel `protobuf:"varint,6,opt,name=admission,proto3,enum=gitpod.v1.AdmissionLevel" json:"admission,omitempty"` // Instance ID is the unique identifier of the workspace instance InstanceId string `protobuf:"bytes,7,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"` // Conditions contains observations of the workspace's current phase. @@ -571,7 +571,7 @@ type WorkspaceStatus struct { func (x *WorkspaceStatus) Reset() { *x = WorkspaceStatus{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v2_workspace_proto_msgTypes[3] + mi := &file_gitpod_v1_workspace_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -584,7 +584,7 @@ func (x *WorkspaceStatus) String() string { func (*WorkspaceStatus) ProtoMessage() {} func (x *WorkspaceStatus) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v2_workspace_proto_msgTypes[3] + mi := &file_gitpod_v1_workspace_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -597,7 +597,7 @@ func (x *WorkspaceStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkspaceStatus.ProtoReflect.Descriptor instead. func (*WorkspaceStatus) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_workspace_proto_rawDescGZIP(), []int{3} + return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{3} } func (x *WorkspaceStatus) GetPhase() *WorkspacePhase { @@ -672,7 +672,7 @@ type WorkspaceConditions struct { func (x *WorkspaceConditions) Reset() { *x = WorkspaceConditions{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v2_workspace_proto_msgTypes[4] + mi := &file_gitpod_v1_workspace_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -685,7 +685,7 @@ func (x *WorkspaceConditions) String() string { func (*WorkspaceConditions) ProtoMessage() {} func (x *WorkspaceConditions) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v2_workspace_proto_msgTypes[4] + mi := &file_gitpod_v1_workspace_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -698,7 +698,7 @@ func (x *WorkspaceConditions) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkspaceConditions.ProtoReflect.Descriptor instead. func (*WorkspaceConditions) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_workspace_proto_rawDescGZIP(), []int{4} + return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{4} } func (x *WorkspaceConditions) GetFailed() string { @@ -723,17 +723,17 @@ type WorkspacePort struct { // port number Port uint64 `protobuf:"varint,1,opt,name=port,proto3" json:"port,omitempty"` // policy of this port - Policy WorkspacePort_Policy `protobuf:"varint,2,opt,name=policy,proto3,enum=gitpod.experimental.v2.WorkspacePort_Policy" json:"policy,omitempty"` + Policy WorkspacePort_Policy `protobuf:"varint,2,opt,name=policy,proto3,enum=gitpod.v1.WorkspacePort_Policy" json:"policy,omitempty"` // url that can be used to access the port Url string `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty"` // backend protocol of this port - Protocol WorkspacePort_Protocol `protobuf:"varint,4,opt,name=protocol,proto3,enum=gitpod.experimental.v2.WorkspacePort_Protocol" json:"protocol,omitempty"` + Protocol WorkspacePort_Protocol `protobuf:"varint,4,opt,name=protocol,proto3,enum=gitpod.v1.WorkspacePort_Protocol" json:"protocol,omitempty"` } func (x *WorkspacePort) Reset() { *x = WorkspacePort{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v2_workspace_proto_msgTypes[5] + mi := &file_gitpod_v1_workspace_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -746,7 +746,7 @@ func (x *WorkspacePort) String() string { func (*WorkspacePort) ProtoMessage() {} func (x *WorkspacePort) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v2_workspace_proto_msgTypes[5] + mi := &file_gitpod_v1_workspace_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -759,7 +759,7 @@ func (x *WorkspacePort) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkspacePort.ProtoReflect.Descriptor instead. func (*WorkspacePort) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_workspace_proto_rawDescGZIP(), []int{5} + return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{5} } func (x *WorkspacePort) GetPort() uint64 { @@ -821,7 +821,7 @@ type WorkspaceGitStatus struct { func (x *WorkspaceGitStatus) Reset() { *x = WorkspaceGitStatus{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v2_workspace_proto_msgTypes[6] + mi := &file_gitpod_v1_workspace_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -834,7 +834,7 @@ func (x *WorkspaceGitStatus) String() string { func (*WorkspaceGitStatus) ProtoMessage() {} func (x *WorkspaceGitStatus) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v2_workspace_proto_msgTypes[6] + mi := &file_gitpod_v1_workspace_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -847,7 +847,7 @@ func (x *WorkspaceGitStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkspaceGitStatus.ProtoReflect.Descriptor instead. func (*WorkspaceGitStatus) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_workspace_proto_rawDescGZIP(), []int{6} + return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{6} } func (x *WorkspaceGitStatus) GetCloneUrl() string { @@ -918,14 +918,14 @@ type WorkspacePhase struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name WorkspacePhase_Phase `protobuf:"varint,1,opt,name=name,proto3,enum=gitpod.experimental.v2.WorkspacePhase_Phase" json:"name,omitempty"` + Name WorkspacePhase_Phase `protobuf:"varint,1,opt,name=name,proto3,enum=gitpod.v1.WorkspacePhase_Phase" json:"name,omitempty"` LastTransitionTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=last_transition_time,json=lastTransitionTime,proto3" json:"last_transition_time,omitempty"` } func (x *WorkspacePhase) Reset() { *x = WorkspacePhase{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v2_workspace_proto_msgTypes[7] + mi := &file_gitpod_v1_workspace_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -938,7 +938,7 @@ func (x *WorkspacePhase) String() string { func (*WorkspacePhase) ProtoMessage() {} func (x *WorkspacePhase) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v2_workspace_proto_msgTypes[7] + mi := &file_gitpod_v1_workspace_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -951,7 +951,7 @@ func (x *WorkspacePhase) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkspacePhase.ProtoReflect.Descriptor instead. func (*WorkspacePhase) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_workspace_proto_rawDescGZIP(), []int{7} + return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{7} } func (x *WorkspacePhase) GetName() WorkspacePhase_Phase { @@ -980,7 +980,7 @@ type EditorReference struct { func (x *EditorReference) Reset() { *x = EditorReference{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v2_workspace_proto_msgTypes[8] + mi := &file_gitpod_v1_workspace_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -993,7 +993,7 @@ func (x *EditorReference) String() string { func (*EditorReference) ProtoMessage() {} func (x *EditorReference) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v2_workspace_proto_msgTypes[8] + mi := &file_gitpod_v1_workspace_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1006,7 +1006,7 @@ func (x *EditorReference) ProtoReflect() protoreflect.Message { // Deprecated: Use EditorReference.ProtoReflect.Descriptor instead. func (*EditorReference) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_workspace_proto_rawDescGZIP(), []int{8} + return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{8} } func (x *EditorReference) GetName() string { @@ -1035,7 +1035,7 @@ type WorkspaceEnvironmentVariable struct { func (x *WorkspaceEnvironmentVariable) Reset() { *x = WorkspaceEnvironmentVariable{} if protoimpl.UnsafeEnabled { - mi := &file_gitpod_experimental_v2_workspace_proto_msgTypes[9] + mi := &file_gitpod_v1_workspace_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1048,7 +1048,7 @@ func (x *WorkspaceEnvironmentVariable) String() string { func (*WorkspaceEnvironmentVariable) ProtoMessage() {} func (x *WorkspaceEnvironmentVariable) ProtoReflect() protoreflect.Message { - mi := &file_gitpod_experimental_v2_workspace_proto_msgTypes[9] + mi := &file_gitpod_v1_workspace_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1061,7 +1061,7 @@ func (x *WorkspaceEnvironmentVariable) ProtoReflect() protoreflect.Message { // Deprecated: Use WorkspaceEnvironmentVariable.ProtoReflect.Descriptor instead. func (*WorkspaceEnvironmentVariable) Descriptor() ([]byte, []int) { - return file_gitpod_experimental_v2_workspace_proto_rawDescGZIP(), []int{9} + return file_gitpod_v1_workspace_proto_rawDescGZIP(), []int{9} } func (x *WorkspaceEnvironmentVariable) GetName() string { @@ -1078,247 +1078,233 @@ func (x *WorkspaceEnvironmentVariable) GetValue() string { return "" } -var File_gitpod_experimental_v2_workspace_proto protoreflect.FileDescriptor - -var file_gitpod_experimental_v2_workspace_proto_rawDesc = []byte{ - 0x0a, 0x26, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, - 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2f, 0x76, 0x32, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, - 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x32, - 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x22, 0x25, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x4d, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x57, - 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x35, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, - 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, - 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x22, 0xdf, 0x04, 0x0a, 0x09, 0x57, 0x6f, 0x72, 0x6b, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x70, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, - 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, - 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x12, 0x3f, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, - 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x32, 0x2e, - 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, - 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x7e, 0x0a, 0x20, 0x61, 0x64, 0x64, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, - 0x74, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, - 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, - 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x1e, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x61, 0x6c, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, - 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, - 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, - 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, - 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x88, - 0x01, 0x01, 0x12, 0x44, 0x0a, 0x06, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, - 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x64, 0x69, 0x74, - 0x6f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x02, 0x52, 0x06, 0x65, - 0x64, 0x69, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x78, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x24, 0x0a, 0x0b, 0x70, 0x72, 0x65, - 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, - 0x52, 0x0a, 0x70, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, - 0x09, 0x0a, 0x07, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x77, - 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x09, - 0x0a, 0x07, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x70, 0x72, - 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x22, 0xdb, 0x03, 0x0a, 0x0f, 0x57, 0x6f, - 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3c, 0x0a, - 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, - 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, - 0x61, 0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, - 0x68, 0x61, 0x73, 0x65, 0x52, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x07, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x6f, - 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x55, 0x72, 0x6c, 0x12, - 0x49, 0x0a, 0x0a, 0x67, 0x69, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, - 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x57, 0x6f, 0x72, - 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x47, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, - 0x09, 0x67, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3b, 0x0a, 0x05, 0x70, 0x6f, - 0x72, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x69, 0x74, 0x70, - 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, - 0x76, 0x32, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, - 0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x44, 0x0a, 0x09, 0x61, 0x64, 0x6d, 0x69, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x67, 0x69, 0x74, - 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, - 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76, - 0x65, 0x6c, 0x52, 0x09, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, - 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x4b, - 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, - 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x57, 0x6f, 0x72, 0x6b, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x0a, 0x0a, 0x08, 0x5f, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x68, 0x0a, 0x13, 0x57, 0x6f, 0x72, 0x6b, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1b, - 0x0a, 0x06, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x06, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x74, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, - 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x66, - 0x61, 0x69, 0x6c, 0x65, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, - 0x74, 0x22, 0xdd, 0x02, 0x0a, 0x0d, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, - 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x44, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, - 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x32, - 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x2e, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, - 0x4a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x2e, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, - 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x22, 0x47, 0x0a, 0x06, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, - 0x0e, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x10, - 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x50, 0x55, 0x42, 0x4c, - 0x49, 0x43, 0x10, 0x02, 0x22, 0x4b, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x52, - 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x48, 0x54, 0x54, 0x50, 0x10, 0x01, 0x12, 0x12, 0x0a, - 0x0e, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x48, 0x54, 0x54, 0x50, 0x53, 0x10, - 0x02, 0x22, 0x8d, 0x03, 0x0a, 0x12, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x47, - 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x6f, 0x6e, - 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x6f, - 0x6e, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x23, 0x0a, - 0x0d, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, - 0x69, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x75, 0x6e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x65, 0x64, - 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x75, 0x6e, - 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x34, 0x0a, - 0x16, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x75, 0x6e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x65, - 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x55, 0x6e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x46, 0x69, - 0x6c, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x75, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x64, - 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x75, 0x6e, - 0x74, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x15, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x75, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, - 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x74, 0x6f, 0x74, - 0x61, 0x6c, 0x55, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x73, - 0x12, 0x29, 0x0a, 0x10, 0x75, 0x6e, 0x70, 0x75, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6d, - 0x6d, 0x69, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x75, 0x6e, 0x70, 0x75, - 0x73, 0x68, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x75, 0x6e, 0x70, 0x75, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x63, 0x6f, - 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x74, 0x6f, 0x74, - 0x61, 0x6c, 0x55, 0x6e, 0x70, 0x75, 0x73, 0x68, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, - 0x73, 0x22, 0xfc, 0x02, 0x0a, 0x0e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, - 0x68, 0x61, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, - 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x57, 0x6f, 0x72, 0x6b, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x68, 0x61, 0x73, 0x65, 0x2e, 0x50, 0x68, 0x61, 0x73, 0x65, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x4c, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x52, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x54, 0x69, 0x6d, 0x65, 0x22, 0xd9, 0x01, 0x0a, 0x05, 0x50, 0x68, 0x61, 0x73, 0x65, 0x12, 0x15, - 0x0a, 0x11, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x50, - 0x52, 0x45, 0x50, 0x41, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x48, - 0x41, 0x53, 0x45, 0x5f, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x10, 0x02, - 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, - 0x47, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x52, 0x45, - 0x41, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x48, 0x41, 0x53, 0x45, - 0x5f, 0x49, 0x4e, 0x49, 0x54, 0x49, 0x41, 0x4c, 0x49, 0x5a, 0x49, 0x4e, 0x47, 0x10, 0x05, 0x12, - 0x11, 0x0a, 0x0d, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, - 0x10, 0x06, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x45, - 0x52, 0x52, 0x55, 0x50, 0x54, 0x45, 0x44, 0x10, 0x07, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x48, 0x41, - 0x53, 0x45, 0x5f, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x49, 0x4e, 0x47, 0x10, 0x08, 0x12, 0x11, 0x0a, - 0x0d, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x10, 0x09, - 0x22, 0x3f, 0x0a, 0x0f, 0x45, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, - 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x22, 0x57, 0x0a, 0x1c, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x45, 0x6e, - 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, - 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x2a, 0x6f, 0x0a, 0x0e, 0x41, 0x64, - 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1f, 0x0a, 0x1b, - 0x41, 0x44, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, - 0x1a, 0x41, 0x44, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, - 0x5f, 0x4f, 0x57, 0x4e, 0x45, 0x52, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x01, 0x12, 0x1c, 0x0a, - 0x18, 0x41, 0x44, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, - 0x5f, 0x45, 0x56, 0x45, 0x52, 0x59, 0x4f, 0x4e, 0x45, 0x10, 0x02, 0x32, 0x7f, 0x0a, 0x10, 0x57, - 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, - 0x6b, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, - 0x2b, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, - 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x67, - 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, - 0x61, 0x6c, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x46, 0x5a, 0x44, +var File_gitpod_v1_workspace_proto protoreflect.FileDescriptor + +var file_gitpod_v1_workspace_proto_rawDesc = []byte{ + 0x0a, 0x19, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x6f, 0x72, 0x6b, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x67, 0x69, 0x74, + 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x25, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x57, 0x6f, + 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x40, + 0x0a, 0x14, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, + 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, + 0x22, 0xb8, 0x04, 0x0a, 0x09, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, + 0x0a, 0x08, 0x70, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x08, 0x70, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x69, 0x6e, 0x6e, 0x65, + 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x12, + 0x32, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x71, 0x0a, 0x20, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x6c, 0x5f, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x61, + 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, + 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, + 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x1e, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, + 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0e, + 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x88, 0x01, + 0x01, 0x12, 0x37, 0x0a, 0x06, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x64, + 0x69, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x02, 0x52, + 0x06, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x24, 0x0a, 0x0b, 0x70, + 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x03, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x88, 0x01, + 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x42, 0x12, 0x0a, 0x10, + 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, + 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, + 0x70, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x22, 0x9a, 0x03, 0x0a, 0x0f, + 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x2f, 0x0a, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x50, 0x68, 0x61, 0x73, 0x65, 0x52, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, + 0x12, 0x1d, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x23, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x75, 0x72, 0x6c, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x55, 0x72, 0x6c, 0x12, 0x3c, 0x0a, 0x0a, 0x67, 0x69, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, + 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x47, 0x69, + 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x09, 0x67, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x2e, 0x0a, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, + 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x05, 0x70, 0x6f, 0x72, + 0x74, 0x73, 0x12, 0x37, 0x0a, 0x09, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, + 0x31, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, + 0x52, 0x09, 0x61, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x3e, 0x0a, 0x0a, + 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, + 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x0a, 0x0a, 0x08, + 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x68, 0x0a, 0x13, 0x57, 0x6f, 0x72, 0x6b, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x1b, 0x0a, 0x06, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x06, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, + 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, + 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, + 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, + 0x75, 0x74, 0x22, 0xc3, 0x02, 0x0a, 0x0d, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x50, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x37, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, + 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x6f, + 0x72, 0x74, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x75, 0x72, 0x6c, 0x12, 0x3d, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x6f, 0x64, 0x2e, 0x76, + 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x2e, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x22, 0x47, 0x0a, 0x06, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x16, 0x0a, 0x12, + 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x50, + 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x4f, 0x4c, 0x49, + 0x43, 0x59, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x10, 0x02, 0x22, 0x4b, 0x0a, 0x08, 0x50, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x54, 0x4f, + 0x43, 0x4f, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x48, 0x54, + 0x54, 0x50, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, + 0x5f, 0x48, 0x54, 0x54, 0x50, 0x53, 0x10, 0x02, 0x22, 0x8d, 0x03, 0x0a, 0x12, 0x57, 0x6f, 0x72, + 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x47, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, + 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, + 0x61, 0x6e, 0x63, 0x68, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x63, + 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x74, + 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x75, 0x6e, 0x63, + 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x0f, 0x75, 0x6e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x46, + 0x69, 0x6c, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x75, 0x6e, + 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x55, 0x6e, 0x63, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x75, 0x6e, + 0x74, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x0e, 0x75, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, + 0x6c, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x75, 0x6e, 0x74, + 0x72, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x13, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x55, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x6b, + 0x65, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x75, 0x6e, 0x70, 0x75, 0x73, + 0x68, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x0f, 0x75, 0x6e, 0x70, 0x75, 0x73, 0x68, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x69, + 0x74, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x75, 0x6e, 0x70, 0x75, + 0x73, 0x68, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x14, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x55, 0x6e, 0x70, 0x75, 0x73, 0x68, 0x65, + 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x22, 0xef, 0x02, 0x0a, 0x0e, 0x57, 0x6f, 0x72, + 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x68, 0x61, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x70, + 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, + 0x68, 0x61, 0x73, 0x65, 0x2e, 0x50, 0x68, 0x61, 0x73, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x4c, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x12, 0x6c, 0x61, 0x73, 0x74, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xd9, + 0x01, 0x0a, 0x05, 0x50, 0x68, 0x61, 0x73, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x48, 0x41, 0x53, + 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x13, 0x0a, 0x0f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x50, 0x52, 0x45, 0x50, 0x41, 0x52, 0x49, + 0x4e, 0x47, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x49, 0x4d, + 0x41, 0x47, 0x45, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x48, + 0x41, 0x53, 0x45, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x12, 0x0a, + 0x0e, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x10, + 0x04, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x49, 0x4e, 0x49, 0x54, 0x49, + 0x41, 0x4c, 0x49, 0x5a, 0x49, 0x4e, 0x47, 0x10, 0x05, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x48, 0x41, + 0x53, 0x45, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x06, 0x12, 0x15, 0x0a, 0x11, + 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x52, 0x55, 0x50, 0x54, 0x45, + 0x44, 0x10, 0x07, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x48, 0x41, 0x53, 0x45, 0x5f, 0x53, 0x54, 0x4f, + 0x50, 0x50, 0x49, 0x4e, 0x47, 0x10, 0x08, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x48, 0x41, 0x53, 0x45, + 0x5f, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x10, 0x09, 0x22, 0x3f, 0x0a, 0x0f, 0x45, 0x64, + 0x69, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x57, 0x0a, 0x1c, 0x57, + 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, + 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x2a, 0x6f, 0x0a, 0x0e, 0x41, 0x64, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1f, 0x0a, 0x1b, 0x41, 0x44, 0x4d, 0x49, 0x53, 0x53, + 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x44, 0x4d, 0x49, 0x53, + 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x4f, 0x57, 0x4e, 0x45, 0x52, + 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x44, 0x4d, 0x49, 0x53, + 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x45, 0x56, 0x45, 0x52, 0x59, + 0x4f, 0x4e, 0x45, 0x10, 0x02, 0x32, 0x65, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x51, 0x0a, 0x0c, 0x47, 0x65, 0x74, + 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x70, + 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x70, + 0x6f, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x39, 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, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, - 0x6c, 0x2f, 0x76, 0x32, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( - file_gitpod_experimental_v2_workspace_proto_rawDescOnce sync.Once - file_gitpod_experimental_v2_workspace_proto_rawDescData = file_gitpod_experimental_v2_workspace_proto_rawDesc + file_gitpod_v1_workspace_proto_rawDescOnce sync.Once + file_gitpod_v1_workspace_proto_rawDescData = file_gitpod_v1_workspace_proto_rawDesc ) -func file_gitpod_experimental_v2_workspace_proto_rawDescGZIP() []byte { - file_gitpod_experimental_v2_workspace_proto_rawDescOnce.Do(func() { - file_gitpod_experimental_v2_workspace_proto_rawDescData = protoimpl.X.CompressGZIP(file_gitpod_experimental_v2_workspace_proto_rawDescData) +func file_gitpod_v1_workspace_proto_rawDescGZIP() []byte { + file_gitpod_v1_workspace_proto_rawDescOnce.Do(func() { + file_gitpod_v1_workspace_proto_rawDescData = protoimpl.X.CompressGZIP(file_gitpod_v1_workspace_proto_rawDescData) }) - return file_gitpod_experimental_v2_workspace_proto_rawDescData -} - -var file_gitpod_experimental_v2_workspace_proto_enumTypes = make([]protoimpl.EnumInfo, 4) -var file_gitpod_experimental_v2_workspace_proto_msgTypes = make([]protoimpl.MessageInfo, 10) -var file_gitpod_experimental_v2_workspace_proto_goTypes = []interface{}{ - (AdmissionLevel)(0), // 0: gitpod.experimental.v2.AdmissionLevel - (WorkspacePort_Policy)(0), // 1: gitpod.experimental.v2.WorkspacePort.Policy - (WorkspacePort_Protocol)(0), // 2: gitpod.experimental.v2.WorkspacePort.Protocol - (WorkspacePhase_Phase)(0), // 3: gitpod.experimental.v2.WorkspacePhase.Phase - (*GetWorkspaceRequest)(nil), // 4: gitpod.experimental.v2.GetWorkspaceRequest - (*GetWorkspaceResponse)(nil), // 5: gitpod.experimental.v2.GetWorkspaceResponse - (*Workspace)(nil), // 6: gitpod.experimental.v2.Workspace - (*WorkspaceStatus)(nil), // 7: gitpod.experimental.v2.WorkspaceStatus - (*WorkspaceConditions)(nil), // 8: gitpod.experimental.v2.WorkspaceConditions - (*WorkspacePort)(nil), // 9: gitpod.experimental.v2.WorkspacePort - (*WorkspaceGitStatus)(nil), // 10: gitpod.experimental.v2.WorkspaceGitStatus - (*WorkspacePhase)(nil), // 11: gitpod.experimental.v2.WorkspacePhase - (*EditorReference)(nil), // 12: gitpod.experimental.v2.EditorReference - (*WorkspaceEnvironmentVariable)(nil), // 13: gitpod.experimental.v2.WorkspaceEnvironmentVariable + return file_gitpod_v1_workspace_proto_rawDescData +} + +var file_gitpod_v1_workspace_proto_enumTypes = make([]protoimpl.EnumInfo, 4) +var file_gitpod_v1_workspace_proto_msgTypes = make([]protoimpl.MessageInfo, 10) +var file_gitpod_v1_workspace_proto_goTypes = []interface{}{ + (AdmissionLevel)(0), // 0: gitpod.v1.AdmissionLevel + (WorkspacePort_Policy)(0), // 1: gitpod.v1.WorkspacePort.Policy + (WorkspacePort_Protocol)(0), // 2: gitpod.v1.WorkspacePort.Protocol + (WorkspacePhase_Phase)(0), // 3: gitpod.v1.WorkspacePhase.Phase + (*GetWorkspaceRequest)(nil), // 4: gitpod.v1.GetWorkspaceRequest + (*GetWorkspaceResponse)(nil), // 5: gitpod.v1.GetWorkspaceResponse + (*Workspace)(nil), // 6: gitpod.v1.Workspace + (*WorkspaceStatus)(nil), // 7: gitpod.v1.WorkspaceStatus + (*WorkspaceConditions)(nil), // 8: gitpod.v1.WorkspaceConditions + (*WorkspacePort)(nil), // 9: gitpod.v1.WorkspacePort + (*WorkspaceGitStatus)(nil), // 10: gitpod.v1.WorkspaceGitStatus + (*WorkspacePhase)(nil), // 11: gitpod.v1.WorkspacePhase + (*EditorReference)(nil), // 12: gitpod.v1.EditorReference + (*WorkspaceEnvironmentVariable)(nil), // 13: gitpod.v1.WorkspaceEnvironmentVariable (*timestamppb.Timestamp)(nil), // 14: google.protobuf.Timestamp } -var file_gitpod_experimental_v2_workspace_proto_depIdxs = []int32{ - 6, // 0: gitpod.experimental.v2.GetWorkspaceResponse.item:type_name -> gitpod.experimental.v2.Workspace - 7, // 1: gitpod.experimental.v2.Workspace.status:type_name -> gitpod.experimental.v2.WorkspaceStatus - 13, // 2: gitpod.experimental.v2.Workspace.additional_environment_variables:type_name -> gitpod.experimental.v2.WorkspaceEnvironmentVariable - 12, // 3: gitpod.experimental.v2.Workspace.editor:type_name -> gitpod.experimental.v2.EditorReference - 11, // 4: gitpod.experimental.v2.WorkspaceStatus.phase:type_name -> gitpod.experimental.v2.WorkspacePhase - 10, // 5: gitpod.experimental.v2.WorkspaceStatus.git_status:type_name -> gitpod.experimental.v2.WorkspaceGitStatus - 9, // 6: gitpod.experimental.v2.WorkspaceStatus.ports:type_name -> gitpod.experimental.v2.WorkspacePort - 0, // 7: gitpod.experimental.v2.WorkspaceStatus.admission:type_name -> gitpod.experimental.v2.AdmissionLevel - 8, // 8: gitpod.experimental.v2.WorkspaceStatus.conditions:type_name -> gitpod.experimental.v2.WorkspaceConditions - 1, // 9: gitpod.experimental.v2.WorkspacePort.policy:type_name -> gitpod.experimental.v2.WorkspacePort.Policy - 2, // 10: gitpod.experimental.v2.WorkspacePort.protocol:type_name -> gitpod.experimental.v2.WorkspacePort.Protocol - 3, // 11: gitpod.experimental.v2.WorkspacePhase.name:type_name -> gitpod.experimental.v2.WorkspacePhase.Phase - 14, // 12: gitpod.experimental.v2.WorkspacePhase.last_transition_time:type_name -> google.protobuf.Timestamp - 4, // 13: gitpod.experimental.v2.WorkspaceService.GetWorkspace:input_type -> gitpod.experimental.v2.GetWorkspaceRequest - 5, // 14: gitpod.experimental.v2.WorkspaceService.GetWorkspace:output_type -> gitpod.experimental.v2.GetWorkspaceResponse +var file_gitpod_v1_workspace_proto_depIdxs = []int32{ + 6, // 0: gitpod.v1.GetWorkspaceResponse.item:type_name -> gitpod.v1.Workspace + 7, // 1: gitpod.v1.Workspace.status:type_name -> gitpod.v1.WorkspaceStatus + 13, // 2: gitpod.v1.Workspace.additional_environment_variables:type_name -> gitpod.v1.WorkspaceEnvironmentVariable + 12, // 3: gitpod.v1.Workspace.editor:type_name -> gitpod.v1.EditorReference + 11, // 4: gitpod.v1.WorkspaceStatus.phase:type_name -> gitpod.v1.WorkspacePhase + 10, // 5: gitpod.v1.WorkspaceStatus.git_status:type_name -> gitpod.v1.WorkspaceGitStatus + 9, // 6: gitpod.v1.WorkspaceStatus.ports:type_name -> gitpod.v1.WorkspacePort + 0, // 7: gitpod.v1.WorkspaceStatus.admission:type_name -> gitpod.v1.AdmissionLevel + 8, // 8: gitpod.v1.WorkspaceStatus.conditions:type_name -> gitpod.v1.WorkspaceConditions + 1, // 9: gitpod.v1.WorkspacePort.policy:type_name -> gitpod.v1.WorkspacePort.Policy + 2, // 10: gitpod.v1.WorkspacePort.protocol:type_name -> gitpod.v1.WorkspacePort.Protocol + 3, // 11: gitpod.v1.WorkspacePhase.name:type_name -> gitpod.v1.WorkspacePhase.Phase + 14, // 12: gitpod.v1.WorkspacePhase.last_transition_time:type_name -> google.protobuf.Timestamp + 4, // 13: gitpod.v1.WorkspaceService.GetWorkspace:input_type -> gitpod.v1.GetWorkspaceRequest + 5, // 14: gitpod.v1.WorkspaceService.GetWorkspace:output_type -> gitpod.v1.GetWorkspaceResponse 14, // [14:15] is the sub-list for method output_type 13, // [13:14] is the sub-list for method input_type 13, // [13:13] is the sub-list for extension type_name @@ -1326,13 +1312,13 @@ var file_gitpod_experimental_v2_workspace_proto_depIdxs = []int32{ 0, // [0:13] is the sub-list for field type_name } -func init() { file_gitpod_experimental_v2_workspace_proto_init() } -func file_gitpod_experimental_v2_workspace_proto_init() { - if File_gitpod_experimental_v2_workspace_proto != nil { +func init() { file_gitpod_v1_workspace_proto_init() } +func file_gitpod_v1_workspace_proto_init() { + if File_gitpod_v1_workspace_proto != nil { return } if !protoimpl.UnsafeEnabled { - file_gitpod_experimental_v2_workspace_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_gitpod_v1_workspace_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetWorkspaceRequest); i { case 0: return &v.state @@ -1344,7 +1330,7 @@ func file_gitpod_experimental_v2_workspace_proto_init() { return nil } } - file_gitpod_experimental_v2_workspace_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_gitpod_v1_workspace_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetWorkspaceResponse); i { case 0: return &v.state @@ -1356,7 +1342,7 @@ func file_gitpod_experimental_v2_workspace_proto_init() { return nil } } - file_gitpod_experimental_v2_workspace_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_gitpod_v1_workspace_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Workspace); i { case 0: return &v.state @@ -1368,7 +1354,7 @@ func file_gitpod_experimental_v2_workspace_proto_init() { return nil } } - file_gitpod_experimental_v2_workspace_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_gitpod_v1_workspace_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WorkspaceStatus); i { case 0: return &v.state @@ -1380,7 +1366,7 @@ func file_gitpod_experimental_v2_workspace_proto_init() { return nil } } - file_gitpod_experimental_v2_workspace_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_gitpod_v1_workspace_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WorkspaceConditions); i { case 0: return &v.state @@ -1392,7 +1378,7 @@ func file_gitpod_experimental_v2_workspace_proto_init() { return nil } } - file_gitpod_experimental_v2_workspace_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_gitpod_v1_workspace_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WorkspacePort); i { case 0: return &v.state @@ -1404,7 +1390,7 @@ func file_gitpod_experimental_v2_workspace_proto_init() { return nil } } - file_gitpod_experimental_v2_workspace_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_gitpod_v1_workspace_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WorkspaceGitStatus); i { case 0: return &v.state @@ -1416,7 +1402,7 @@ func file_gitpod_experimental_v2_workspace_proto_init() { return nil } } - file_gitpod_experimental_v2_workspace_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_gitpod_v1_workspace_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WorkspacePhase); i { case 0: return &v.state @@ -1428,7 +1414,7 @@ func file_gitpod_experimental_v2_workspace_proto_init() { return nil } } - file_gitpod_experimental_v2_workspace_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_gitpod_v1_workspace_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EditorReference); i { case 0: return &v.state @@ -1440,7 +1426,7 @@ func file_gitpod_experimental_v2_workspace_proto_init() { return nil } } - file_gitpod_experimental_v2_workspace_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_gitpod_v1_workspace_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WorkspaceEnvironmentVariable); i { case 0: return &v.state @@ -1453,27 +1439,27 @@ func file_gitpod_experimental_v2_workspace_proto_init() { } } } - file_gitpod_experimental_v2_workspace_proto_msgTypes[2].OneofWrappers = []interface{}{} - file_gitpod_experimental_v2_workspace_proto_msgTypes[3].OneofWrappers = []interface{}{} - file_gitpod_experimental_v2_workspace_proto_msgTypes[4].OneofWrappers = []interface{}{} - file_gitpod_experimental_v2_workspace_proto_msgTypes[9].OneofWrappers = []interface{}{} + file_gitpod_v1_workspace_proto_msgTypes[2].OneofWrappers = []interface{}{} + file_gitpod_v1_workspace_proto_msgTypes[3].OneofWrappers = []interface{}{} + file_gitpod_v1_workspace_proto_msgTypes[4].OneofWrappers = []interface{}{} + file_gitpod_v1_workspace_proto_msgTypes[9].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_gitpod_experimental_v2_workspace_proto_rawDesc, + RawDescriptor: file_gitpod_v1_workspace_proto_rawDesc, NumEnums: 4, NumMessages: 10, NumExtensions: 0, NumServices: 1, }, - GoTypes: file_gitpod_experimental_v2_workspace_proto_goTypes, - DependencyIndexes: file_gitpod_experimental_v2_workspace_proto_depIdxs, - EnumInfos: file_gitpod_experimental_v2_workspace_proto_enumTypes, - MessageInfos: file_gitpod_experimental_v2_workspace_proto_msgTypes, + GoTypes: file_gitpod_v1_workspace_proto_goTypes, + DependencyIndexes: file_gitpod_v1_workspace_proto_depIdxs, + EnumInfos: file_gitpod_v1_workspace_proto_enumTypes, + MessageInfos: file_gitpod_v1_workspace_proto_msgTypes, }.Build() - File_gitpod_experimental_v2_workspace_proto = out.File - file_gitpod_experimental_v2_workspace_proto_rawDesc = nil - file_gitpod_experimental_v2_workspace_proto_goTypes = nil - file_gitpod_experimental_v2_workspace_proto_depIdxs = nil + File_gitpod_v1_workspace_proto = out.File + file_gitpod_v1_workspace_proto_rawDesc = nil + file_gitpod_v1_workspace_proto_goTypes = nil + file_gitpod_v1_workspace_proto_depIdxs = nil } diff --git a/components/public-api/go/experimental/v2/workspace_grpc.pb.go b/components/public-api/go/v1/workspace_grpc.pb.go similarity index 92% rename from components/public-api/go/experimental/v2/workspace_grpc.pb.go rename to components/public-api/go/v1/workspace_grpc.pb.go index 8387d2a0532d93..dbd16b75da5f6b 100644 --- a/components/public-api/go/experimental/v2/workspace_grpc.pb.go +++ b/components/public-api/go/v1/workspace_grpc.pb.go @@ -6,9 +6,9 @@ // versions: // - protoc-gen-go-grpc v1.2.0 // - protoc (unknown) -// source: gitpod/experimental/v2/workspace.proto +// source: gitpod/v1/workspace.proto -package v2 +package v1 import ( context "context" @@ -43,7 +43,7 @@ func NewWorkspaceServiceClient(cc grpc.ClientConnInterface) WorkspaceServiceClie func (c *workspaceServiceClient) GetWorkspace(ctx context.Context, in *GetWorkspaceRequest, opts ...grpc.CallOption) (*GetWorkspaceResponse, error) { out := new(GetWorkspaceResponse) - err := c.cc.Invoke(ctx, "/gitpod.experimental.v2.WorkspaceService/GetWorkspace", in, out, opts...) + err := c.cc.Invoke(ctx, "/gitpod.v1.WorkspaceService/GetWorkspace", in, out, opts...) if err != nil { return nil, err } @@ -92,7 +92,7 @@ func _WorkspaceService_GetWorkspace_Handler(srv interface{}, ctx context.Context } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/gitpod.experimental.v2.WorkspaceService/GetWorkspace", + FullMethod: "/gitpod.v1.WorkspaceService/GetWorkspace", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(WorkspaceServiceServer).GetWorkspace(ctx, req.(*GetWorkspaceRequest)) @@ -104,7 +104,7 @@ func _WorkspaceService_GetWorkspace_Handler(srv interface{}, ctx context.Context // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) var WorkspaceService_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "gitpod.experimental.v2.WorkspaceService", + ServiceName: "gitpod.v1.WorkspaceService", HandlerType: (*WorkspaceServiceServer)(nil), Methods: []grpc.MethodDesc{ { @@ -113,5 +113,5 @@ var WorkspaceService_ServiceDesc = grpc.ServiceDesc{ }, }, Streams: []grpc.StreamDesc{}, - Metadata: "gitpod/experimental/v2/workspace.proto", + Metadata: "gitpod/v1/workspace.proto", } diff --git a/components/public-api/typescript/src/gitpod/experimental/v2/organization_connect.ts b/components/public-api/typescript/src/gitpod/v1/organization_connect.ts similarity index 76% rename from components/public-api/typescript/src/gitpod/experimental/v2/organization_connect.ts rename to components/public-api/typescript/src/gitpod/v1/organization_connect.ts index ea0558d82da233..58ce1ea5fc9be8 100644 --- a/components/public-api/typescript/src/gitpod/experimental/v2/organization_connect.ts +++ b/components/public-api/typescript/src/gitpod/v1/organization_connect.ts @@ -5,7 +5,7 @@ */ // @generated by protoc-gen-connect-es v1.1.2 with parameter "target=ts" -// @generated from file gitpod/experimental/v2/organization.proto (package gitpod.experimental.v2, syntax proto3) +// @generated from file gitpod/v1/organization.proto (package gitpod.v1, syntax proto3) /* eslint-disable */ // @ts-nocheck @@ -13,15 +13,15 @@ import { CreateOrganizationRequest, CreateOrganizationResponse, DeleteOrganizati import { MethodKind } from "@bufbuild/protobuf"; /** - * @generated from service gitpod.experimental.v2.OrganizationService + * @generated from service gitpod.v1.OrganizationService */ export const OrganizationService = { - typeName: "gitpod.experimental.v2.OrganizationService", + typeName: "gitpod.v1.OrganizationService", methods: { /** * CreateOrganization creates a new Organization. * - * @generated from rpc gitpod.experimental.v2.OrganizationService.CreateOrganization + * @generated from rpc gitpod.v1.OrganizationService.CreateOrganization */ createOrganization: { name: "CreateOrganization", @@ -32,7 +32,7 @@ export const OrganizationService = { /** * GetOrganization retrieves a single Organization. * - * @generated from rpc gitpod.experimental.v2.OrganizationService.GetOrganization + * @generated from rpc gitpod.v1.OrganizationService.GetOrganization */ getOrganization: { name: "GetOrganization", @@ -43,7 +43,7 @@ export const OrganizationService = { /** * UpdateOrganization updates the properties of an Organization. * - * @generated from rpc gitpod.experimental.v2.OrganizationService.UpdateOrganization + * @generated from rpc gitpod.v1.OrganizationService.UpdateOrganization */ updateOrganization: { name: "UpdateOrganization", @@ -54,7 +54,7 @@ export const OrganizationService = { /** * ListOrganizations lists all organization the caller has access to. * - * @generated from rpc gitpod.experimental.v2.OrganizationService.ListOrganizations + * @generated from rpc gitpod.v1.OrganizationService.ListOrganizations */ listOrganizations: { name: "ListOrganizations", @@ -65,7 +65,7 @@ export const OrganizationService = { /** * DeleteOrganization deletes the specified organization. * - * @generated from rpc gitpod.experimental.v2.OrganizationService.DeleteOrganization + * @generated from rpc gitpod.v1.OrganizationService.DeleteOrganization */ deleteOrganization: { name: "DeleteOrganization", @@ -76,7 +76,7 @@ export const OrganizationService = { /** * GetOrganizationInvitation retrieves the invitation for a Organization. * - * @generated from rpc gitpod.experimental.v2.OrganizationService.GetOrganizationInvitation + * @generated from rpc gitpod.v1.OrganizationService.GetOrganizationInvitation */ getOrganizationInvitation: { name: "GetOrganizationInvitation", @@ -87,7 +87,7 @@ export const OrganizationService = { /** * JoinOrganization makes the caller a OrganizationMember of the Organization. * - * @generated from rpc gitpod.experimental.v2.OrganizationService.JoinOrganization + * @generated from rpc gitpod.v1.OrganizationService.JoinOrganization */ joinOrganization: { name: "JoinOrganization", @@ -98,7 +98,7 @@ export const OrganizationService = { /** * ResetOrganizationInvitation resets the invitation_id for a Organization. * - * @generated from rpc gitpod.experimental.v2.OrganizationService.ResetOrganizationInvitation + * @generated from rpc gitpod.v1.OrganizationService.ResetOrganizationInvitation */ resetOrganizationInvitation: { name: "ResetOrganizationInvitation", @@ -109,7 +109,7 @@ export const OrganizationService = { /** * ListOrganizationMembers lists the members of a Organization. * - * @generated from rpc gitpod.experimental.v2.OrganizationService.ListOrganizationMembers + * @generated from rpc gitpod.v1.OrganizationService.ListOrganizationMembers */ listOrganizationMembers: { name: "ListOrganizationMembers", @@ -120,7 +120,7 @@ export const OrganizationService = { /** * UpdateOrganizationMember updates organization membership properties. * - * @generated from rpc gitpod.experimental.v2.OrganizationService.UpdateOrganizationMember + * @generated from rpc gitpod.v1.OrganizationService.UpdateOrganizationMember */ updateOrganizationMember: { name: "UpdateOrganizationMember", @@ -129,9 +129,10 @@ export const OrganizationService = { kind: MethodKind.Unary, }, /** - * DeleteOrganizationMember removes a OrganizationMember from the Organization. + * DeleteOrganizationMember removes a OrganizationMember from the + * Organization. * - * @generated from rpc gitpod.experimental.v2.OrganizationService.DeleteOrganizationMember + * @generated from rpc gitpod.v1.OrganizationService.DeleteOrganizationMember */ deleteOrganizationMember: { name: "DeleteOrganizationMember", @@ -142,7 +143,7 @@ export const OrganizationService = { /** * GetOrganizationSettings retrieves the settings of a Organization. * - * @generated from rpc gitpod.experimental.v2.OrganizationService.GetOrganizationSettings + * @generated from rpc gitpod.v1.OrganizationService.GetOrganizationSettings */ getOrganizationSettings: { name: "GetOrganizationSettings", @@ -153,7 +154,7 @@ export const OrganizationService = { /** * UpdateOrganizationSettings updates the settings of a Organization. * - * @generated from rpc gitpod.experimental.v2.OrganizationService.UpdateOrganizationSettings + * @generated from rpc gitpod.v1.OrganizationService.UpdateOrganizationSettings */ updateOrganizationSettings: { name: "UpdateOrganizationSettings", diff --git a/components/public-api/typescript/src/gitpod/experimental/v2/organization_pb.ts b/components/public-api/typescript/src/gitpod/v1/organization_pb.ts similarity index 85% rename from components/public-api/typescript/src/gitpod/experimental/v2/organization_pb.ts rename to components/public-api/typescript/src/gitpod/v1/organization_pb.ts index bffee5eb02c70c..1cee5da3c9fabc 100644 --- a/components/public-api/typescript/src/gitpod/experimental/v2/organization_pb.ts +++ b/components/public-api/typescript/src/gitpod/v1/organization_pb.ts @@ -5,7 +5,7 @@ */ // @generated by protoc-gen-es v1.3.3 with parameter "target=ts" -// @generated from file gitpod/experimental/v2/organization.proto (package gitpod.experimental.v2, syntax proto3) +// @generated from file gitpod/v1/organization.proto (package gitpod.v1, syntax proto3) /* eslint-disable */ // @ts-nocheck @@ -14,7 +14,7 @@ import { Message, proto3, Timestamp } from "@bufbuild/protobuf"; import { PaginationRequest, PaginationResponse } from "./pagination_pb.js"; /** - * @generated from enum gitpod.experimental.v2.OrganizationRole + * @generated from enum gitpod.v1.OrganizationRole */ export enum OrganizationRole { /** @@ -33,14 +33,14 @@ export enum OrganizationRole { MEMBER = 2, } // Retrieve enum metadata with: proto3.getEnumType(OrganizationRole) -proto3.util.setEnumType(OrganizationRole, "gitpod.experimental.v2.OrganizationRole", [ +proto3.util.setEnumType(OrganizationRole, "gitpod.v1.OrganizationRole", [ { no: 0, name: "ORGANIZATION_ROLE_UNSPECIFIED" }, { no: 1, name: "ORGANIZATION_ROLE_OWNER" }, { no: 2, name: "ORGANIZATION_ROLE_MEMBER" }, ]); /** - * @generated from message gitpod.experimental.v2.Organization + * @generated from message gitpod.v1.Organization */ export class Organization extends Message { /** @@ -58,17 +58,23 @@ export class Organization extends Message { */ creationTime?: Timestamp; + /** + * @generated from field: string slug = 4; + */ + slug = ""; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "gitpod.experimental.v2.Organization"; + static readonly typeName = "gitpod.v1.Organization"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, { no: 2, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, { no: 3, name: "creation_time", kind: "message", T: Timestamp }, + { no: 4, name: "slug", kind: "scalar", T: 9 /* ScalarType.STRING */ }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): Organization { @@ -89,7 +95,7 @@ export class Organization extends Message { } /** - * @generated from message gitpod.experimental.v2.OrganizationMember + * @generated from message gitpod.v1.OrganizationMember */ export class OrganizationMember extends Message { /** @@ -98,7 +104,7 @@ export class OrganizationMember extends Message { userId = ""; /** - * @generated from field: gitpod.experimental.v2.OrganizationRole role = 2; + * @generated from field: gitpod.v1.OrganizationRole role = 2; */ role = OrganizationRole.UNSPECIFIED; @@ -133,7 +139,7 @@ export class OrganizationMember extends Message { } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "gitpod.experimental.v2.OrganizationMember"; + static readonly typeName = "gitpod.v1.OrganizationMember"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "user_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, { no: 2, name: "role", kind: "enum", T: proto3.getEnumType(OrganizationRole) }, @@ -162,7 +168,7 @@ export class OrganizationMember extends Message { } /** - * @generated from message gitpod.experimental.v2.OrganizationSettings + * @generated from message gitpod.v1.OrganizationSettings */ export class OrganizationSettings extends Message { /** @@ -181,7 +187,7 @@ export class OrganizationSettings extends Message { } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "gitpod.experimental.v2.OrganizationSettings"; + static readonly typeName = "gitpod.v1.OrganizationSettings"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "workspace_sharing_disabled", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, { no: 2, name: "default_workspace_image", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, @@ -205,7 +211,7 @@ export class OrganizationSettings extends Message { } /** - * @generated from message gitpod.experimental.v2.UpdateOrganizationRequest + * @generated from message gitpod.v1.UpdateOrganizationRequest */ export class UpdateOrganizationRequest extends Message { /** @@ -228,7 +234,7 @@ export class UpdateOrganizationRequest extends Message [ { no: 1, name: "organization_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, { no: 2, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, @@ -252,17 +258,25 @@ export class UpdateOrganizationRequest extends Message { + /** + * organization is the updated organization + * + * @generated from field: gitpod.v1.Organization organization = 1; + */ + organization?: Organization; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "gitpod.experimental.v2.UpdateOrganizationResponse"; + static readonly typeName = "gitpod.v1.UpdateOrganizationResponse"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "organization", kind: "message", T: Organization }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): UpdateOrganizationResponse { @@ -283,7 +297,7 @@ export class UpdateOrganizationResponse extends Message { /** @@ -296,7 +310,7 @@ export class UpdateOrganizationSettingsRequest extends Message [ { no: 1, name: "organization_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, { no: 2, name: "settings", kind: "message", T: OrganizationSettings }, @@ -330,17 +344,25 @@ export class UpdateOrganizationSettingsRequest extends Message { + /** + * settings are the updated settings + * + * @generated from field: gitpod.v1.OrganizationSettings settings = 1; + */ + settings?: OrganizationSettings; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "gitpod.experimental.v2.UpdateOrganizationSettingsResponse"; + static readonly typeName = "gitpod.v1.UpdateOrganizationSettingsResponse"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "settings", kind: "message", T: OrganizationSettings }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): UpdateOrganizationSettingsResponse { @@ -361,7 +383,7 @@ export class UpdateOrganizationSettingsResponse extends Message { /** @@ -377,7 +399,7 @@ export class GetOrganizationSettingsRequest extends Message [ { no: 1, name: "organization_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, ]); @@ -400,13 +422,13 @@ export class GetOrganizationSettingsRequest extends Message { /** * settings are the settings of the organization * - * @generated from field: gitpod.experimental.v2.OrganizationSettings settings = 1; + * @generated from field: gitpod.v1.OrganizationSettings settings = 1; */ settings?: OrganizationSettings; @@ -416,7 +438,7 @@ export class GetOrganizationSettingsResponse extends Message [ { no: 1, name: "settings", kind: "message", T: OrganizationSettings }, ]); @@ -439,7 +461,7 @@ export class GetOrganizationSettingsResponse extends Message { /** @@ -455,7 +477,7 @@ export class CreateOrganizationRequest extends Message [ { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, ]); @@ -478,11 +500,13 @@ export class CreateOrganizationRequest extends Message { /** - * @generated from field: gitpod.experimental.v2.Organization organization = 1; + * organization is the created organization + * + * @generated from field: gitpod.v1.Organization organization = 1; */ organization?: Organization; @@ -492,7 +516,7 @@ export class CreateOrganizationResponse extends Message [ { no: 1, name: "organization", kind: "message", T: Organization }, ]); @@ -515,7 +539,7 @@ export class CreateOrganizationResponse extends Message { /** @@ -531,7 +555,7 @@ export class GetOrganizationRequest extends Message { } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "gitpod.experimental.v2.GetOrganizationRequest"; + static readonly typeName = "gitpod.v1.GetOrganizationRequest"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "organization_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, ]); @@ -554,11 +578,13 @@ export class GetOrganizationRequest extends Message { } /** - * @generated from message gitpod.experimental.v2.GetOrganizationResponse + * @generated from message gitpod.v1.GetOrganizationResponse */ export class GetOrganizationResponse extends Message { /** - * @generated from field: gitpod.experimental.v2.Organization organization = 1; + * organization is the requested organization + * + * @generated from field: gitpod.v1.Organization organization = 1; */ organization?: Organization; @@ -568,7 +594,7 @@ export class GetOrganizationResponse extends Message { } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "gitpod.experimental.v2.GetOrganizationResponse"; + static readonly typeName = "gitpod.v1.GetOrganizationResponse"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "organization", kind: "message", T: Organization }, ]); @@ -591,23 +617,33 @@ export class GetOrganizationResponse extends Message { } /** - * @generated from message gitpod.experimental.v2.ListOrganizationsRequest + * @generated from message gitpod.v1.ListOrganizationsRequest */ export class ListOrganizationsRequest extends Message { /** - * @generated from field: gitpod.experimental.v2.PaginationRequest pagination = 1; + * pagination contains the pagination options for listing organizations + * + * @generated from field: gitpod.v1.PaginationRequest pagination = 1; */ pagination?: PaginationRequest; + /** + * scope is the scope of the organizations to list + * + * @generated from field: gitpod.v1.ListOrganizationsRequest.Scope scope = 2; + */ + scope = ListOrganizationsRequest_Scope.UNSPECIFIED; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "gitpod.experimental.v2.ListOrganizationsRequest"; + static readonly typeName = "gitpod.v1.ListOrganizationsRequest"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "pagination", kind: "message", T: PaginationRequest }, + { no: 2, name: "scope", kind: "enum", T: proto3.getEnumType(ListOrganizationsRequest_Scope) }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): ListOrganizationsRequest { @@ -628,16 +664,46 @@ export class ListOrganizationsRequest extends Message } /** - * @generated from message gitpod.experimental.v2.ListOrganizationsResponse + * @generated from enum gitpod.v1.ListOrganizationsRequest.Scope + */ +export enum ListOrganizationsRequest_Scope { + /** + * @generated from enum value: SCOPE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * @generated from enum value: SCOPE_MEMBER = 1; + */ + MEMBER = 1, + + /** + * @generated from enum value: SCOPE_ALL = 2; + */ + ALL = 2, +} +// Retrieve enum metadata with: proto3.getEnumType(ListOrganizationsRequest_Scope) +proto3.util.setEnumType(ListOrganizationsRequest_Scope, "gitpod.v1.ListOrganizationsRequest.Scope", [ + { no: 0, name: "SCOPE_UNSPECIFIED" }, + { no: 1, name: "SCOPE_MEMBER" }, + { no: 2, name: "SCOPE_ALL" }, +]); + +/** + * @generated from message gitpod.v1.ListOrganizationsResponse */ export class ListOrganizationsResponse extends Message { /** - * @generated from field: repeated gitpod.experimental.v2.Organization organizations = 1; + * organizations are the organizations that matched the query + * + * @generated from field: repeated gitpod.v1.Organization organizations = 1; */ organizations: Organization[] = []; /** - * @generated from field: gitpod.experimental.v2.PaginationResponse pagination = 2; + * pagination contains the pagination options for listing organizations + * + * @generated from field: gitpod.v1.PaginationResponse pagination = 2; */ pagination?: PaginationResponse; @@ -647,7 +713,7 @@ export class ListOrganizationsResponse extends Message [ { no: 1, name: "organizations", kind: "message", T: Organization, repeated: true }, { no: 2, name: "pagination", kind: "message", T: PaginationResponse }, @@ -671,7 +737,7 @@ export class ListOrganizationsResponse extends Message { /** @@ -687,7 +753,7 @@ export class DeleteOrganizationRequest extends Message [ { no: 1, name: "organization_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, ]); @@ -710,7 +776,7 @@ export class DeleteOrganizationRequest extends Message { constructor(data?: PartialMessage) { @@ -719,7 +785,7 @@ export class DeleteOrganizationResponse extends Message [ ]); @@ -741,10 +807,12 @@ export class DeleteOrganizationResponse extends Message { /** + * organization_id is the ID of the organization to retrieve the invitation + * * @generated from field: string organization_id = 1; */ organizationId = ""; @@ -755,7 +823,7 @@ export class GetOrganizationInvitationRequest extends Message [ { no: 1, name: "organization_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, ]); @@ -778,7 +846,7 @@ export class GetOrganizationInvitationRequest extends Message { /** @@ -794,7 +862,7 @@ export class GetOrganizationInvitationResponse extends Message [ { no: 1, name: "invitation_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, ]); @@ -817,7 +885,7 @@ export class GetOrganizationInvitationResponse extends Message { /** @@ -833,7 +901,7 @@ export class JoinOrganizationRequest extends Message { } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "gitpod.experimental.v2.JoinOrganizationRequest"; + static readonly typeName = "gitpod.v1.JoinOrganizationRequest"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "invitation_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, ]); @@ -856,7 +924,7 @@ export class JoinOrganizationRequest extends Message { } /** - * @generated from message gitpod.experimental.v2.JoinOrganizationResponse + * @generated from message gitpod.v1.JoinOrganizationResponse */ export class JoinOrganizationResponse extends Message { /** @@ -872,7 +940,7 @@ export class JoinOrganizationResponse extends Message } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "gitpod.experimental.v2.JoinOrganizationResponse"; + static readonly typeName = "gitpod.v1.JoinOrganizationResponse"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "organization_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, ]); @@ -895,10 +963,12 @@ export class JoinOrganizationResponse extends Message } /** - * @generated from message gitpod.experimental.v2.ResetOrganizationInvitationRequest + * @generated from message gitpod.v1.ResetOrganizationInvitationRequest */ export class ResetOrganizationInvitationRequest extends Message { /** + * organization_id is the ID of the organization to reset the invitation for. + * * @generated from field: string organization_id = 1; */ organizationId = ""; @@ -909,7 +979,7 @@ export class ResetOrganizationInvitationRequest extends Message [ { no: 1, name: "organization_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, ]); @@ -932,7 +1002,7 @@ export class ResetOrganizationInvitationRequest extends Message { /** @@ -948,7 +1018,7 @@ export class ResetOrganizationInvitationResponse extends Message [ { no: 1, name: "invitation_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, ]); @@ -971,18 +1041,19 @@ export class ResetOrganizationInvitationResponse extends Message { /** - * organization_id is the ID of the organization that contains the members to list + * organization_id is the ID of the organization that contains the members to + * list * * @generated from field: string organization_id = 1; */ organizationId = ""; /** - * @generated from field: gitpod.experimental.v2.PaginationRequest pagination = 2; + * @generated from field: gitpod.v1.PaginationRequest pagination = 2; */ pagination?: PaginationRequest; @@ -992,7 +1063,7 @@ export class ListOrganizationMembersRequest extends Message [ { no: 1, name: "organization_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, { no: 2, name: "pagination", kind: "message", T: PaginationRequest }, @@ -1016,18 +1087,18 @@ export class ListOrganizationMembersRequest extends Message { /** * members are the organization members of this Organization * - * @generated from field: repeated gitpod.experimental.v2.OrganizationMember members = 1; + * @generated from field: repeated gitpod.v1.OrganizationMember members = 1; */ members: OrganizationMember[] = []; /** - * @generated from field: gitpod.experimental.v2.PaginationResponse pagination = 2; + * @generated from field: gitpod.v1.PaginationResponse pagination = 2; */ pagination?: PaginationResponse; @@ -1037,7 +1108,7 @@ export class ListOrganizationMembersResponse extends Message [ { no: 1, name: "members", kind: "message", T: OrganizationMember, repeated: true }, { no: 2, name: "pagination", kind: "message", T: PaginationResponse }, @@ -1061,11 +1132,12 @@ export class ListOrganizationMembersResponse extends Message { /** - * organization_id is the ID of the organization in which the role is to be updated + * organization_id is the ID of the organization in which the role is to be + * updated * * @generated from field: string organization_id = 1; */ @@ -1081,7 +1153,7 @@ export class UpdateOrganizationMemberRequest extends Message [ { no: 1, name: "organization_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, { no: 2, name: "user_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, @@ -1116,17 +1188,25 @@ export class UpdateOrganizationMemberRequest extends Message { + /** + * member is the updated organization member + * + * @generated from field: gitpod.v1.OrganizationMember member = 1; + */ + member?: OrganizationMember; + constructor(data?: PartialMessage) { super(); proto3.util.initPartial(data, this); } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "gitpod.experimental.v2.UpdateOrganizationMemberResponse"; + static readonly typeName = "gitpod.v1.UpdateOrganizationMemberResponse"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "member", kind: "message", T: OrganizationMember }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): UpdateOrganizationMemberResponse { @@ -1147,11 +1227,12 @@ export class UpdateOrganizationMemberResponse extends Message { /** - * organization_id is the ID of the organization in which a member should be deleted. + * organization_id is the ID of the organization in which a member should be + * deleted. * * @generated from field: string organization_id = 1; */ @@ -1170,7 +1251,7 @@ export class DeleteOrganizationMemberRequest extends Message [ { no: 1, name: "organization_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, { no: 2, name: "user_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, @@ -1194,7 +1275,7 @@ export class DeleteOrganizationMemberRequest extends Message { constructor(data?: PartialMessage) { @@ -1203,7 +1284,7 @@ export class DeleteOrganizationMemberResponse extends Message [ ]); diff --git a/components/public-api/typescript/src/gitpod/experimental/v2/pagination_pb.ts b/components/public-api/typescript/src/gitpod/v1/pagination_pb.ts similarity index 89% rename from components/public-api/typescript/src/gitpod/experimental/v2/pagination_pb.ts rename to components/public-api/typescript/src/gitpod/v1/pagination_pb.ts index 66878abf6f55fd..2a332b8fbd61df 100644 --- a/components/public-api/typescript/src/gitpod/experimental/v2/pagination_pb.ts +++ b/components/public-api/typescript/src/gitpod/v1/pagination_pb.ts @@ -5,7 +5,7 @@ */ // @generated by protoc-gen-es v1.3.3 with parameter "target=ts" -// @generated from file gitpod/experimental/v2/pagination.proto (package gitpod.experimental.v2, syntax proto3) +// @generated from file gitpod/v1/pagination.proto (package gitpod.v1, syntax proto3) /* eslint-disable */ // @ts-nocheck @@ -13,7 +13,7 @@ import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialM import { Message, proto3 } from "@bufbuild/protobuf"; /** - * @generated from message gitpod.experimental.v2.PaginationRequest + * @generated from message gitpod.v1.PaginationRequest */ export class PaginationRequest extends Message { /** @@ -39,7 +39,7 @@ export class PaginationRequest extends Message { } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "gitpod.experimental.v2.PaginationRequest"; + static readonly typeName = "gitpod.v1.PaginationRequest"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "page_size", kind: "scalar", T: 5 /* ScalarType.INT32 */ }, { no: 2, name: "page", kind: "scalar", T: 5 /* ScalarType.INT32 */ }, @@ -63,7 +63,7 @@ export class PaginationRequest extends Message { } /** - * @generated from message gitpod.experimental.v2.PaginationResponse + * @generated from message gitpod.v1.PaginationResponse */ export class PaginationResponse extends Message { /** @@ -79,7 +79,7 @@ export class PaginationResponse extends Message { } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "gitpod.experimental.v2.PaginationResponse"; + static readonly typeName = "gitpod.v1.PaginationResponse"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "total", kind: "scalar", T: 5 /* ScalarType.INT32 */ }, ]); diff --git a/components/public-api/typescript/src/gitpod/experimental/v2/workspace_connect.ts b/components/public-api/typescript/src/gitpod/v1/workspace_connect.ts similarity index 73% rename from components/public-api/typescript/src/gitpod/experimental/v2/workspace_connect.ts rename to components/public-api/typescript/src/gitpod/v1/workspace_connect.ts index 2ad2ebe1b94fdf..a7083d3280b2f5 100644 --- a/components/public-api/typescript/src/gitpod/experimental/v2/workspace_connect.ts +++ b/components/public-api/typescript/src/gitpod/v1/workspace_connect.ts @@ -5,7 +5,7 @@ */ // @generated by protoc-gen-connect-es v1.1.2 with parameter "target=ts" -// @generated from file gitpod/experimental/v2/workspace.proto (package gitpod.experimental.v2, syntax proto3) +// @generated from file gitpod/v1/workspace.proto (package gitpod.v1, syntax proto3) /* eslint-disable */ // @ts-nocheck @@ -13,10 +13,10 @@ import { GetWorkspaceRequest, GetWorkspaceResponse } from "./workspace_pb.js"; import { MethodKind } from "@bufbuild/protobuf"; /** - * @generated from service gitpod.experimental.v2.WorkspaceService + * @generated from service gitpod.v1.WorkspaceService */ export const WorkspaceService = { - typeName: "gitpod.experimental.v2.WorkspaceService", + typeName: "gitpod.v1.WorkspaceService", methods: { /** * GetWorkspace returns a single workspace. @@ -24,7 +24,7 @@ export const WorkspaceService = { * +return NOT_FOUND User does not have access to a workspace with the given * ID +return NOT_FOUND Workspace does not exist * - * @generated from rpc gitpod.experimental.v2.WorkspaceService.GetWorkspace + * @generated from rpc gitpod.v1.WorkspaceService.GetWorkspace */ getWorkspace: { name: "GetWorkspace", diff --git a/components/public-api/typescript/src/gitpod/experimental/v2/workspace_pb.ts b/components/public-api/typescript/src/gitpod/v1/workspace_pb.ts similarity index 89% rename from components/public-api/typescript/src/gitpod/experimental/v2/workspace_pb.ts rename to components/public-api/typescript/src/gitpod/v1/workspace_pb.ts index 7f0302759f9089..121c98b588b8c7 100644 --- a/components/public-api/typescript/src/gitpod/experimental/v2/workspace_pb.ts +++ b/components/public-api/typescript/src/gitpod/v1/workspace_pb.ts @@ -5,7 +5,7 @@ */ // @generated by protoc-gen-es v1.3.3 with parameter "target=ts" -// @generated from file gitpod/experimental/v2/workspace.proto (package gitpod.experimental.v2, syntax proto3) +// @generated from file gitpod/v1/workspace.proto (package gitpod.v1, syntax proto3) /* eslint-disable */ // @ts-nocheck @@ -15,7 +15,7 @@ import { Message, proto3, protoInt64, Timestamp } from "@bufbuild/protobuf"; /** * Admission level describes who can access a workspace instance and its ports. * - * @generated from enum gitpod.experimental.v2.AdmissionLevel + * @generated from enum gitpod.v1.AdmissionLevel */ export enum AdmissionLevel { /** @@ -40,14 +40,14 @@ export enum AdmissionLevel { EVERYONE = 2, } // Retrieve enum metadata with: proto3.getEnumType(AdmissionLevel) -proto3.util.setEnumType(AdmissionLevel, "gitpod.experimental.v2.AdmissionLevel", [ +proto3.util.setEnumType(AdmissionLevel, "gitpod.v1.AdmissionLevel", [ { no: 0, name: "ADMISSION_LEVEL_UNSPECIFIED" }, { no: 1, name: "ADMISSION_LEVEL_OWNER_ONLY" }, { no: 2, name: "ADMISSION_LEVEL_EVERYONE" }, ]); /** - * @generated from message gitpod.experimental.v2.GetWorkspaceRequest + * @generated from message gitpod.v1.GetWorkspaceRequest */ export class GetWorkspaceRequest extends Message { /** @@ -61,7 +61,7 @@ export class GetWorkspaceRequest extends Message { } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "gitpod.experimental.v2.GetWorkspaceRequest"; + static readonly typeName = "gitpod.v1.GetWorkspaceRequest"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, ]); @@ -84,11 +84,11 @@ export class GetWorkspaceRequest extends Message { } /** - * @generated from message gitpod.experimental.v2.GetWorkspaceResponse + * @generated from message gitpod.v1.GetWorkspaceResponse */ export class GetWorkspaceResponse extends Message { /** - * @generated from field: gitpod.experimental.v2.Workspace item = 1; + * @generated from field: gitpod.v1.Workspace item = 1; */ item?: Workspace; @@ -98,7 +98,7 @@ export class GetWorkspaceResponse extends Message { } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "gitpod.experimental.v2.GetWorkspaceResponse"; + static readonly typeName = "gitpod.v1.GetWorkspaceResponse"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "item", kind: "message", T: Workspace }, ]); @@ -123,7 +123,7 @@ export class GetWorkspaceResponse extends Message { /** * +resource get workspace * - * @generated from message gitpod.experimental.v2.Workspace + * @generated from message gitpod.v1.Workspace */ export class Workspace extends Message { /** @@ -155,7 +155,7 @@ export class Workspace extends Message { pinned = false; /** - * @generated from field: gitpod.experimental.v2.WorkspaceStatus status = 6; + * @generated from field: gitpod.v1.WorkspaceStatus status = 6; */ status?: WorkspaceStatus; @@ -166,7 +166,7 @@ export class Workspace extends Message { * * +optional * - * @generated from field: repeated gitpod.experimental.v2.WorkspaceEnvironmentVariable additional_environment_variables = 7; + * @generated from field: repeated gitpod.v1.WorkspaceEnvironmentVariable additional_environment_variables = 7; */ additionalEnvironmentVariables: WorkspaceEnvironmentVariable[] = []; @@ -198,7 +198,7 @@ export class Workspace extends Message { * * +optional defaults to the default editor of the user * - * @generated from field: optional gitpod.experimental.v2.EditorReference editor = 10; + * @generated from field: optional gitpod.v1.EditorReference editor = 10; */ editor?: EditorReference; @@ -225,7 +225,7 @@ export class Workspace extends Message { } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "gitpod.experimental.v2.Workspace"; + static readonly typeName = "gitpod.v1.Workspace"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, { no: 2, name: "prebuild", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, @@ -259,7 +259,7 @@ export class Workspace extends Message { } /** - * @generated from message gitpod.experimental.v2.WorkspaceStatus + * @generated from message gitpod.v1.WorkspaceStatus */ export class WorkspaceStatus extends Message { /** @@ -268,7 +268,7 @@ export class WorkspaceStatus extends Message { * observations of the workspace state, nor is it intended to be a * comprehensive state machine. * - * @generated from field: gitpod.experimental.v2.WorkspacePhase phase = 1; + * @generated from field: gitpod.v1.WorkspacePhase phase = 1; */ phase?: WorkspacePhase; @@ -292,21 +292,21 @@ export class WorkspaceStatus extends Message { * Note: this is a best-effort field and more often than not will not be * present. Its absence does not indicate the absence of a working copy. * - * @generated from field: gitpod.experimental.v2.WorkspaceGitStatus git_status = 4; + * @generated from field: gitpod.v1.WorkspaceGitStatus git_status = 4; */ gitStatus?: WorkspaceGitStatus; /** * ports lists the network ports currently available/known of this workspace * - * @generated from field: repeated gitpod.experimental.v2.WorkspacePort ports = 5; + * @generated from field: repeated gitpod.v1.WorkspacePort ports = 5; */ ports: WorkspacePort[] = []; /** * Admission describes who can access a workspace instance and its ports. * - * @generated from field: gitpod.experimental.v2.AdmissionLevel admission = 6; + * @generated from field: gitpod.v1.AdmissionLevel admission = 6; */ admission = AdmissionLevel.UNSPECIFIED; @@ -320,7 +320,7 @@ export class WorkspaceStatus extends Message { /** * Conditions contains observations of the workspace's current phase. * - * @generated from field: gitpod.experimental.v2.WorkspaceConditions conditions = 8; + * @generated from field: gitpod.v1.WorkspaceConditions conditions = 8; */ conditions?: WorkspaceConditions; @@ -330,7 +330,7 @@ export class WorkspaceStatus extends Message { } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "gitpod.experimental.v2.WorkspaceStatus"; + static readonly typeName = "gitpod.v1.WorkspaceStatus"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "phase", kind: "message", T: WorkspacePhase }, { no: 2, name: "message", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, @@ -360,7 +360,7 @@ export class WorkspaceStatus extends Message { } /** - * @generated from message gitpod.experimental.v2.WorkspaceConditions + * @generated from message gitpod.v1.WorkspaceConditions */ export class WorkspaceConditions extends Message { /** @@ -385,7 +385,7 @@ export class WorkspaceConditions extends Message { } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "gitpod.experimental.v2.WorkspaceConditions"; + static readonly typeName = "gitpod.v1.WorkspaceConditions"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "failed", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, { no: 2, name: "timeout", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, @@ -409,7 +409,7 @@ export class WorkspaceConditions extends Message { } /** - * @generated from message gitpod.experimental.v2.WorkspacePort + * @generated from message gitpod.v1.WorkspacePort */ export class WorkspacePort extends Message { /** @@ -422,7 +422,7 @@ export class WorkspacePort extends Message { /** * policy of this port * - * @generated from field: gitpod.experimental.v2.WorkspacePort.Policy policy = 2; + * @generated from field: gitpod.v1.WorkspacePort.Policy policy = 2; */ policy = WorkspacePort_Policy.UNSPECIFIED; @@ -436,7 +436,7 @@ export class WorkspacePort extends Message { /** * backend protocol of this port * - * @generated from field: gitpod.experimental.v2.WorkspacePort.Protocol protocol = 4; + * @generated from field: gitpod.v1.WorkspacePort.Protocol protocol = 4; */ protocol = WorkspacePort_Protocol.UNSPECIFIED; @@ -446,7 +446,7 @@ export class WorkspacePort extends Message { } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "gitpod.experimental.v2.WorkspacePort"; + static readonly typeName = "gitpod.v1.WorkspacePort"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "port", kind: "scalar", T: 4 /* ScalarType.UINT64 */ }, { no: 2, name: "policy", kind: "enum", T: proto3.getEnumType(WorkspacePort_Policy) }, @@ -475,7 +475,7 @@ export class WorkspacePort extends Message { * Policy defines the accssbility policy of a workspace port is guarded by an * authentication in the proxy * - * @generated from enum gitpod.experimental.v2.WorkspacePort.Policy + * @generated from enum gitpod.v1.WorkspacePort.Policy */ export enum WorkspacePort_Policy { /** @@ -500,7 +500,7 @@ export enum WorkspacePort_Policy { PUBLIC = 2, } // Retrieve enum metadata with: proto3.getEnumType(WorkspacePort_Policy) -proto3.util.setEnumType(WorkspacePort_Policy, "gitpod.experimental.v2.WorkspacePort.Policy", [ +proto3.util.setEnumType(WorkspacePort_Policy, "gitpod.v1.WorkspacePort.Policy", [ { no: 0, name: "POLICY_UNSPECIFIED" }, { no: 1, name: "POLICY_PRIVATE" }, { no: 2, name: "POLICY_PUBLIC" }, @@ -509,7 +509,7 @@ proto3.util.setEnumType(WorkspacePort_Policy, "gitpod.experimental.v2.WorkspaceP /** * Protocol defines the backend protocol of port * - * @generated from enum gitpod.experimental.v2.WorkspacePort.Protocol + * @generated from enum gitpod.v1.WorkspacePort.Protocol */ export enum WorkspacePort_Protocol { /** @@ -532,14 +532,14 @@ export enum WorkspacePort_Protocol { HTTPS = 2, } // Retrieve enum metadata with: proto3.getEnumType(WorkspacePort_Protocol) -proto3.util.setEnumType(WorkspacePort_Protocol, "gitpod.experimental.v2.WorkspacePort.Protocol", [ +proto3.util.setEnumType(WorkspacePort_Protocol, "gitpod.v1.WorkspacePort.Protocol", [ { no: 0, name: "PROTOCOL_UNSPECIFIED" }, { no: 1, name: "PROTOCOL_HTTP" }, { no: 2, name: "PROTOCOL_HTTPS" }, ]); /** - * @generated from message gitpod.experimental.v2.WorkspaceGitStatus + * @generated from message gitpod.v1.WorkspaceGitStatus */ export class WorkspaceGitStatus extends Message { /** @@ -614,7 +614,7 @@ export class WorkspaceGitStatus extends Message { } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "gitpod.experimental.v2.WorkspaceGitStatus"; + static readonly typeName = "gitpod.v1.WorkspaceGitStatus"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "clone_url", kind: "scalar", T: 9 /* ScalarType.STRING */ }, { no: 2, name: "branch", kind: "scalar", T: 9 /* ScalarType.STRING */ }, @@ -645,11 +645,11 @@ export class WorkspaceGitStatus extends Message { } /** - * @generated from message gitpod.experimental.v2.WorkspacePhase + * @generated from message gitpod.v1.WorkspacePhase */ export class WorkspacePhase extends Message { /** - * @generated from field: gitpod.experimental.v2.WorkspacePhase.Phase name = 1; + * @generated from field: gitpod.v1.WorkspacePhase.Phase name = 1; */ name = WorkspacePhase_Phase.UNSPECIFIED; @@ -664,7 +664,7 @@ export class WorkspacePhase extends Message { } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "gitpod.experimental.v2.WorkspacePhase"; + static readonly typeName = "gitpod.v1.WorkspacePhase"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "name", kind: "enum", T: proto3.getEnumType(WorkspacePhase_Phase) }, { no: 2, name: "last_transition_time", kind: "message", T: Timestamp }, @@ -688,7 +688,7 @@ export class WorkspacePhase extends Message { } /** - * @generated from enum gitpod.experimental.v2.WorkspacePhase.Phase + * @generated from enum gitpod.v1.WorkspacePhase.Phase */ export enum WorkspacePhase_Phase { /** @@ -779,7 +779,7 @@ export enum WorkspacePhase_Phase { STOPPED = 9, } // Retrieve enum metadata with: proto3.getEnumType(WorkspacePhase_Phase) -proto3.util.setEnumType(WorkspacePhase_Phase, "gitpod.experimental.v2.WorkspacePhase.Phase", [ +proto3.util.setEnumType(WorkspacePhase_Phase, "gitpod.v1.WorkspacePhase.Phase", [ { no: 0, name: "PHASE_UNSPECIFIED" }, { no: 1, name: "PHASE_PREPARING" }, { no: 2, name: "PHASE_IMAGEBUILD" }, @@ -793,7 +793,7 @@ proto3.util.setEnumType(WorkspacePhase_Phase, "gitpod.experimental.v2.WorkspaceP ]); /** - * @generated from message gitpod.experimental.v2.EditorReference + * @generated from message gitpod.v1.EditorReference */ export class EditorReference extends Message { /** @@ -812,7 +812,7 @@ export class EditorReference extends Message { } static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "gitpod.experimental.v2.EditorReference"; + static readonly typeName = "gitpod.v1.EditorReference"; static readonly fields: FieldList = proto3.util.newFieldList(() => [ { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, { no: 2, name: "version", kind: "scalar", T: 9 /* ScalarType.STRING */ }, @@ -836,7 +836,7 @@ export class EditorReference extends Message { } /** - * @generated from message gitpod.experimental.v2.WorkspaceEnvironmentVariable + * @generated from message gitpod.v1.WorkspaceEnvironmentVariable */ export class WorkspaceEnvironmentVariable extends Message { /** @@ -855,7 +855,7 @@ export class WorkspaceEnvironmentVariable extends Message [ { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, { no: 2, name: "value", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, diff --git a/components/server/src/api/organization-service-api.ts b/components/server/src/api/organization-service-api.ts index 76001530df3a7d..35ecb1d7743da3 100644 --- a/components/server/src/api/organization-service-api.ts +++ b/components/server/src/api/organization-service-api.ts @@ -6,7 +6,7 @@ import { HandlerContext, ServiceImpl } from "@connectrpc/connect"; import { inject, injectable } from "inversify"; -import { OrganizationService as OrganizationServiceInterface } from "@gitpod/public-api/lib/gitpod/experimental/v2/organization_connect"; +import { OrganizationService as OrganizationServiceInterface } from "@gitpod/public-api/lib/gitpod/v1/organization_connect"; import { CreateOrganizationRequest, CreateOrganizationResponse, @@ -34,10 +34,11 @@ import { GetOrganizationSettingsResponse, UpdateOrganizationSettingsRequest, UpdateOrganizationSettingsResponse, -} from "@gitpod/public-api/lib/gitpod/experimental/v2/organization_pb"; + ListOrganizationsRequest_Scope, +} from "@gitpod/public-api/lib/gitpod/v1/organization_pb"; import { PublicAPIConverter } from "@gitpod/gitpod-protocol/lib/public-api-converter"; import { OrganizationService } from "../orgs/organization-service"; -import { PaginationResponse } from "@gitpod/public-api/lib/gitpod/experimental/v2/pagination_pb"; +import { PaginationResponse } from "@gitpod/public-api/lib/gitpod/v1/pagination_pb"; @injectable() export class OrganizationServiceAPI implements ServiceImpl { @@ -69,20 +70,26 @@ export class OrganizationServiceAPI implements ServiceImpl { - await this.orgService.updateOrganization(context.user.id, req.organizationId, { + const org = await this.orgService.updateOrganization(context.user.id, req.organizationId, { name: req.name, }); - return new UpdateOrganizationResponse(); + return new UpdateOrganizationResponse({ + organization: this.apiConverter.toOrganization(org), + }); } async listOrganizations( req: ListOrganizationsRequest, context: HandlerContext, ): Promise { - const orgs = await this.orgService.listOrganizations(context.user.id, { - limit: req.pagination?.pageSize || 100, - offset: (req.pagination?.page || 0) * (req.pagination?.pageSize || 0), - }); + const orgs = await this.orgService.listOrganizations( + context.user.id, + { + limit: req.pagination?.pageSize || 100, + offset: (req.pagination?.page || 0) * (req.pagination?.pageSize || 0), + }, + req.scope === ListOrganizationsRequest_Scope.ALL ? "installation" : "member", + ); const response = new ListOrganizationsResponse(); response.organizations = orgs.rows.map((org) => this.apiConverter.toOrganization(org)); response.pagination = new PaginationResponse(); @@ -148,7 +155,12 @@ export class OrganizationServiceAPI implements ServiceImpl members.find((member) => member.userId === req.userId)); + return new UpdateOrganizationMemberResponse({ + member: member && this.apiConverter.toOrganizationMember(member), + }); } async deleteOrganizationMember( @@ -173,10 +185,12 @@ export class OrganizationServiceAPI implements ServiceImpl { - await this.orgService.updateSettings(context.user.id, req.organizationId, { + const settings = await this.orgService.updateSettings(context.user.id, req.organizationId, { workspaceSharingDisabled: req.settings?.workspaceSharingDisabled, defaultWorkspaceImage: req.settings?.defaultWorkspaceImage, }); - return new UpdateOrganizationSettingsResponse(); + return new UpdateOrganizationSettingsResponse({ + settings: this.apiConverter.toOrganizationSettings(settings), + }); } } diff --git a/components/server/src/api/server.ts b/components/server/src/api/server.ts index d7477e13b3a8a0..a155039ade3179 100644 --- a/components/server/src/api/server.ts +++ b/components/server/src/api/server.ts @@ -4,39 +4,41 @@ * See License.AGPL.txt in the project root for license information. */ +import { MethodKind, ServiceType } from "@bufbuild/protobuf"; import { Code, ConnectError, ConnectRouter, HandlerContext, ServiceImpl } from "@connectrpc/connect"; import { expressConnectMiddleware } from "@connectrpc/connect-express"; -import { MethodKind, ServiceType } from "@bufbuild/protobuf"; +import { User } from "@gitpod/gitpod-protocol"; +import { ApplicationError, ErrorCodes } from "@gitpod/gitpod-protocol/lib/messaging/error"; import { PublicAPIConverter } from "@gitpod/gitpod-protocol/lib/public-api-converter"; import { log } from "@gitpod/gitpod-protocol/lib/util/logging"; import { HelloService } from "@gitpod/public-api/lib/gitpod/experimental/v1/dummy_connect"; import { StatsService } from "@gitpod/public-api/lib/gitpod/experimental/v1/stats_connect"; import { TeamsService as TeamsServiceDefinition } from "@gitpod/public-api/lib/gitpod/experimental/v1/teams_connect"; import { UserService as UserServiceDefinition } from "@gitpod/public-api/lib/gitpod/experimental/v1/user_connect"; -import { WorkspaceService } from "@gitpod/public-api/lib/gitpod/experimental/v2/workspace_connect"; +import { OrganizationService } from "@gitpod/public-api/lib/gitpod/v1/organization_connect"; +import { WorkspaceService } from "@gitpod/public-api/lib/gitpod/v1/workspace_connect"; import express from "express"; import * as http from "http"; import { decorate, inject, injectable, interfaces } from "inversify"; +import { Redis } from "ioredis"; import { AddressInfo } from "net"; import { performance } from "perf_hooks"; +import { IRateLimiterOptions, RateLimiterMemory, RateLimiterRedis, RateLimiterRes } from "rate-limiter-flexible"; import { v4 } from "uuid"; import { isFgaChecksEnabled } from "../authorization/authorizer"; +import { Config } from "../config"; import { grpcServerHandled, grpcServerHandling, grpcServerStarted } from "../prometheus-metrics"; import { SessionHandler } from "../session-handler"; +import { UserService } from "../user/user-service"; import { LogContextOptions, runWithLogContext } from "../util/log-context"; import { wrapAsyncGenerator } from "../util/request-context"; -import { HelloServiceAPI as HelloServiceAPI } from "./hello-service-api"; +import { HelloServiceAPI } from "./hello-service-api"; +import { OrganizationServiceAPI } from "./organization-service-api"; +import { RateLimited } from "./rate-limited"; import { APIStatsService as StatsServiceAPI } from "./stats"; import { APITeamsService as TeamsServiceAPI } from "./teams"; import { APIUserService as UserServiceAPI } from "./user"; import { WorkspaceServiceAPI } from "./workspace-service-api"; -import { IRateLimiterOptions, RateLimiterMemory, RateLimiterRedis, RateLimiterRes } from "rate-limiter-flexible"; -import { Redis } from "ioredis"; -import { RateLimited } from "./rate-limited"; -import { Config } from "../config"; -import { ApplicationError, ErrorCodes } from "@gitpod/gitpod-protocol/lib/messaging/error"; -import { UserService } from "../user/user-service"; -import { User } from "@gitpod/gitpod-protocol"; decorate(injectable(), PublicAPIConverter); @@ -48,7 +50,8 @@ function service(type: T, impl: ServiceImpl): [T, Serv export class API { @inject(UserServiceAPI) private readonly userServiceApi: UserServiceAPI; @inject(TeamsServiceAPI) private readonly teamServiceApi: TeamsServiceAPI; - @inject(WorkspaceServiceAPI) private readonly workspacesServiceApi: WorkspaceServiceAPI; + @inject(WorkspaceServiceAPI) private readonly workspaceServiceApi: WorkspaceServiceAPI; + @inject(OrganizationServiceAPI) private readonly organizationServiceApi: OrganizationServiceAPI; @inject(StatsServiceAPI) private readonly tatsServiceApi: StatsServiceAPI; @inject(HelloServiceAPI) private readonly helloServiceApi: HelloServiceAPI; @inject(SessionHandler) private readonly sessionHandler: SessionHandler; @@ -97,7 +100,8 @@ export class API { routes: (router: ConnectRouter) => { for (const [type, impl] of [ service(HelloService, this.helloServiceApi), - service(WorkspaceService, this.workspacesServiceApi), + service(WorkspaceService, this.workspaceServiceApi), + service(OrganizationService, this.organizationServiceApi), ]) { router.service(type, new Proxy(impl, this.interceptService(type))); } @@ -294,6 +298,7 @@ export class API { bind(UserServiceAPI).toSelf().inSingletonScope(); bind(TeamsServiceAPI).toSelf().inSingletonScope(); bind(WorkspaceServiceAPI).toSelf().inSingletonScope(); + bind(OrganizationServiceAPI).toSelf().inSingletonScope(); bind(StatsServiceAPI).toSelf().inSingletonScope(); bind(API).toSelf().inSingletonScope(); } diff --git a/components/server/src/api/teams.spec.db.ts b/components/server/src/api/teams.spec.db.ts index a452d5be728610..a15a8a74e45c33 100644 --- a/components/server/src/api/teams.spec.db.ts +++ b/components/server/src/api/teams.spec.db.ts @@ -24,6 +24,7 @@ import { SessionHandler } from "../session-handler"; import { Redis } from "ioredis"; import { UserService } from "../user/user-service"; import { Config } from "../config"; +import { OrganizationService } from "../orgs/organization-service"; const expect = chai.expect; @@ -40,6 +41,7 @@ export class APITeamsServiceSpec { API.bindAPI(this.container.bind.bind(this.container)); this.container.bind(WorkspaceService).toConstantValue({} as WorkspaceService); + this.container.bind(OrganizationService).toConstantValue({} as OrganizationService); this.container.bind(UserAuthentication).toConstantValue({} as UserAuthentication); this.container.bind(SessionHandler).toConstantValue({} as SessionHandler); this.container.bind(Config).toConstantValue({} as Config); diff --git a/components/server/src/api/workspace-service-api.ts b/components/server/src/api/workspace-service-api.ts index 95860ac5667216..dbfed1576cdaf7 100644 --- a/components/server/src/api/workspace-service-api.ts +++ b/components/server/src/api/workspace-service-api.ts @@ -5,8 +5,8 @@ */ import { HandlerContext, ServiceImpl } from "@connectrpc/connect"; -import { WorkspaceService as WorkspaceServiceInterface } from "@gitpod/public-api/lib/gitpod/experimental/v2/workspace_connect"; -import { GetWorkspaceRequest, GetWorkspaceResponse } from "@gitpod/public-api/lib/gitpod/experimental/v2/workspace_pb"; +import { WorkspaceService as WorkspaceServiceInterface } from "@gitpod/public-api/lib/gitpod/v1/workspace_connect"; +import { GetWorkspaceRequest, GetWorkspaceResponse } from "@gitpod/public-api/lib/gitpod/v1/workspace_pb"; import { inject, injectable } from "inversify"; import { WorkspaceService } from "../workspace/workspace-service"; import { PublicAPIConverter } from "@gitpod/gitpod-protocol/lib/public-api-converter"; diff --git a/components/server/src/orgs/organization-service.spec.db.ts b/components/server/src/orgs/organization-service.spec.db.ts index a650b5bafb2e8c..af58a99fd06093 100644 --- a/components/server/src/orgs/organization-service.spec.db.ts +++ b/components/server/src/orgs/organization-service.spec.db.ts @@ -4,7 +4,7 @@ * See License.AGPL.txt in the project root for license information. */ -import { BUILTIN_INSTLLATION_ADMIN_USER_ID, TypeORM, UserDB } from "@gitpod/gitpod-db/lib"; +import { BUILTIN_INSTLLATION_ADMIN_USER_ID, TypeORM } from "@gitpod/gitpod-db/lib"; import { Organization, User } from "@gitpod/gitpod-protocol"; import { Experiments } from "@gitpod/gitpod-protocol/lib/experiments/configcat-server"; import { ErrorCodes } from "@gitpod/gitpod-protocol/lib/messaging/error"; @@ -15,6 +15,7 @@ import { createTestContainer } from "../test/service-testing-container-module"; import { OrganizationService } from "./organization-service"; import { resetDB } from "@gitpod/gitpod-db/lib/test/reset-db"; import { expectError } from "../test/expect-utils"; +import { UserService } from "../user/user-service"; const expect = chai.expect; @@ -25,7 +26,7 @@ describe("OrganizationService", async () => { let owner: User; let member: User; let stranger: User; - let admin: User; + const adminId = BUILTIN_INSTLLATION_ADMIN_USER_ID; let org: Organization; beforeEach(async () => { @@ -34,21 +35,33 @@ describe("OrganizationService", async () => { centralizedPermissions: true, }); os = container.get(OrganizationService); - const userDB = container.get(UserDB); - owner = await userDB.newUser(); + const userService = container.get(UserService); + owner = await userService.createUser({ + identity: { + authId: "github|1234", + authName: "github", + authProviderId: "github", + }, + }); org = await os.createOrganization(owner.id, "myorg"); const invite = await os.getOrCreateInvite(owner.id, org.id); - member = await userDB.newUser(); + member = await userService.createUser({ + identity: { + authId: "github|1234", + authName: "github", + authProviderId: "github", + }, + }); await os.joinOrganization(member.id, invite.id); - stranger = await userDB.newUser(); - - const adminUser = await userDB.findUserById(BUILTIN_INSTLLATION_ADMIN_USER_ID)!; - if (!adminUser) { - throw new Error("admin user not found"); - } - admin = adminUser; + stranger = await userService.createUser({ + identity: { + authId: "github|1234", + authName: "github", + authProviderId: "github", + }, + }); }); afterEach(async () => { @@ -140,10 +153,11 @@ describe("OrganizationService", async () => { await os.createOrganization(owner.id, "org2"); let orgs = await os.listOrganizationsByMember(owner.id, owner.id); expect(orgs.length).to.eq(3); - orgs = await os.listOrganizationsByMember(member.id, owner.id); + orgs = await os.listOrganizationsByMember(member.id, member.id); expect(orgs.length).to.eq(1); - orgs = await os.listOrganizationsByMember(stranger.id, owner.id); + orgs = await os.listOrganizationsByMember(stranger.id, stranger.id); expect(orgs.length).to.eq(0); + await expectError(ErrorCodes.NOT_FOUND, os.listOrganizationsByMember(stranger.id, owner.id)); }); it("should getOrganization", async () => { @@ -182,21 +196,21 @@ describe("OrganizationService", async () => { }); it("should allow admins to do its thing", async () => { - await os.updateOrganization(admin.id, org.id, { name: "Name Changed" }); - const updated = await os.getOrganization(admin.id, org.id); + await os.updateOrganization(adminId, org.id, { name: "Name Changed" }); + const updated = await os.getOrganization(adminId, org.id); expect(updated.name).to.equal("Name Changed"); - await os.updateSettings(admin.id, org.id, { workspaceSharingDisabled: true }); - const settings = await os.getSettings(admin.id, org.id); + await os.updateSettings(adminId, org.id, { workspaceSharingDisabled: true }); + const settings = await os.getSettings(adminId, org.id); expect(settings.workspaceSharingDisabled).to.be.true; }); it("should remove the admin on first join", async () => { - const myOrg = await os.createOrganization(BUILTIN_INSTLLATION_ADMIN_USER_ID, "My Org"); - expect((await os.listMembers(BUILTIN_INSTLLATION_ADMIN_USER_ID, myOrg.id)).length).to.eq(1); + const myOrg = await os.createOrganization(adminId, "My Org"); + expect((await os.listMembers(adminId, myOrg.id)).length).to.eq(1); // add a another member which should become owner - await os.addOrUpdateMember(BUILTIN_INSTLLATION_ADMIN_USER_ID, myOrg.id, owner.id, "member"); + await os.addOrUpdateMember(adminId, myOrg.id, owner.id, "member"); // admin should have been removed const members = await os.listMembers(owner.id, myOrg.id); expect(members.length).to.eq(1); @@ -205,15 +219,15 @@ describe("OrganizationService", async () => { it("should listOrganizations", async () => { const strangerOrg = await os.createOrganization(stranger.id, "stranger-org"); - let orgs = await os.listOrganizations(owner.id, {}); + let orgs = await os.listOrganizations(owner.id, {}, "installation"); expect(orgs.rows[0].id).to.eq(org.id); expect(orgs.total).to.eq(1); - orgs = await os.listOrganizations(stranger.id, {}); + orgs = await os.listOrganizations(stranger.id, {}, "installation"); expect(orgs.rows[0].id).to.eq(strangerOrg.id); expect(orgs.total).to.eq(1); - orgs = await os.listOrganizations(admin.id, {}); + orgs = await os.listOrganizations(adminId, {}, "installation"); expect(orgs.rows.some((org) => org.id === org.id)).to.be.true; expect(orgs.rows.some((org) => org.id === strangerOrg.id)).to.be.true; expect(orgs.total).to.eq(2); diff --git a/components/server/src/orgs/organization-service.ts b/components/server/src/orgs/organization-service.ts index 6cfa8bf00cc4b9..39f96c93981ed5 100644 --- a/components/server/src/orgs/organization-service.ts +++ b/components/server/src/orgs/organization-service.ts @@ -39,7 +39,39 @@ export class OrganizationService { orderDir?: "asc" | "desc"; searchTerm?: string; }, + scope?: "member" | "installation", ): Promise<{ total: number; rows: Organization[] }> { + if (scope !== "installation") { + let result = await this.listOrganizationsByMember(userId, userId); + result = result.filter((o) => o.name.toLowerCase().includes((req.searchTerm || "").toLowerCase())); + // apply ordering + if (req.orderBy) { + result.sort((a, b) => { + const aVal = a[req.orderBy!]; + const bVal = b[req.orderBy!]; + if (!aVal && !bVal) { + return 0; + } + if (!aVal) { + return req.orderDir === "asc" ? -1 : 1; + } + if (!bVal) { + return req.orderDir === "asc" ? 1 : -1; + } + if (aVal < bVal) { + return req.orderDir === "asc" ? -1 : 1; + } + if (aVal > bVal) { + return req.orderDir === "asc" ? 1 : -1; + } + return 0; + }); + } + return { + total: result.length, + rows: result.slice(req.offset || 0, (req.offset || 0) + (req.limit || 50)), + }; + } const result = await this.teamDB.findTeams( req.offset || 0, req.limit || 50, @@ -62,7 +94,7 @@ export class OrganizationService { } async listOrganizationsByMember(userId: string, memberId: string): Promise { - //TODO check if user has access to member + await this.auth.checkPermissionOnUser(userId, "read_info", memberId); const orgs = await this.teamDB.findTeamsByUser(memberId); const result: Organization[] = []; for (const org of orgs) {