// Copyright 2023 LiveKit, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
import "google/protobuf/timestamp.proto";
import "logger/options.proto";
package livekit;
option go_package = "github.com/livekit/protocol/livekit";
option csharp_namespace = "LiveKit.Proto";
option ruby_package = "LiveKit::Proto";
enum AgentSecretKind {
AGENT_SECRET_KIND_UNKNOWN = 0;
AGENT_SECRET_KIND_ENVIRONMENT = 1;
AGENT_SECRET_KIND_FILE = 2;
}
enum AgentEventType {
AGENT_EVENT_TYPE_UNKNOWN = 0;
AGENT_EVENT_TYPE_APPLICATION_CRASHED = 1;
AGENT_EVENT_TYPE_RESTARTED_HIGH_DISK_USAGE = 2;
AGENT_EVENT_TYPE_RESTARTED_HIGH_MEMORY_USAGE = 3;
}
message AgentEvent {
AgentEventType type = 1;
int32 count = 2;
google.protobuf.Timestamp timestamp = 3;
}
message AgentSecret {
string name = 1;
bytes value = 2;
google.protobuf.Timestamp created_at = 3;
google.protobuf.Timestamp updated_at = 4;
AgentSecretKind kind = 5;
repeated string deployments = 6;
}
message CreateAgentRequest {
string agent_name = 1 [deprecated=true];
repeated AgentSecret secrets = 2;
int32 replicas = 3 [deprecated=true];
int32 max_replicas = 4 [deprecated=true];
string cpu_req = 5 [deprecated=true];
repeated string regions = 6;
}
message CreateAgentResponse {
string agent_id = 1 [(logger.name) = "agentID"];
string agent_name = 2;
string status = 3;
string version = 4;
string presigned_url = 5;
string tag = 6;
repeated string server_regions = 7;
PresignedPostRequest presigned_post_request = 8;
}
message CreateAgentV2Request {
repeated AgentSecret secrets = 1;
repeated string regions = 2;
}
message CreateAgentV2Response {
string agent_id = 1 [(logger.name) = "agentID"];
string status = 2;
repeated string server_regions = 3;
}
message PresignedPostRequest {
string url = 1;
map<string, string> values = 2;
}
message AgentDeployment {
string region = 1;
string agent_id = 2 [(logger.name) = "agentID"];
string status = 3;
int32 replicas = 4;
int32 min_replicas = 5;
int32 max_replicas = 6;
string cpu_req = 7;
string cur_cpu = 8;
string cur_mem = 9;
string mem_req = 10;
string mem_limit = 11;
string cpu_limit = 12;
string server_region = 13;
repeated AgentEvent events = 14;
string deployment = 15;
string version = 16;
string agent_name = 17;
bool deployment_enabled = 18;
}
message AgentInfo {
string agent_id = 1 [(logger.name) = "agentID"];
string agent_name = 2;
string version = 3;
repeated AgentDeployment agent_deployments = 4;
repeated AgentSecret secrets = 5;
google.protobuf.Timestamp deployed_at = 6;
}
message ListAgentsRequest {
string agent_name = 1;
string agent_id = 2 [(logger.name) = "agentID"];
}
message ListAgentsResponse {
repeated AgentInfo agents = 1;
}
message AgentVersion {
string version = 1;
bool current = 2;
google.protobuf.Timestamp created_at = 3;
google.protobuf.Timestamp deployed_at = 4;
map<string, string> attributes = 5;
string status = 6;
string owner = 7;
bool draining = 8;
bool active = 9;
}
message ListAgentVersionsRequest {
string agent_id = 1 [(logger.name) = "agentID"];
string agent_name = 2;
}
message ListAgentVersionsResponse {
repeated AgentVersion versions = 1;
}
message UpdateAgentRequest {
string agent_id = 1 [(logger.name) = "agentID"];
string agent_name = 2 [deprecated=true];
int32 replicas = 3 [deprecated=true];
int32 max_replicas = 4 [deprecated=true];
string cpu_req = 5 [deprecated=true];
repeated string regions = 6;
repeated AgentSecret secrets = 7;
}
message UpdateAgentResponse {
bool success = 1;
string message = 2;
}
message RestartAgentRequest {
string agent_id = 1 [(logger.name) = "agentID"];
}
message RestartAgentResponse {
bool success = 1;
string message = 2;
}
message DeployAgentRequest {
string agent_id = 1 [(logger.name) = "agentID"];
string agent_name = 2 [deprecated=true];
repeated AgentSecret secrets = 3;
int32 replicas = 4 [deprecated=true];
int32 max_replicas = 5 [deprecated=true];
string cpu_req = 6 [deprecated=true];
string deployment = 7;
}
message DeployAgentResponse {
bool success = 1;
string message = 2;
string agent_id = 3 [(logger.name) = "agentID"];
string presigned_url = 4 [deprecated=true];
string tag = 5;
PresignedPostRequest presigned_post_request = 6;
string deployment = 7;
}
message DeployAgentV2Request {
string agent_id = 1 [(logger.name) = "agentID"];
repeated AgentSecret secrets = 2;
string deployment = 3;
}
message DeployAgentV2Response {
bool success = 1;
string message = 2;
string agent_id = 3 [(logger.name) = "agentID"];
string tag = 4;
PresignedPostRequest presigned_req = 5;
string deployment = 6;
}
message UpdateAgentSecretsRequest {
string agent_id = 1 [(logger.name) = "agentID"];
string agent_name = 2;
bool overwrite = 3;
repeated AgentSecret secrets = 4;
repeated string remove = 5;
}
message UpdateAgentSecretsResponse {
bool success = 1;
string message = 2;
}
message RollbackAgentRequest {
string agent_id = 1 [(logger.name) = "agentID"];
string agent_name = 2;
string version = 3;
}
message RollbackAgentResponse {
bool success = 1;
string message = 2;
}
message DeleteAgentRequest {
string agent_id = 1 [(logger.name) = "agentID"];
string agent_name = 2;
string deployment = 3; // optional
}
message DeleteAgentResponse {
bool success = 1;
string message = 2;
}
message ListAgentSecretsRequest {
string agent_id = 1 [(logger.name) = "agentID"];
string agent_name = 2;
}
message ListAgentSecretsResponse {
repeated AgentSecret secrets = 1;
}
message SettingsParam {
string name = 1;
string value = 2;
}
message ClientSettingsResponse {
repeated SettingsParam params = 1;
}
message ClientSettingsRequest {
}
message PrivateLink {
message AWSConfig {
string endpoint = 1 [deprecated=true]; // Use the generic "endpoint" instead
};
string private_link_id = 1 [(logger.name) = "privateLinkID"];
string name = 2;
string region = 4;
uint32 port = 5;
string endpoint = 6;
string connection_endpoint = 7;
string cloud_region = 8;
oneof config {
AWSConfig aws = 3 [deprecated=true];
};
}
message PrivateLinkStatus {
enum Status {
PRIVATE_LINK_STATUS_UNKNOWN = 0;
PRIVATE_LINK_STATUS_PROVISIONING = 1;
PRIVATE_LINK_STATUS_PENDING_APPROVAL = 2;
PRIVATE_LINK_STATUS_HEALTHY = 3;
PRIVATE_LINK_STATUS_UNHEALTHY = 4;
PRIVATE_LINK_STATUS_APPROVED = 5;
}
Status status = 1;
google.protobuf.Timestamp updated_at = 2;
string reason = 3;
}
message CreatePrivateLinkRequest {
message AWSCreateConfig {
string endpoint = 1 [deprecated=true];
}
string name = 1;
string region = 3;
uint32 port = 4;
string endpoint = 5;
optional string cloud_region = 6;
oneof config {
AWSCreateConfig aws = 2 [deprecated=true];
}
}
message CreatePrivateLinkResponse {
PrivateLink private_link = 1;
}
message DestroyPrivateLinkRequest {
string private_link_id = 1 [(logger.name) = "privateLinkID"];
}
message DestroyPrivateLinkResponse {
}
message ListPrivateLinksRequest {
}
message ListPrivateLinksResponse {
repeated PrivateLink items = 1;
}
message GetPrivateLinkStatusRequest {
string private_link_id = 1 [(logger.name) = "privateLinkID"];
}
message GetPrivateLinkStatusResponse {
PrivateLinkStatus value = 1;
}
service CloudAgent {
rpc CreateAgent(CreateAgentRequest) returns (CreateAgentResponse) {}
rpc CreateAgentV2(CreateAgentV2Request) returns (CreateAgentV2Response) {}
rpc ListAgents(ListAgentsRequest) returns (ListAgentsResponse) {}
rpc ListAgentVersions(ListAgentVersionsRequest) returns (ListAgentVersionsResponse) {}
rpc ListAgentSecrets(ListAgentSecretsRequest) returns (ListAgentSecretsResponse) {}
rpc UpdateAgent(UpdateAgentRequest) returns (UpdateAgentResponse) {}
rpc RestartAgent(RestartAgentRequest) returns (RestartAgentResponse) {}
rpc DeployAgent(DeployAgentRequest) returns (DeployAgentResponse) {}
rpc DeployAgentV2(DeployAgentV2Request) returns (DeployAgentV2Response) {}
rpc UpdateAgentSecrets(UpdateAgentSecretsRequest) returns (UpdateAgentSecretsResponse) {}
rpc RollbackAgent(RollbackAgentRequest) returns (RollbackAgentResponse) {}
rpc DeleteAgent(DeleteAgentRequest) returns (DeleteAgentResponse) {}
rpc GetClientSettings(ClientSettingsRequest) returns (ClientSettingsResponse) {}
rpc CreatePrivateLink(CreatePrivateLinkRequest) returns (CreatePrivateLinkResponse) {}
rpc DestroyPrivateLink(DestroyPrivateLinkRequest) returns (DestroyPrivateLinkResponse) {}
rpc ListPrivateLinks(ListPrivateLinksRequest) returns (ListPrivateLinksResponse) {}
rpc GetPrivateLinkStatus(GetPrivateLinkStatusRequest) returns (GetPrivateLinkStatusResponse) {}
}