Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
gitpod-io
GitHub Repository: gitpod-io/gitpod
Path: blob/main/components/ide-service-api/ide.proto
2492 views
// Copyright (c) 2022 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.

syntax = "proto3";

package ide_service_api;

option go_package = "github.com/gitpod-io/gitpod/ide-service/api";
option java_package = "io.gitpod.ideservice.api";

service IDEService {
    rpc GetConfig(GetConfigRequest) returns (GetConfigResponse) {
        option idempotency_level = IDEMPOTENT;
    }
    rpc ResolveWorkspaceConfig(ResolveWorkspaceConfigRequest) returns (ResolveWorkspaceConfigResponse) {
        option idempotency_level = IDEMPOTENT;
    }
}

message GetConfigRequest {
    User user = 1;
}

message GetConfigResponse {
    string content = 1;
}

// TODO: import type from other packages
// EnvironmentVariable describes an env var as key/value pair
message EnvironmentVariable {
    string name = 1;
    string value = 2;
}

enum WorkspaceType {
    REGULAR = 0;
    PREBUILD = 1;
}

message User {
    string id = 1;
    optional string email = 2;
}

message ResolveWorkspaceConfigRequest {
    WorkspaceType type = 1;
    string context = 2;
    string ide_settings = 3;
    string workspace_config = 4;
    User user = 5;
}

message ResolveWorkspaceConfigResponse {
    repeated EnvironmentVariable envvars = 1;
    string supervisor_image = 2;
    string web_image = 3;
    repeated string ide_image_layers = 4;
    // control whether to configure default IDE for a user
    string referer_ide = 5;
    string tasks = 6;
    string ide_settings = 7;
}