livekit-protocol 0.7.10

Livekit protocol and utilities for the Rust SDK
Documentation
// 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) {}
}