Cornelius A. Ludmann 79542d659c [supervisor-api] Add Java gRPC API
/werft no-preview
2021-10-11 05:44:57 -03:00

101 lines
2.6 KiB
Protocol Buffer

// Copyright (c) 2020 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 supervisor;
import "google/api/annotations.proto";
import "google/protobuf/timestamp.proto";
option go_package = "github.com/gitpod-io/gitpod/supervisor/api";
option java_package = "io.gitpod.supervisor.api";
service TokenService {
rpc GetToken(GetTokenRequest) returns (GetTokenResponse) {
option (google.api.http) = {
get: "/v1/token/{kind}/{host}/{scope}"
};
}
rpc SetToken(SetTokenRequest) returns (SetTokenResponse) {
option (google.api.http) = {
post: "/v1/token/{kind}/{host}"
body: "*"
};
}
rpc ClearToken(ClearTokenRequest) returns (ClearTokenResponse) {
option (google.api.http) = {
delete: "/v1/token/{kind}/{value}",
additional_bindings {
delete: "/v1/token/{kind}/clear/all/{all=true}",
}
};
}
rpc ProvideToken(stream ProvideTokenRequest) returns (stream ProvideTokenResponse) {}
}
message GetTokenRequest {
string host = 1;
repeated string scope = 2;
string description = 3;
string kind = 4;
}
message GetTokenResponse {
string token = 1;
/** The username of the account associated with the token. */
string user = 2;
repeated string scope = 3;
}
message SetTokenRequest {
string host = 1;
repeated string scope = 2;
string token = 3;
google.protobuf.Timestamp expiry_date = 4;
TokenReuse reuse = 5;
string kind = 6;
}
message SetTokenResponse {}
enum TokenReuse {
// REUSE_NEVER means the token can never be re-used.
// This mode only makes sense when providing a token in response to a request.
REUSE_NEVER = 0;
// REUSE_EXACTLY means the token can only be reused when the requested scopes
// exactly match those of the token.
REUSE_EXACTLY = 1;
// REUSE_WHEN_POSSIBLE means the token can be reused when the requested scopes
// are a subset of the token's scopes.
REUSE_WHEN_POSSIBLE = 2;
}
message ClearTokenRequest {
oneof token {
string value = 1;
bool all = 2;
};
string kind = 3;
}
message ClearTokenResponse {}
message ProvideTokenRequest {
message RegisterProvider {
string kind = 1;
}
oneof message {
RegisterProvider registration = 1;
SetTokenRequest answer = 2;
};
}
message ProvideTokenResponse {
GetTokenRequest request = 1;
}