gitpod/components/public-api/gitpod/v1/installation.proto
Gero Posmyk-Leinemann 7f43d48115
[server, dashboard] Introduce multi-org (behind feature flag) (#20431)
* [server config] Introduce isDedicatedInstallation, and use it to replace isSIngleOrgInstallation

incl. further cleanup around getConfiguration and server config

* [server, dashboard] Remove enableDedicatedOnboardingFlow feature flag and replace is with getInstallationConfiguration.IsDedicatedInstallation

* [dashboard, server] Remove "sinlgeOrgMode"

* [server] OrganizationService: block createTeam consistently for org-owned users

* [server, dashboard] Introduce "enable_multi_org" feature flag to allow admin-user to create organizations

* [dashboard] introduce "/?orgSlug=", which allows to pre-select an org in a "create workspace" URL (e.g. "/?orgSlug=org1#github.com/my/repo")

* [db] Auto-delete container "test-mysql" if it's already present

* fix tests

* [dashboard] Check if localStorage is available before using it

* [dashboard] SSOLogin: fix orgSlug source precedence to: path/search/localStorage

* [server] Deny "joinOrganization" for org-owned users

* Gpl/970-multi-org-tests (#20436)

* fix tests for real

* [server] Create OrgService.createOrgOwnedUser, and use that across tests to fix the "can't join org" permission issues

* Update components/server/src/orgs/organization-service.ts

Co-authored-by: Filip Troníček <filip@gitpod.io>

---------

Co-authored-by: Filip Troníček <filip@gitpod.io>

---------

Co-authored-by: Filip Troníček <filip@gitpod.io>
2024-12-09 08:00:16 -05:00

162 lines
5.1 KiB
Protocol Buffer

syntax = "proto3";
package gitpod.v1;
import "gitpod/v1/pagination.proto";
import "gitpod/v1/sorting.proto";
import "google/protobuf/timestamp.proto";
option go_package = "github.com/gitpod-io/gitpod/components/public-api/go/v1";
option java_package = "io.gitpod.publicapi.v1";
service InstallationService {
// GetInstallationWorkspaceDefaultImage returns the default image for current
// Gitpod Installation.
rpc GetInstallationWorkspaceDefaultImage(GetInstallationWorkspaceDefaultImageRequest) returns (GetInstallationWorkspaceDefaultImageResponse) {}
// ListBlockedRepositories lists blocked repositories.
rpc ListBlockedRepositories(ListBlockedRepositoriesRequest) returns (ListBlockedRepositoriesResponse) {}
// CreateBlockedRepository creates a new blocked repository.
rpc CreateBlockedRepository(CreateBlockedRepositoryRequest) returns (CreateBlockedRepositoryResponse) {}
// DeleteBlockedRepository deletes a blocked repository.
rpc DeleteBlockedRepository(DeleteBlockedRepositoryRequest) returns (DeleteBlockedRepositoryResponse) {}
// ListBlockedEmailDomains lists blocked email domains.
rpc ListBlockedEmailDomains(ListBlockedEmailDomainsRequest) returns (ListBlockedEmailDomainsResponse) {}
// CreateBlockedEmailDomain creates a new blocked email domain.
rpc CreateBlockedEmailDomain(CreateBlockedEmailDomainRequest) returns (CreateBlockedEmailDomainResponse) {}
// GetOnboardingState returns the onboarding state of the installation.
rpc GetOnboardingState(GetOnboardingStateRequest) returns (GetOnboardingStateResponse) {}
// GetInstallationConfiguration returns configuration of the installation.
rpc GetInstallationConfiguration(GetInstallationConfigurationRequest) returns (GetInstallationConfigurationResponse) {}
}
message GetOnboardingStateRequest {}
message GetOnboardingStateResponse {
OnboardingState onboarding_state = 1;
}
message OnboardingState {
// Whether at least one organization has completed the onboarding
bool completed = 1;
// The total number of organizations
int32 organization_count_total = 2;
}
message GetInstallationWorkspaceDefaultImageRequest {}
message GetInstallationWorkspaceDefaultImageResponse {
string default_workspace_image = 1;
}
message ListBlockedRepositoriesRequest {
// pagination contains the pagination options for listing blocked repositories
PaginationRequest pagination = 1;
// sort contains the sort options for listing blocked repositories
// BlockedRepositories can be sorted by "urlRegexp"
repeated Sort sort = 2;
// search_term is a search term to filter blocked repositories by url_regexp
string search_term = 3;
}
message ListBlockedRepositoriesResponse {
// pagination contains the pagination options for listing blocked repositories
PaginationResponse pagination = 1;
// blocked_repositories are the blocked repositories
repeated BlockedRepository blocked_repositories = 2;
}
message CreateBlockedRepositoryRequest {
// url_regexp is the regular expression for the repository URL
string url_regexp = 1;
// block_user indicates if the user should be blocked from accessing the
// repository
bool block_user = 2;
// block_free_usage indicates if a free tier user may not start a workspace on that repository URL
bool block_free_usage = 3;
}
message CreateBlockedRepositoryResponse {
BlockedRepository blocked_repository = 1;
}
message DeleteBlockedRepositoryRequest {
// blocked_repository_id is the ID of the blocked repository
uint32 blocked_repository_id = 1;
}
message DeleteBlockedRepositoryResponse {}
message ListBlockedEmailDomainsRequest {
// pagination contains the pagination options for listing blocked email
// domains
PaginationRequest pagination = 1;
}
message ListBlockedEmailDomainsResponse {
// pagination contains the pagination options for listing blocked email
// domains
PaginationResponse pagination = 1;
// blocked_email_domains are the blocked email domains
repeated BlockedEmailDomain blocked_email_domains = 2;
}
message CreateBlockedEmailDomainRequest {
// domain is the blocked email domain
string domain = 1;
bool negative = 2;
}
message CreateBlockedEmailDomainResponse {
BlockedEmailDomain blocked_email_domain = 1;
}
message BlockedRepository {
// id is the ID of the blocked repository
uint32 id = 1;
// url_regexp is the regular expression for the repository URL
string url_regexp = 2;
// block_user indicates if the user should be blocked from accessing the
// repository
bool block_user = 3;
google.protobuf.Timestamp creation_time = 4;
google.protobuf.Timestamp update_time = 5;
// block_free_usage indicates if a free tier user may not start a workspace on that repository URL
bool block_free_usage = 6;
}
message BlockedEmailDomain {
// id is the ID of the blocked email domain
string id = 1;
// domain is the blocked email domain
string domain = 2;
bool negative = 3;
}
message GetInstallationConfigurationRequest {}
message GetInstallationConfigurationResponse {
InstallationConfiguration configuration = 1;
}
message InstallationConfiguration {
bool is_dedicated_installation = 1;
}