From 6c5fe4d6018ffdf0a242ce4096b9ed5dfbbef862 Mon Sep 17 00:00:00 2001 From: Nishad Musthafa Date: Wed, 23 Jul 2025 22:55:58 -0700 Subject: [PATCH 01/20] Public facing api for livekit phone numbers --- magefile.go | 1 + protobufs/livekit_phone_number.proto | 103 +++++++++++++++++++++++++++ 2 files changed, 104 insertions(+) create mode 100644 protobufs/livekit_phone_number.proto diff --git a/magefile.go b/magefile.go index 11b14dce5..3fcf96ad4 100644 --- a/magefile.go +++ b/magefile.go @@ -55,6 +55,7 @@ func Proto() error { "livekit_analytics.proto", "livekit_internal.proto", "livekit_models.proto", + "livekit_phone_number.proto", "livekit_rtc.proto", "livekit_webhook.proto", "livekit_metrics.proto", diff --git a/protobufs/livekit_phone_number.proto b/protobufs/livekit_phone_number.proto new file mode 100644 index 000000000..06c079fb3 --- /dev/null +++ b/protobufs/livekit_phone_number.proto @@ -0,0 +1,103 @@ +syntax = "proto3"; + +package livekit; + +option go_package = "github.com/livekit/protocol/livekit"; + +import "google/protobuf/empty.proto"; + +// Public Phone Number Service - External API for phone number management +service PhoneNumberService { + // List available phone numbers in inventory + rpc ListPhoneNumberInventory(ListPhoneNumberInventoryRequest) + returns (ListPhoneNumberInventoryResponse) {} + + // Purchase a phone number from inventory + rpc PurchasePhoneNumber(PurchasePhoneNumberRequest) + returns (PurchasePhoneNumberResponse) {} + + // List purchased phone numbers for a project + rpc ListPurchasedPhoneNumbers(ListPurchasedPhoneNumbersRequest) + returns (ListPurchasedPhoneNumbersResponse) {} + + // Release a purchased phone number + rpc ReleasePhoneNumber(ReleasePhoneNumberRequest) + returns (google.protobuf.Empty) {} +} + +// ListPhoneNumberInventoryRequest - Request to list available phone numbers +message ListPhoneNumberInventoryRequest { + string project_id = 1; // Required: Project ID + string country_code = 2; // Optional: Filter by country code (e.g., "US", "CA") + string area_code = 3; // Optional: Filter by area code (e.g., "415") + string pattern = 4; // Optional: Filter by pattern (e.g., "***-***-1234") + int32 limit = 5; // Optional: Maximum number of results (default: 50) + int32 offset = 6; // Optional: Number of results to skip (default: 0) +} + +// ListPhoneNumberInventoryResponse - Response containing available phone numbers +message ListPhoneNumberInventoryResponse { + repeated PhoneNumberInventoryItem items = 1; // List of available phone numbers + int32 total_count = 2; // Total number of available numbers + int32 limit = 3; // Limit used in the request + int32 offset = 4; // Offset used in the request +} + +// PurchasePhoneNumberRequest - Request to purchase a phone number +message PurchasePhoneNumberRequest { + string project_id = 1; // Required: Project ID + string phone_number = 2; // Required: Phone number in E.164 format (e.g., "+14155552671") +} + +// PurchasePhoneNumberResponse - Response containing the purchased phone number +message PurchasePhoneNumberResponse { + PurchasedPhoneNumber phone_number = 1; // Details of the purchased phone number +} + +// ListPurchasedPhoneNumbersRequest - Request to list purchased phone numbers +message ListPurchasedPhoneNumbersRequest { + string project_id = 1; // Required: Project ID + string status = 2; // Optional: Filter by status ("active", "released", "pending") + int32 limit = 3; // Optional: Maximum number of results (default: 50) + int32 offset = 4; // Optional: Number of results to skip (default: 0) +} + +// ListPurchasedPhoneNumbersResponse - Response containing purchased phone numbers +message ListPurchasedPhoneNumbersResponse { + repeated PurchasedPhoneNumber items = 1; // List of purchased phone numbers + int32 total_count = 2; // Total number of purchased numbers + int32 limit = 3; // Limit used in the request + int32 offset = 4; // Offset used in the request +} + +// ReleasePhoneNumberRequest - Request to release a phone number +message ReleasePhoneNumberRequest { + string project_id = 1; // Required: Project ID + string phone_number = 2; // Required: Phone number in E.164 format (e.g., "+14155552671") +} + +// PhoneNumberInventoryItem - Represents an available phone number for purchase +message PhoneNumberInventoryItem { + string phone_number = 1; // Phone number in E.164 format (e.g., "+14155552671") + string country_code = 2; // Country code (e.g., "US") + string area_code = 3; // Area code (e.g., "415") + string locality = 4; // City/locality (e.g., "San Francisco") + string region = 5; // State/region (e.g., "CA") + string capabilities = 6; // Comma-separated capabilities (e.g., "voice,sms") + int64 monthly_cost_cents = 7; // Monthly cost in cents + bool available = 8; // Whether the number is currently available + string carrier_name = 9; // Name of the carrier providing this number +} + +// PurchasedPhoneNumber - Represents a phone number owned by a LiveKit project +message PurchasedPhoneNumber { + string id = 1; // Unique identifier for the phone number + string phone_number = 2; // Phone number in E.164 format (e.g., "+14155552671") + string country_code = 3; // Country code (e.g., "US") + string area_code = 4; // Area code (e.g., "415") + string national_number = 5; // National number without country code (e.g., "4155552671") + bool is_mobile = 6; // Whether this is a mobile number + string status = 7; // Current status ("active", "pending", "released") + int64 assigned_at = 8; // Timestamp when the number was assigned + int64 released_at = 9; // Timestamp when the number was released (if applicable) +} \ No newline at end of file From 754c3cbae251552dfb3bf952d5eae9f8f3eeced1 Mon Sep 17 00:00:00 2001 From: Nishad Musthafa Date: Thu, 24 Jul 2025 14:01:54 -0700 Subject: [PATCH 02/20] more changes --- magefile.go | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/magefile.go b/magefile.go index 3fcf96ad4..ed91c8ce2 100644 --- a/magefile.go +++ b/magefile.go @@ -49,13 +49,13 @@ func Proto() error { "livekit_room.proto", "livekit_sip.proto", "livekit_cloud_agent.proto", + "livekit_phone_number.proto", } protoFiles := []string{ "livekit_agent.proto", "livekit_analytics.proto", "livekit_internal.proto", "livekit_models.proto", - "livekit_phone_number.proto", "livekit_rtc.proto", "livekit_webhook.proto", "livekit_metrics.proto", @@ -63,6 +63,7 @@ func Proto() error { grpcProtoFiles := []string{ "infra/link.proto", "rpc/analytics.proto", + "livekit_phone_number.proto", } psrpcProtoFiles := []string{ "rpc/agent.proto", @@ -163,6 +164,22 @@ func Proto() error { return err } + fmt.Println("generating livekit grpc protobuf") + args = append([]string{ + "--go_out", target, + "--go-grpc_out", target, + "--go_opt=paths=source_relative", + "--go-grpc_opt=paths=source_relative", + "--plugin=go=" + protocGoPath, + "--plugin=go-grpc=" + protocGrpcGoPath, + "-I=./protobufs", + }, "livekit_phone_number.proto") + cmd = exec.Command(protoc, args...) + connectStd(cmd) + if err := cmd.Run(); err != nil { + return err + } + fmt.Println("generating psrpc protobuf") psrpcDir, err := mageutil.GetPkgDir("github.com/livekit/psrpc") From 72b60166846bb41b7e4306e15dffd673ab04ac9d Mon Sep 17 00:00:00 2001 From: Nishad Musthafa Date: Fri, 25 Jul 2025 00:09:35 -0700 Subject: [PATCH 03/20] Adding internal apis --- protobufs/rpc/phone_number.proto | 67 ++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 protobufs/rpc/phone_number.proto diff --git a/protobufs/rpc/phone_number.proto b/protobufs/rpc/phone_number.proto new file mode 100644 index 000000000..bc9935716 --- /dev/null +++ b/protobufs/rpc/phone_number.proto @@ -0,0 +1,67 @@ +syntax = "proto3"; + +package rpc; + +option go_package = "github.com/livekit/protocol/rpc"; + +// Import the public phone number types for reuse +import "livekit_phone_number.proto"; + +// Internal request/response for listing phone number inventory +message InternalListPhoneNumberInventoryRequest { + string project_id = 1; + string country_code = 2; + string area_code = 3; + string pattern = 4; + int32 limit = 5; + int32 offset = 6; +} + +message InternalListPhoneNumberInventoryResponse { + repeated livekit.PhoneNumberInventoryItem items = 1; + int32 total_count = 2; + int32 limit = 3; + int32 offset = 4; +} + +// Internal request/response for purchasing phone number +message InternalPurchasePhoneNumberRequest { + string project_id = 1; + string phone_number = 2; +} + +message InternalPurchasePhoneNumberResponse { + livekit.PhoneNumber phone_number = 1; +} + +// Internal request/response for listing purchased phone numbers +message InternalListPurchasedPhoneNumbersRequest { + string project_id = 1; + int32 limit = 2; + int32 offset = 3; +} + +message InternalListPurchasedPhoneNumbersResponse { + repeated livekit.PhoneNumber phone_numbers = 1; + int32 total_count = 2; + int32 limit = 3; + int32 offset = 4; +} + +// Internal request/response for releasing phone number +message InternalReleasePhoneNumberRequest { + string project_id = 1; + string phone_number = 2; +} + +message InternalReleasePhoneNumberResponse { + // Empty response +} + +// Internal phone number service +service InternalPhoneNumberService { + rpc ListPhoneNumberInventory(InternalListPhoneNumberInventoryRequest) returns (InternalListPhoneNumberInventoryResponse); + rpc PurchasePhoneNumber(InternalPurchasePhoneNumberRequest) returns (InternalPurchasePhoneNumberResponse); + rpc ListPurchasedPhoneNumbers(InternalListPurchasedPhoneNumbersRequest) returns (InternalListPurchasedPhoneNumbersResponse); + rpc ReleasePhoneNumber(InternalReleasePhoneNumberRequest) returns (InternalReleasePhoneNumberResponse); +} \ No newline at end of file From c14e58f87366caff4e9d70981d1a32ed5b1556a3 Mon Sep 17 00:00:00 2001 From: Nishad Musthafa Date: Mon, 28 Jul 2025 16:36:01 -0700 Subject: [PATCH 04/20] Adding some more changes to the proto --- protobufs/livekit_phone_number.proto | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/protobufs/livekit_phone_number.proto b/protobufs/livekit_phone_number.proto index 06c079fb3..4a01f1331 100644 --- a/protobufs/livekit_phone_number.proto +++ b/protobufs/livekit_phone_number.proto @@ -27,12 +27,11 @@ service PhoneNumberService { // ListPhoneNumberInventoryRequest - Request to list available phone numbers message ListPhoneNumberInventoryRequest { - string project_id = 1; // Required: Project ID - string country_code = 2; // Optional: Filter by country code (e.g., "US", "CA") - string area_code = 3; // Optional: Filter by area code (e.g., "415") - string pattern = 4; // Optional: Filter by pattern (e.g., "***-***-1234") - int32 limit = 5; // Optional: Maximum number of results (default: 50) - int32 offset = 6; // Optional: Number of results to skip (default: 0) + string country_code = 1; // Optional: Filter by country code (e.g., "US", "CA") + string area_code = 2; // Optional: Filter by area code (e.g., "415") + string pattern = 3; // Optional: Filter by pattern (e.g., "***-***-1234") + int32 limit = 4; // Optional: Maximum number of results (default: 50) + int32 offset = 5; // Optional: Number of results to skip (default: 0) } // ListPhoneNumberInventoryResponse - Response containing available phone numbers @@ -45,8 +44,7 @@ message ListPhoneNumberInventoryResponse { // PurchasePhoneNumberRequest - Request to purchase a phone number message PurchasePhoneNumberRequest { - string project_id = 1; // Required: Project ID - string phone_number = 2; // Required: Phone number in E.164 format (e.g., "+14155552671") + string phone_number = 1; // Phone number to purchase (e.g., "+1234567890") } // PurchasePhoneNumberResponse - Response containing the purchased phone number @@ -56,10 +54,8 @@ message PurchasePhoneNumberResponse { // ListPurchasedPhoneNumbersRequest - Request to list purchased phone numbers message ListPurchasedPhoneNumbersRequest { - string project_id = 1; // Required: Project ID - string status = 2; // Optional: Filter by status ("active", "released", "pending") - int32 limit = 3; // Optional: Maximum number of results (default: 50) - int32 offset = 4; // Optional: Number of results to skip (default: 0) + int32 limit = 1; // Optional: Maximum number of results (default: 50) + int32 offset = 2; // Optional: Number of results to skip (default: 0) } // ListPurchasedPhoneNumbersResponse - Response containing purchased phone numbers @@ -70,10 +66,9 @@ message ListPurchasedPhoneNumbersResponse { int32 offset = 4; // Offset used in the request } -// ReleasePhoneNumberRequest - Request to release a phone number +// ReleasePhoneNumberRequest - Request to release a purchased phone number message ReleasePhoneNumberRequest { - string project_id = 1; // Required: Project ID - string phone_number = 2; // Required: Phone number in E.164 format (e.g., "+14155552671") + string phone_number = 1; // Phone number to release (e.g., "+1234567890") } // PhoneNumberInventoryItem - Represents an available phone number for purchase From 859b26df48c2e4ad641c69e44483f937a1886e0a Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 28 Jul 2025 23:37:38 +0000 Subject: [PATCH 05/20] generated protobuf --- livekit/livekit_phone_number.pb.go | 772 +++++++++++++ livekit/livekit_phone_number.twirp.go | 1410 +++++++++++++++++++++++ livekit/livekit_phone_number_grpc.pb.go | 248 ++++ 3 files changed, 2430 insertions(+) create mode 100644 livekit/livekit_phone_number.pb.go create mode 100644 livekit/livekit_phone_number.twirp.go create mode 100644 livekit/livekit_phone_number_grpc.pb.go diff --git a/livekit/livekit_phone_number.pb.go b/livekit/livekit_phone_number.pb.go new file mode 100644 index 000000000..90d20ebd4 --- /dev/null +++ b/livekit/livekit_phone_number.pb.go @@ -0,0 +1,772 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.6 +// protoc v4.23.4 +// source: livekit_phone_number.proto + +package livekit + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + emptypb "google.golang.org/protobuf/types/known/emptypb" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// ListPhoneNumberInventoryRequest - Request to list available phone numbers +type ListPhoneNumberInventoryRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + CountryCode string `protobuf:"bytes,1,opt,name=country_code,json=countryCode,proto3" json:"country_code,omitempty"` // Optional: Filter by country code (e.g., "US", "CA") + AreaCode string `protobuf:"bytes,2,opt,name=area_code,json=areaCode,proto3" json:"area_code,omitempty"` // Optional: Filter by area code (e.g., "415") + Pattern string `protobuf:"bytes,3,opt,name=pattern,proto3" json:"pattern,omitempty"` // Optional: Filter by pattern (e.g., "***-***-1234") + Limit int32 `protobuf:"varint,4,opt,name=limit,proto3" json:"limit,omitempty"` // Optional: Maximum number of results (default: 50) + Offset int32 `protobuf:"varint,5,opt,name=offset,proto3" json:"offset,omitempty"` // Optional: Number of results to skip (default: 0) + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListPhoneNumberInventoryRequest) Reset() { + *x = ListPhoneNumberInventoryRequest{} + mi := &file_livekit_phone_number_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListPhoneNumberInventoryRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListPhoneNumberInventoryRequest) ProtoMessage() {} + +func (x *ListPhoneNumberInventoryRequest) ProtoReflect() protoreflect.Message { + mi := &file_livekit_phone_number_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListPhoneNumberInventoryRequest.ProtoReflect.Descriptor instead. +func (*ListPhoneNumberInventoryRequest) Descriptor() ([]byte, []int) { + return file_livekit_phone_number_proto_rawDescGZIP(), []int{0} +} + +func (x *ListPhoneNumberInventoryRequest) GetCountryCode() string { + if x != nil { + return x.CountryCode + } + return "" +} + +func (x *ListPhoneNumberInventoryRequest) GetAreaCode() string { + if x != nil { + return x.AreaCode + } + return "" +} + +func (x *ListPhoneNumberInventoryRequest) GetPattern() string { + if x != nil { + return x.Pattern + } + return "" +} + +func (x *ListPhoneNumberInventoryRequest) GetLimit() int32 { + if x != nil { + return x.Limit + } + return 0 +} + +func (x *ListPhoneNumberInventoryRequest) GetOffset() int32 { + if x != nil { + return x.Offset + } + return 0 +} + +// ListPhoneNumberInventoryResponse - Response containing available phone numbers +type ListPhoneNumberInventoryResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Items []*PhoneNumberInventoryItem `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` // List of available phone numbers + TotalCount int32 `protobuf:"varint,2,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty"` // Total number of available numbers + Limit int32 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit,omitempty"` // Limit used in the request + Offset int32 `protobuf:"varint,4,opt,name=offset,proto3" json:"offset,omitempty"` // Offset used in the request + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListPhoneNumberInventoryResponse) Reset() { + *x = ListPhoneNumberInventoryResponse{} + mi := &file_livekit_phone_number_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListPhoneNumberInventoryResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListPhoneNumberInventoryResponse) ProtoMessage() {} + +func (x *ListPhoneNumberInventoryResponse) ProtoReflect() protoreflect.Message { + mi := &file_livekit_phone_number_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListPhoneNumberInventoryResponse.ProtoReflect.Descriptor instead. +func (*ListPhoneNumberInventoryResponse) Descriptor() ([]byte, []int) { + return file_livekit_phone_number_proto_rawDescGZIP(), []int{1} +} + +func (x *ListPhoneNumberInventoryResponse) GetItems() []*PhoneNumberInventoryItem { + if x != nil { + return x.Items + } + return nil +} + +func (x *ListPhoneNumberInventoryResponse) GetTotalCount() int32 { + if x != nil { + return x.TotalCount + } + return 0 +} + +func (x *ListPhoneNumberInventoryResponse) GetLimit() int32 { + if x != nil { + return x.Limit + } + return 0 +} + +func (x *ListPhoneNumberInventoryResponse) GetOffset() int32 { + if x != nil { + return x.Offset + } + return 0 +} + +// PurchasePhoneNumberRequest - Request to purchase a phone number +type PurchasePhoneNumberRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + PhoneNumber string `protobuf:"bytes,1,opt,name=phone_number,json=phoneNumber,proto3" json:"phone_number,omitempty"` // Phone number to purchase (e.g., "+1234567890") + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PurchasePhoneNumberRequest) Reset() { + *x = PurchasePhoneNumberRequest{} + mi := &file_livekit_phone_number_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PurchasePhoneNumberRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PurchasePhoneNumberRequest) ProtoMessage() {} + +func (x *PurchasePhoneNumberRequest) ProtoReflect() protoreflect.Message { + mi := &file_livekit_phone_number_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PurchasePhoneNumberRequest.ProtoReflect.Descriptor instead. +func (*PurchasePhoneNumberRequest) Descriptor() ([]byte, []int) { + return file_livekit_phone_number_proto_rawDescGZIP(), []int{2} +} + +func (x *PurchasePhoneNumberRequest) GetPhoneNumber() string { + if x != nil { + return x.PhoneNumber + } + return "" +} + +// PurchasePhoneNumberResponse - Response containing the purchased phone number +type PurchasePhoneNumberResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + PhoneNumber *PurchasedPhoneNumber `protobuf:"bytes,1,opt,name=phone_number,json=phoneNumber,proto3" json:"phone_number,omitempty"` // Details of the purchased phone number + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PurchasePhoneNumberResponse) Reset() { + *x = PurchasePhoneNumberResponse{} + mi := &file_livekit_phone_number_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PurchasePhoneNumberResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PurchasePhoneNumberResponse) ProtoMessage() {} + +func (x *PurchasePhoneNumberResponse) ProtoReflect() protoreflect.Message { + mi := &file_livekit_phone_number_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PurchasePhoneNumberResponse.ProtoReflect.Descriptor instead. +func (*PurchasePhoneNumberResponse) Descriptor() ([]byte, []int) { + return file_livekit_phone_number_proto_rawDescGZIP(), []int{3} +} + +func (x *PurchasePhoneNumberResponse) GetPhoneNumber() *PurchasedPhoneNumber { + if x != nil { + return x.PhoneNumber + } + return nil +} + +// ListPurchasedPhoneNumbersRequest - Request to list purchased phone numbers +type ListPurchasedPhoneNumbersRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Limit int32 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"` // Optional: Maximum number of results (default: 50) + Offset int32 `protobuf:"varint,2,opt,name=offset,proto3" json:"offset,omitempty"` // Optional: Number of results to skip (default: 0) + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListPurchasedPhoneNumbersRequest) Reset() { + *x = ListPurchasedPhoneNumbersRequest{} + mi := &file_livekit_phone_number_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListPurchasedPhoneNumbersRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListPurchasedPhoneNumbersRequest) ProtoMessage() {} + +func (x *ListPurchasedPhoneNumbersRequest) ProtoReflect() protoreflect.Message { + mi := &file_livekit_phone_number_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListPurchasedPhoneNumbersRequest.ProtoReflect.Descriptor instead. +func (*ListPurchasedPhoneNumbersRequest) Descriptor() ([]byte, []int) { + return file_livekit_phone_number_proto_rawDescGZIP(), []int{4} +} + +func (x *ListPurchasedPhoneNumbersRequest) GetLimit() int32 { + if x != nil { + return x.Limit + } + return 0 +} + +func (x *ListPurchasedPhoneNumbersRequest) GetOffset() int32 { + if x != nil { + return x.Offset + } + return 0 +} + +// ListPurchasedPhoneNumbersResponse - Response containing purchased phone numbers +type ListPurchasedPhoneNumbersResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Items []*PurchasedPhoneNumber `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` // List of purchased phone numbers + TotalCount int32 `protobuf:"varint,2,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty"` // Total number of purchased numbers + Limit int32 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit,omitempty"` // Limit used in the request + Offset int32 `protobuf:"varint,4,opt,name=offset,proto3" json:"offset,omitempty"` // Offset used in the request + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListPurchasedPhoneNumbersResponse) Reset() { + *x = ListPurchasedPhoneNumbersResponse{} + mi := &file_livekit_phone_number_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListPurchasedPhoneNumbersResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListPurchasedPhoneNumbersResponse) ProtoMessage() {} + +func (x *ListPurchasedPhoneNumbersResponse) ProtoReflect() protoreflect.Message { + mi := &file_livekit_phone_number_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListPurchasedPhoneNumbersResponse.ProtoReflect.Descriptor instead. +func (*ListPurchasedPhoneNumbersResponse) Descriptor() ([]byte, []int) { + return file_livekit_phone_number_proto_rawDescGZIP(), []int{5} +} + +func (x *ListPurchasedPhoneNumbersResponse) GetItems() []*PurchasedPhoneNumber { + if x != nil { + return x.Items + } + return nil +} + +func (x *ListPurchasedPhoneNumbersResponse) GetTotalCount() int32 { + if x != nil { + return x.TotalCount + } + return 0 +} + +func (x *ListPurchasedPhoneNumbersResponse) GetLimit() int32 { + if x != nil { + return x.Limit + } + return 0 +} + +func (x *ListPurchasedPhoneNumbersResponse) GetOffset() int32 { + if x != nil { + return x.Offset + } + return 0 +} + +// ReleasePhoneNumberRequest - Request to release a purchased phone number +type ReleasePhoneNumberRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + PhoneNumber string `protobuf:"bytes,1,opt,name=phone_number,json=phoneNumber,proto3" json:"phone_number,omitempty"` // Phone number to release (e.g., "+1234567890") + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReleasePhoneNumberRequest) Reset() { + *x = ReleasePhoneNumberRequest{} + mi := &file_livekit_phone_number_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReleasePhoneNumberRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReleasePhoneNumberRequest) ProtoMessage() {} + +func (x *ReleasePhoneNumberRequest) ProtoReflect() protoreflect.Message { + mi := &file_livekit_phone_number_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReleasePhoneNumberRequest.ProtoReflect.Descriptor instead. +func (*ReleasePhoneNumberRequest) Descriptor() ([]byte, []int) { + return file_livekit_phone_number_proto_rawDescGZIP(), []int{6} +} + +func (x *ReleasePhoneNumberRequest) GetPhoneNumber() string { + if x != nil { + return x.PhoneNumber + } + return "" +} + +// PhoneNumberInventoryItem - Represents an available phone number for purchase +type PhoneNumberInventoryItem struct { + state protoimpl.MessageState `protogen:"open.v1"` + PhoneNumber string `protobuf:"bytes,1,opt,name=phone_number,json=phoneNumber,proto3" json:"phone_number,omitempty"` // Phone number in E.164 format (e.g., "+14155552671") + CountryCode string `protobuf:"bytes,2,opt,name=country_code,json=countryCode,proto3" json:"country_code,omitempty"` // Country code (e.g., "US") + AreaCode string `protobuf:"bytes,3,opt,name=area_code,json=areaCode,proto3" json:"area_code,omitempty"` // Area code (e.g., "415") + Locality string `protobuf:"bytes,4,opt,name=locality,proto3" json:"locality,omitempty"` // City/locality (e.g., "San Francisco") + Region string `protobuf:"bytes,5,opt,name=region,proto3" json:"region,omitempty"` // State/region (e.g., "CA") + Capabilities string `protobuf:"bytes,6,opt,name=capabilities,proto3" json:"capabilities,omitempty"` // Comma-separated capabilities (e.g., "voice,sms") + MonthlyCostCents int64 `protobuf:"varint,7,opt,name=monthly_cost_cents,json=monthlyCostCents,proto3" json:"monthly_cost_cents,omitempty"` // Monthly cost in cents + Available bool `protobuf:"varint,8,opt,name=available,proto3" json:"available,omitempty"` // Whether the number is currently available + CarrierName string `protobuf:"bytes,9,opt,name=carrier_name,json=carrierName,proto3" json:"carrier_name,omitempty"` // Name of the carrier providing this number + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PhoneNumberInventoryItem) Reset() { + *x = PhoneNumberInventoryItem{} + mi := &file_livekit_phone_number_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PhoneNumberInventoryItem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PhoneNumberInventoryItem) ProtoMessage() {} + +func (x *PhoneNumberInventoryItem) ProtoReflect() protoreflect.Message { + mi := &file_livekit_phone_number_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PhoneNumberInventoryItem.ProtoReflect.Descriptor instead. +func (*PhoneNumberInventoryItem) Descriptor() ([]byte, []int) { + return file_livekit_phone_number_proto_rawDescGZIP(), []int{7} +} + +func (x *PhoneNumberInventoryItem) GetPhoneNumber() string { + if x != nil { + return x.PhoneNumber + } + return "" +} + +func (x *PhoneNumberInventoryItem) GetCountryCode() string { + if x != nil { + return x.CountryCode + } + return "" +} + +func (x *PhoneNumberInventoryItem) GetAreaCode() string { + if x != nil { + return x.AreaCode + } + return "" +} + +func (x *PhoneNumberInventoryItem) GetLocality() string { + if x != nil { + return x.Locality + } + return "" +} + +func (x *PhoneNumberInventoryItem) GetRegion() string { + if x != nil { + return x.Region + } + return "" +} + +func (x *PhoneNumberInventoryItem) GetCapabilities() string { + if x != nil { + return x.Capabilities + } + return "" +} + +func (x *PhoneNumberInventoryItem) GetMonthlyCostCents() int64 { + if x != nil { + return x.MonthlyCostCents + } + return 0 +} + +func (x *PhoneNumberInventoryItem) GetAvailable() bool { + if x != nil { + return x.Available + } + return false +} + +func (x *PhoneNumberInventoryItem) GetCarrierName() string { + if x != nil { + return x.CarrierName + } + return "" +} + +// PurchasedPhoneNumber - Represents a phone number owned by a LiveKit project +type PurchasedPhoneNumber struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Unique identifier for the phone number + PhoneNumber string `protobuf:"bytes,2,opt,name=phone_number,json=phoneNumber,proto3" json:"phone_number,omitempty"` // Phone number in E.164 format (e.g., "+14155552671") + CountryCode string `protobuf:"bytes,3,opt,name=country_code,json=countryCode,proto3" json:"country_code,omitempty"` // Country code (e.g., "US") + AreaCode string `protobuf:"bytes,4,opt,name=area_code,json=areaCode,proto3" json:"area_code,omitempty"` // Area code (e.g., "415") + NationalNumber string `protobuf:"bytes,5,opt,name=national_number,json=nationalNumber,proto3" json:"national_number,omitempty"` // National number without country code (e.g., "4155552671") + IsMobile bool `protobuf:"varint,6,opt,name=is_mobile,json=isMobile,proto3" json:"is_mobile,omitempty"` // Whether this is a mobile number + Status string `protobuf:"bytes,7,opt,name=status,proto3" json:"status,omitempty"` // Current status ("active", "pending", "released") + AssignedAt int64 `protobuf:"varint,8,opt,name=assigned_at,json=assignedAt,proto3" json:"assigned_at,omitempty"` // Timestamp when the number was assigned + ReleasedAt int64 `protobuf:"varint,9,opt,name=released_at,json=releasedAt,proto3" json:"released_at,omitempty"` // Timestamp when the number was released (if applicable) + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PurchasedPhoneNumber) Reset() { + *x = PurchasedPhoneNumber{} + mi := &file_livekit_phone_number_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PurchasedPhoneNumber) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PurchasedPhoneNumber) ProtoMessage() {} + +func (x *PurchasedPhoneNumber) ProtoReflect() protoreflect.Message { + mi := &file_livekit_phone_number_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PurchasedPhoneNumber.ProtoReflect.Descriptor instead. +func (*PurchasedPhoneNumber) Descriptor() ([]byte, []int) { + return file_livekit_phone_number_proto_rawDescGZIP(), []int{8} +} + +func (x *PurchasedPhoneNumber) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *PurchasedPhoneNumber) GetPhoneNumber() string { + if x != nil { + return x.PhoneNumber + } + return "" +} + +func (x *PurchasedPhoneNumber) GetCountryCode() string { + if x != nil { + return x.CountryCode + } + return "" +} + +func (x *PurchasedPhoneNumber) GetAreaCode() string { + if x != nil { + return x.AreaCode + } + return "" +} + +func (x *PurchasedPhoneNumber) GetNationalNumber() string { + if x != nil { + return x.NationalNumber + } + return "" +} + +func (x *PurchasedPhoneNumber) GetIsMobile() bool { + if x != nil { + return x.IsMobile + } + return false +} + +func (x *PurchasedPhoneNumber) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *PurchasedPhoneNumber) GetAssignedAt() int64 { + if x != nil { + return x.AssignedAt + } + return 0 +} + +func (x *PurchasedPhoneNumber) GetReleasedAt() int64 { + if x != nil { + return x.ReleasedAt + } + return 0 +} + +var File_livekit_phone_number_proto protoreflect.FileDescriptor + +const file_livekit_phone_number_proto_rawDesc = "" + + "\n" + + "\x1alivekit_phone_number.proto\x12\alivekit\x1a\x1bgoogle/protobuf/empty.proto\"\xa9\x01\n" + + "\x1fListPhoneNumberInventoryRequest\x12!\n" + + "\fcountry_code\x18\x01 \x01(\tR\vcountryCode\x12\x1b\n" + + "\tarea_code\x18\x02 \x01(\tR\bareaCode\x12\x18\n" + + "\apattern\x18\x03 \x01(\tR\apattern\x12\x14\n" + + "\x05limit\x18\x04 \x01(\x05R\x05limit\x12\x16\n" + + "\x06offset\x18\x05 \x01(\x05R\x06offset\"\xaa\x01\n" + + " ListPhoneNumberInventoryResponse\x127\n" + + "\x05items\x18\x01 \x03(\v2!.livekit.PhoneNumberInventoryItemR\x05items\x12\x1f\n" + + "\vtotal_count\x18\x02 \x01(\x05R\n" + + "totalCount\x12\x14\n" + + "\x05limit\x18\x03 \x01(\x05R\x05limit\x12\x16\n" + + "\x06offset\x18\x04 \x01(\x05R\x06offset\"?\n" + + "\x1aPurchasePhoneNumberRequest\x12!\n" + + "\fphone_number\x18\x01 \x01(\tR\vphoneNumber\"_\n" + + "\x1bPurchasePhoneNumberResponse\x12@\n" + + "\fphone_number\x18\x01 \x01(\v2\x1d.livekit.PurchasedPhoneNumberR\vphoneNumber\"P\n" + + " ListPurchasedPhoneNumbersRequest\x12\x14\n" + + "\x05limit\x18\x01 \x01(\x05R\x05limit\x12\x16\n" + + "\x06offset\x18\x02 \x01(\x05R\x06offset\"\xa7\x01\n" + + "!ListPurchasedPhoneNumbersResponse\x123\n" + + "\x05items\x18\x01 \x03(\v2\x1d.livekit.PurchasedPhoneNumberR\x05items\x12\x1f\n" + + "\vtotal_count\x18\x02 \x01(\x05R\n" + + "totalCount\x12\x14\n" + + "\x05limit\x18\x03 \x01(\x05R\x05limit\x12\x16\n" + + "\x06offset\x18\x04 \x01(\x05R\x06offset\">\n" + + "\x19ReleasePhoneNumberRequest\x12!\n" + + "\fphone_number\x18\x01 \x01(\tR\vphoneNumber\"\xc4\x02\n" + + "\x18PhoneNumberInventoryItem\x12!\n" + + "\fphone_number\x18\x01 \x01(\tR\vphoneNumber\x12!\n" + + "\fcountry_code\x18\x02 \x01(\tR\vcountryCode\x12\x1b\n" + + "\tarea_code\x18\x03 \x01(\tR\bareaCode\x12\x1a\n" + + "\blocality\x18\x04 \x01(\tR\blocality\x12\x16\n" + + "\x06region\x18\x05 \x01(\tR\x06region\x12\"\n" + + "\fcapabilities\x18\x06 \x01(\tR\fcapabilities\x12,\n" + + "\x12monthly_cost_cents\x18\a \x01(\x03R\x10monthlyCostCents\x12\x1c\n" + + "\tavailable\x18\b \x01(\bR\tavailable\x12!\n" + + "\fcarrier_name\x18\t \x01(\tR\vcarrierName\"\xa9\x02\n" + + "\x14PurchasedPhoneNumber\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12!\n" + + "\fphone_number\x18\x02 \x01(\tR\vphoneNumber\x12!\n" + + "\fcountry_code\x18\x03 \x01(\tR\vcountryCode\x12\x1b\n" + + "\tarea_code\x18\x04 \x01(\tR\bareaCode\x12'\n" + + "\x0fnational_number\x18\x05 \x01(\tR\x0enationalNumber\x12\x1b\n" + + "\tis_mobile\x18\x06 \x01(\bR\bisMobile\x12\x16\n" + + "\x06status\x18\a \x01(\tR\x06status\x12\x1f\n" + + "\vassigned_at\x18\b \x01(\x03R\n" + + "assignedAt\x12\x1f\n" + + "\vreleased_at\x18\t \x01(\x03R\n" + + "releasedAt2\xb5\x03\n" + + "\x12PhoneNumberService\x12q\n" + + "\x18ListPhoneNumberInventory\x12(.livekit.ListPhoneNumberInventoryRequest\x1a).livekit.ListPhoneNumberInventoryResponse\"\x00\x12b\n" + + "\x13PurchasePhoneNumber\x12#.livekit.PurchasePhoneNumberRequest\x1a$.livekit.PurchasePhoneNumberResponse\"\x00\x12t\n" + + "\x19ListPurchasedPhoneNumbers\x12).livekit.ListPurchasedPhoneNumbersRequest\x1a*.livekit.ListPurchasedPhoneNumbersResponse\"\x00\x12R\n" + + "\x12ReleasePhoneNumber\x12\".livekit.ReleasePhoneNumberRequest\x1a\x16.google.protobuf.Empty\"\x00B%Z#github.com/livekit/protocol/livekitb\x06proto3" + +var ( + file_livekit_phone_number_proto_rawDescOnce sync.Once + file_livekit_phone_number_proto_rawDescData []byte +) + +func file_livekit_phone_number_proto_rawDescGZIP() []byte { + file_livekit_phone_number_proto_rawDescOnce.Do(func() { + file_livekit_phone_number_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_livekit_phone_number_proto_rawDesc), len(file_livekit_phone_number_proto_rawDesc))) + }) + return file_livekit_phone_number_proto_rawDescData +} + +var file_livekit_phone_number_proto_msgTypes = make([]protoimpl.MessageInfo, 9) +var file_livekit_phone_number_proto_goTypes = []any{ + (*ListPhoneNumberInventoryRequest)(nil), // 0: livekit.ListPhoneNumberInventoryRequest + (*ListPhoneNumberInventoryResponse)(nil), // 1: livekit.ListPhoneNumberInventoryResponse + (*PurchasePhoneNumberRequest)(nil), // 2: livekit.PurchasePhoneNumberRequest + (*PurchasePhoneNumberResponse)(nil), // 3: livekit.PurchasePhoneNumberResponse + (*ListPurchasedPhoneNumbersRequest)(nil), // 4: livekit.ListPurchasedPhoneNumbersRequest + (*ListPurchasedPhoneNumbersResponse)(nil), // 5: livekit.ListPurchasedPhoneNumbersResponse + (*ReleasePhoneNumberRequest)(nil), // 6: livekit.ReleasePhoneNumberRequest + (*PhoneNumberInventoryItem)(nil), // 7: livekit.PhoneNumberInventoryItem + (*PurchasedPhoneNumber)(nil), // 8: livekit.PurchasedPhoneNumber + (*emptypb.Empty)(nil), // 9: google.protobuf.Empty +} +var file_livekit_phone_number_proto_depIdxs = []int32{ + 7, // 0: livekit.ListPhoneNumberInventoryResponse.items:type_name -> livekit.PhoneNumberInventoryItem + 8, // 1: livekit.PurchasePhoneNumberResponse.phone_number:type_name -> livekit.PurchasedPhoneNumber + 8, // 2: livekit.ListPurchasedPhoneNumbersResponse.items:type_name -> livekit.PurchasedPhoneNumber + 0, // 3: livekit.PhoneNumberService.ListPhoneNumberInventory:input_type -> livekit.ListPhoneNumberInventoryRequest + 2, // 4: livekit.PhoneNumberService.PurchasePhoneNumber:input_type -> livekit.PurchasePhoneNumberRequest + 4, // 5: livekit.PhoneNumberService.ListPurchasedPhoneNumbers:input_type -> livekit.ListPurchasedPhoneNumbersRequest + 6, // 6: livekit.PhoneNumberService.ReleasePhoneNumber:input_type -> livekit.ReleasePhoneNumberRequest + 1, // 7: livekit.PhoneNumberService.ListPhoneNumberInventory:output_type -> livekit.ListPhoneNumberInventoryResponse + 3, // 8: livekit.PhoneNumberService.PurchasePhoneNumber:output_type -> livekit.PurchasePhoneNumberResponse + 5, // 9: livekit.PhoneNumberService.ListPurchasedPhoneNumbers:output_type -> livekit.ListPurchasedPhoneNumbersResponse + 9, // 10: livekit.PhoneNumberService.ReleasePhoneNumber:output_type -> google.protobuf.Empty + 7, // [7:11] is the sub-list for method output_type + 3, // [3:7] is the sub-list for method input_type + 3, // [3:3] is the sub-list for extension type_name + 3, // [3:3] is the sub-list for extension extendee + 0, // [0:3] is the sub-list for field type_name +} + +func init() { file_livekit_phone_number_proto_init() } +func file_livekit_phone_number_proto_init() { + if File_livekit_phone_number_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_livekit_phone_number_proto_rawDesc), len(file_livekit_phone_number_proto_rawDesc)), + NumEnums: 0, + NumMessages: 9, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_livekit_phone_number_proto_goTypes, + DependencyIndexes: file_livekit_phone_number_proto_depIdxs, + MessageInfos: file_livekit_phone_number_proto_msgTypes, + }.Build() + File_livekit_phone_number_proto = out.File + file_livekit_phone_number_proto_goTypes = nil + file_livekit_phone_number_proto_depIdxs = nil +} diff --git a/livekit/livekit_phone_number.twirp.go b/livekit/livekit_phone_number.twirp.go new file mode 100644 index 000000000..1410b090c --- /dev/null +++ b/livekit/livekit_phone_number.twirp.go @@ -0,0 +1,1410 @@ +// Code generated by protoc-gen-twirp v8.1.3, DO NOT EDIT. +// source: livekit_phone_number.proto + +package livekit + +import context "context" +import fmt "fmt" +import http "net/http" +import io "io" +import json "encoding/json" +import strconv "strconv" +import strings "strings" + +import protojson "google.golang.org/protobuf/encoding/protojson" +import proto "google.golang.org/protobuf/proto" +import twirp "github.com/twitchtv/twirp" +import ctxsetters "github.com/twitchtv/twirp/ctxsetters" + +import google_protobuf2 "google.golang.org/protobuf/types/known/emptypb" + +// Version compatibility assertion. +// If the constant is not defined in the package, that likely means +// the package needs to be updated to work with this generated code. +// See https://twitchtv.github.io/twirp/docs/version_matrix.html +const _ = twirp.TwirpPackageMinVersion_8_1_0 + +// ============================ +// PhoneNumberService Interface +// ============================ + +// Public Phone Number Service - External API for phone number management +type PhoneNumberService interface { + // List available phone numbers in inventory + ListPhoneNumberInventory(context.Context, *ListPhoneNumberInventoryRequest) (*ListPhoneNumberInventoryResponse, error) + + // Purchase a phone number from inventory + PurchasePhoneNumber(context.Context, *PurchasePhoneNumberRequest) (*PurchasePhoneNumberResponse, error) + + // List purchased phone numbers for a project + ListPurchasedPhoneNumbers(context.Context, *ListPurchasedPhoneNumbersRequest) (*ListPurchasedPhoneNumbersResponse, error) + + // Release a purchased phone number + ReleasePhoneNumber(context.Context, *ReleasePhoneNumberRequest) (*google_protobuf2.Empty, error) +} + +// ================================== +// PhoneNumberService Protobuf Client +// ================================== + +type phoneNumberServiceProtobufClient struct { + client HTTPClient + urls [4]string + interceptor twirp.Interceptor + opts twirp.ClientOptions +} + +// NewPhoneNumberServiceProtobufClient creates a Protobuf client that implements the PhoneNumberService interface. +// It communicates using Protobuf and can be configured with a custom HTTPClient. +func NewPhoneNumberServiceProtobufClient(baseURL string, client HTTPClient, opts ...twirp.ClientOption) PhoneNumberService { + if c, ok := client.(*http.Client); ok { + client = withoutRedirects(c) + } + + clientOpts := twirp.ClientOptions{} + for _, o := range opts { + o(&clientOpts) + } + + // Using ReadOpt allows backwards and forwards compatibility with new options in the future + literalURLs := false + _ = clientOpts.ReadOpt("literalURLs", &literalURLs) + var pathPrefix string + if ok := clientOpts.ReadOpt("pathPrefix", &pathPrefix); !ok { + pathPrefix = "/twirp" // default prefix + } + + // Build method URLs: []/./ + serviceURL := sanitizeBaseURL(baseURL) + serviceURL += baseServicePath(pathPrefix, "livekit", "PhoneNumberService") + urls := [4]string{ + serviceURL + "ListPhoneNumberInventory", + serviceURL + "PurchasePhoneNumber", + serviceURL + "ListPurchasedPhoneNumbers", + serviceURL + "ReleasePhoneNumber", + } + + return &phoneNumberServiceProtobufClient{ + client: client, + urls: urls, + interceptor: twirp.ChainInterceptors(clientOpts.Interceptors...), + opts: clientOpts, + } +} + +func (c *phoneNumberServiceProtobufClient) ListPhoneNumberInventory(ctx context.Context, in *ListPhoneNumberInventoryRequest) (*ListPhoneNumberInventoryResponse, error) { + ctx = ctxsetters.WithPackageName(ctx, "livekit") + ctx = ctxsetters.WithServiceName(ctx, "PhoneNumberService") + ctx = ctxsetters.WithMethodName(ctx, "ListPhoneNumberInventory") + caller := c.callListPhoneNumberInventory + if c.interceptor != nil { + caller = func(ctx context.Context, req *ListPhoneNumberInventoryRequest) (*ListPhoneNumberInventoryResponse, error) { + resp, err := c.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*ListPhoneNumberInventoryRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*ListPhoneNumberInventoryRequest) when calling interceptor") + } + return c.callListPhoneNumberInventory(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*ListPhoneNumberInventoryResponse) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*ListPhoneNumberInventoryResponse) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + return caller(ctx, in) +} + +func (c *phoneNumberServiceProtobufClient) callListPhoneNumberInventory(ctx context.Context, in *ListPhoneNumberInventoryRequest) (*ListPhoneNumberInventoryResponse, error) { + out := new(ListPhoneNumberInventoryResponse) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[0], in, out) + if err != nil { + twerr, ok := err.(twirp.Error) + if !ok { + twerr = twirp.InternalErrorWith(err) + } + callClientError(ctx, c.opts.Hooks, twerr) + return nil, err + } + + callClientResponseReceived(ctx, c.opts.Hooks) + + return out, nil +} + +func (c *phoneNumberServiceProtobufClient) PurchasePhoneNumber(ctx context.Context, in *PurchasePhoneNumberRequest) (*PurchasePhoneNumberResponse, error) { + ctx = ctxsetters.WithPackageName(ctx, "livekit") + ctx = ctxsetters.WithServiceName(ctx, "PhoneNumberService") + ctx = ctxsetters.WithMethodName(ctx, "PurchasePhoneNumber") + caller := c.callPurchasePhoneNumber + if c.interceptor != nil { + caller = func(ctx context.Context, req *PurchasePhoneNumberRequest) (*PurchasePhoneNumberResponse, error) { + resp, err := c.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*PurchasePhoneNumberRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*PurchasePhoneNumberRequest) when calling interceptor") + } + return c.callPurchasePhoneNumber(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*PurchasePhoneNumberResponse) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*PurchasePhoneNumberResponse) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + return caller(ctx, in) +} + +func (c *phoneNumberServiceProtobufClient) callPurchasePhoneNumber(ctx context.Context, in *PurchasePhoneNumberRequest) (*PurchasePhoneNumberResponse, error) { + out := new(PurchasePhoneNumberResponse) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[1], in, out) + if err != nil { + twerr, ok := err.(twirp.Error) + if !ok { + twerr = twirp.InternalErrorWith(err) + } + callClientError(ctx, c.opts.Hooks, twerr) + return nil, err + } + + callClientResponseReceived(ctx, c.opts.Hooks) + + return out, nil +} + +func (c *phoneNumberServiceProtobufClient) ListPurchasedPhoneNumbers(ctx context.Context, in *ListPurchasedPhoneNumbersRequest) (*ListPurchasedPhoneNumbersResponse, error) { + ctx = ctxsetters.WithPackageName(ctx, "livekit") + ctx = ctxsetters.WithServiceName(ctx, "PhoneNumberService") + ctx = ctxsetters.WithMethodName(ctx, "ListPurchasedPhoneNumbers") + caller := c.callListPurchasedPhoneNumbers + if c.interceptor != nil { + caller = func(ctx context.Context, req *ListPurchasedPhoneNumbersRequest) (*ListPurchasedPhoneNumbersResponse, error) { + resp, err := c.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*ListPurchasedPhoneNumbersRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*ListPurchasedPhoneNumbersRequest) when calling interceptor") + } + return c.callListPurchasedPhoneNumbers(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*ListPurchasedPhoneNumbersResponse) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*ListPurchasedPhoneNumbersResponse) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + return caller(ctx, in) +} + +func (c *phoneNumberServiceProtobufClient) callListPurchasedPhoneNumbers(ctx context.Context, in *ListPurchasedPhoneNumbersRequest) (*ListPurchasedPhoneNumbersResponse, error) { + out := new(ListPurchasedPhoneNumbersResponse) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[2], in, out) + if err != nil { + twerr, ok := err.(twirp.Error) + if !ok { + twerr = twirp.InternalErrorWith(err) + } + callClientError(ctx, c.opts.Hooks, twerr) + return nil, err + } + + callClientResponseReceived(ctx, c.opts.Hooks) + + return out, nil +} + +func (c *phoneNumberServiceProtobufClient) ReleasePhoneNumber(ctx context.Context, in *ReleasePhoneNumberRequest) (*google_protobuf2.Empty, error) { + ctx = ctxsetters.WithPackageName(ctx, "livekit") + ctx = ctxsetters.WithServiceName(ctx, "PhoneNumberService") + ctx = ctxsetters.WithMethodName(ctx, "ReleasePhoneNumber") + caller := c.callReleasePhoneNumber + if c.interceptor != nil { + caller = func(ctx context.Context, req *ReleasePhoneNumberRequest) (*google_protobuf2.Empty, error) { + resp, err := c.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*ReleasePhoneNumberRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*ReleasePhoneNumberRequest) when calling interceptor") + } + return c.callReleasePhoneNumber(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*google_protobuf2.Empty) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*google_protobuf2.Empty) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + return caller(ctx, in) +} + +func (c *phoneNumberServiceProtobufClient) callReleasePhoneNumber(ctx context.Context, in *ReleasePhoneNumberRequest) (*google_protobuf2.Empty, error) { + out := new(google_protobuf2.Empty) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[3], in, out) + if err != nil { + twerr, ok := err.(twirp.Error) + if !ok { + twerr = twirp.InternalErrorWith(err) + } + callClientError(ctx, c.opts.Hooks, twerr) + return nil, err + } + + callClientResponseReceived(ctx, c.opts.Hooks) + + return out, nil +} + +// ============================== +// PhoneNumberService JSON Client +// ============================== + +type phoneNumberServiceJSONClient struct { + client HTTPClient + urls [4]string + interceptor twirp.Interceptor + opts twirp.ClientOptions +} + +// NewPhoneNumberServiceJSONClient creates a JSON client that implements the PhoneNumberService interface. +// It communicates using JSON and can be configured with a custom HTTPClient. +func NewPhoneNumberServiceJSONClient(baseURL string, client HTTPClient, opts ...twirp.ClientOption) PhoneNumberService { + if c, ok := client.(*http.Client); ok { + client = withoutRedirects(c) + } + + clientOpts := twirp.ClientOptions{} + for _, o := range opts { + o(&clientOpts) + } + + // Using ReadOpt allows backwards and forwards compatibility with new options in the future + literalURLs := false + _ = clientOpts.ReadOpt("literalURLs", &literalURLs) + var pathPrefix string + if ok := clientOpts.ReadOpt("pathPrefix", &pathPrefix); !ok { + pathPrefix = "/twirp" // default prefix + } + + // Build method URLs: []/./ + serviceURL := sanitizeBaseURL(baseURL) + serviceURL += baseServicePath(pathPrefix, "livekit", "PhoneNumberService") + urls := [4]string{ + serviceURL + "ListPhoneNumberInventory", + serviceURL + "PurchasePhoneNumber", + serviceURL + "ListPurchasedPhoneNumbers", + serviceURL + "ReleasePhoneNumber", + } + + return &phoneNumberServiceJSONClient{ + client: client, + urls: urls, + interceptor: twirp.ChainInterceptors(clientOpts.Interceptors...), + opts: clientOpts, + } +} + +func (c *phoneNumberServiceJSONClient) ListPhoneNumberInventory(ctx context.Context, in *ListPhoneNumberInventoryRequest) (*ListPhoneNumberInventoryResponse, error) { + ctx = ctxsetters.WithPackageName(ctx, "livekit") + ctx = ctxsetters.WithServiceName(ctx, "PhoneNumberService") + ctx = ctxsetters.WithMethodName(ctx, "ListPhoneNumberInventory") + caller := c.callListPhoneNumberInventory + if c.interceptor != nil { + caller = func(ctx context.Context, req *ListPhoneNumberInventoryRequest) (*ListPhoneNumberInventoryResponse, error) { + resp, err := c.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*ListPhoneNumberInventoryRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*ListPhoneNumberInventoryRequest) when calling interceptor") + } + return c.callListPhoneNumberInventory(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*ListPhoneNumberInventoryResponse) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*ListPhoneNumberInventoryResponse) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + return caller(ctx, in) +} + +func (c *phoneNumberServiceJSONClient) callListPhoneNumberInventory(ctx context.Context, in *ListPhoneNumberInventoryRequest) (*ListPhoneNumberInventoryResponse, error) { + out := new(ListPhoneNumberInventoryResponse) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[0], in, out) + if err != nil { + twerr, ok := err.(twirp.Error) + if !ok { + twerr = twirp.InternalErrorWith(err) + } + callClientError(ctx, c.opts.Hooks, twerr) + return nil, err + } + + callClientResponseReceived(ctx, c.opts.Hooks) + + return out, nil +} + +func (c *phoneNumberServiceJSONClient) PurchasePhoneNumber(ctx context.Context, in *PurchasePhoneNumberRequest) (*PurchasePhoneNumberResponse, error) { + ctx = ctxsetters.WithPackageName(ctx, "livekit") + ctx = ctxsetters.WithServiceName(ctx, "PhoneNumberService") + ctx = ctxsetters.WithMethodName(ctx, "PurchasePhoneNumber") + caller := c.callPurchasePhoneNumber + if c.interceptor != nil { + caller = func(ctx context.Context, req *PurchasePhoneNumberRequest) (*PurchasePhoneNumberResponse, error) { + resp, err := c.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*PurchasePhoneNumberRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*PurchasePhoneNumberRequest) when calling interceptor") + } + return c.callPurchasePhoneNumber(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*PurchasePhoneNumberResponse) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*PurchasePhoneNumberResponse) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + return caller(ctx, in) +} + +func (c *phoneNumberServiceJSONClient) callPurchasePhoneNumber(ctx context.Context, in *PurchasePhoneNumberRequest) (*PurchasePhoneNumberResponse, error) { + out := new(PurchasePhoneNumberResponse) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[1], in, out) + if err != nil { + twerr, ok := err.(twirp.Error) + if !ok { + twerr = twirp.InternalErrorWith(err) + } + callClientError(ctx, c.opts.Hooks, twerr) + return nil, err + } + + callClientResponseReceived(ctx, c.opts.Hooks) + + return out, nil +} + +func (c *phoneNumberServiceJSONClient) ListPurchasedPhoneNumbers(ctx context.Context, in *ListPurchasedPhoneNumbersRequest) (*ListPurchasedPhoneNumbersResponse, error) { + ctx = ctxsetters.WithPackageName(ctx, "livekit") + ctx = ctxsetters.WithServiceName(ctx, "PhoneNumberService") + ctx = ctxsetters.WithMethodName(ctx, "ListPurchasedPhoneNumbers") + caller := c.callListPurchasedPhoneNumbers + if c.interceptor != nil { + caller = func(ctx context.Context, req *ListPurchasedPhoneNumbersRequest) (*ListPurchasedPhoneNumbersResponse, error) { + resp, err := c.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*ListPurchasedPhoneNumbersRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*ListPurchasedPhoneNumbersRequest) when calling interceptor") + } + return c.callListPurchasedPhoneNumbers(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*ListPurchasedPhoneNumbersResponse) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*ListPurchasedPhoneNumbersResponse) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + return caller(ctx, in) +} + +func (c *phoneNumberServiceJSONClient) callListPurchasedPhoneNumbers(ctx context.Context, in *ListPurchasedPhoneNumbersRequest) (*ListPurchasedPhoneNumbersResponse, error) { + out := new(ListPurchasedPhoneNumbersResponse) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[2], in, out) + if err != nil { + twerr, ok := err.(twirp.Error) + if !ok { + twerr = twirp.InternalErrorWith(err) + } + callClientError(ctx, c.opts.Hooks, twerr) + return nil, err + } + + callClientResponseReceived(ctx, c.opts.Hooks) + + return out, nil +} + +func (c *phoneNumberServiceJSONClient) ReleasePhoneNumber(ctx context.Context, in *ReleasePhoneNumberRequest) (*google_protobuf2.Empty, error) { + ctx = ctxsetters.WithPackageName(ctx, "livekit") + ctx = ctxsetters.WithServiceName(ctx, "PhoneNumberService") + ctx = ctxsetters.WithMethodName(ctx, "ReleasePhoneNumber") + caller := c.callReleasePhoneNumber + if c.interceptor != nil { + caller = func(ctx context.Context, req *ReleasePhoneNumberRequest) (*google_protobuf2.Empty, error) { + resp, err := c.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*ReleasePhoneNumberRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*ReleasePhoneNumberRequest) when calling interceptor") + } + return c.callReleasePhoneNumber(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*google_protobuf2.Empty) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*google_protobuf2.Empty) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + return caller(ctx, in) +} + +func (c *phoneNumberServiceJSONClient) callReleasePhoneNumber(ctx context.Context, in *ReleasePhoneNumberRequest) (*google_protobuf2.Empty, error) { + out := new(google_protobuf2.Empty) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[3], in, out) + if err != nil { + twerr, ok := err.(twirp.Error) + if !ok { + twerr = twirp.InternalErrorWith(err) + } + callClientError(ctx, c.opts.Hooks, twerr) + return nil, err + } + + callClientResponseReceived(ctx, c.opts.Hooks) + + return out, nil +} + +// ================================= +// PhoneNumberService Server Handler +// ================================= + +type phoneNumberServiceServer struct { + PhoneNumberService + interceptor twirp.Interceptor + hooks *twirp.ServerHooks + pathPrefix string // prefix for routing + jsonSkipDefaults bool // do not include unpopulated fields (default values) in the response + jsonCamelCase bool // JSON fields are serialized as lowerCamelCase rather than keeping the original proto names +} + +// NewPhoneNumberServiceServer builds a TwirpServer that can be used as an http.Handler to handle +// HTTP requests that are routed to the right method in the provided svc implementation. +// The opts are twirp.ServerOption modifiers, for example twirp.WithServerHooks(hooks). +func NewPhoneNumberServiceServer(svc PhoneNumberService, opts ...interface{}) TwirpServer { + serverOpts := newServerOpts(opts) + + // Using ReadOpt allows backwards and forwards compatibility with new options in the future + jsonSkipDefaults := false + _ = serverOpts.ReadOpt("jsonSkipDefaults", &jsonSkipDefaults) + jsonCamelCase := false + _ = serverOpts.ReadOpt("jsonCamelCase", &jsonCamelCase) + var pathPrefix string + if ok := serverOpts.ReadOpt("pathPrefix", &pathPrefix); !ok { + pathPrefix = "/twirp" // default prefix + } + + return &phoneNumberServiceServer{ + PhoneNumberService: svc, + hooks: serverOpts.Hooks, + interceptor: twirp.ChainInterceptors(serverOpts.Interceptors...), + pathPrefix: pathPrefix, + jsonSkipDefaults: jsonSkipDefaults, + jsonCamelCase: jsonCamelCase, + } +} + +// writeError writes an HTTP response with a valid Twirp error format, and triggers hooks. +// If err is not a twirp.Error, it will get wrapped with twirp.InternalErrorWith(err) +func (s *phoneNumberServiceServer) writeError(ctx context.Context, resp http.ResponseWriter, err error) { + writeError(ctx, resp, err, s.hooks) +} + +// handleRequestBodyError is used to handle error when the twirp server cannot read request +func (s *phoneNumberServiceServer) handleRequestBodyError(ctx context.Context, resp http.ResponseWriter, msg string, err error) { + if context.Canceled == ctx.Err() { + s.writeError(ctx, resp, twirp.NewError(twirp.Canceled, "failed to read request: context canceled")) + return + } + if context.DeadlineExceeded == ctx.Err() { + s.writeError(ctx, resp, twirp.NewError(twirp.DeadlineExceeded, "failed to read request: deadline exceeded")) + return + } + s.writeError(ctx, resp, twirp.WrapError(malformedRequestError(msg), err)) +} + +// PhoneNumberServicePathPrefix is a convenience constant that may identify URL paths. +// Should be used with caution, it only matches routes generated by Twirp Go clients, +// with the default "/twirp" prefix and default CamelCase service and method names. +// More info: https://twitchtv.github.io/twirp/docs/routing.html +const PhoneNumberServicePathPrefix = "/twirp/livekit.PhoneNumberService/" + +func (s *phoneNumberServiceServer) ServeHTTP(resp http.ResponseWriter, req *http.Request) { + ctx := req.Context() + ctx = ctxsetters.WithPackageName(ctx, "livekit") + ctx = ctxsetters.WithServiceName(ctx, "PhoneNumberService") + ctx = ctxsetters.WithResponseWriter(ctx, resp) + + var err error + ctx, err = callRequestReceived(ctx, s.hooks) + if err != nil { + s.writeError(ctx, resp, err) + return + } + + if req.Method != "POST" { + msg := fmt.Sprintf("unsupported method %q (only POST is allowed)", req.Method) + s.writeError(ctx, resp, badRouteError(msg, req.Method, req.URL.Path)) + return + } + + // Verify path format: []/./ + prefix, pkgService, method := parseTwirpPath(req.URL.Path) + if pkgService != "livekit.PhoneNumberService" { + msg := fmt.Sprintf("no handler for path %q", req.URL.Path) + s.writeError(ctx, resp, badRouteError(msg, req.Method, req.URL.Path)) + return + } + if prefix != s.pathPrefix { + msg := fmt.Sprintf("invalid path prefix %q, expected %q, on path %q", prefix, s.pathPrefix, req.URL.Path) + s.writeError(ctx, resp, badRouteError(msg, req.Method, req.URL.Path)) + return + } + + switch method { + case "ListPhoneNumberInventory": + s.serveListPhoneNumberInventory(ctx, resp, req) + return + case "PurchasePhoneNumber": + s.servePurchasePhoneNumber(ctx, resp, req) + return + case "ListPurchasedPhoneNumbers": + s.serveListPurchasedPhoneNumbers(ctx, resp, req) + return + case "ReleasePhoneNumber": + s.serveReleasePhoneNumber(ctx, resp, req) + return + default: + msg := fmt.Sprintf("no handler for path %q", req.URL.Path) + s.writeError(ctx, resp, badRouteError(msg, req.Method, req.URL.Path)) + return + } +} + +func (s *phoneNumberServiceServer) serveListPhoneNumberInventory(ctx context.Context, resp http.ResponseWriter, req *http.Request) { + header := req.Header.Get("Content-Type") + i := strings.Index(header, ";") + if i == -1 { + i = len(header) + } + switch strings.TrimSpace(strings.ToLower(header[:i])) { + case "application/json": + s.serveListPhoneNumberInventoryJSON(ctx, resp, req) + case "application/protobuf": + s.serveListPhoneNumberInventoryProtobuf(ctx, resp, req) + default: + msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type")) + twerr := badRouteError(msg, req.Method, req.URL.Path) + s.writeError(ctx, resp, twerr) + } +} + +func (s *phoneNumberServiceServer) serveListPhoneNumberInventoryJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) { + var err error + ctx = ctxsetters.WithMethodName(ctx, "ListPhoneNumberInventory") + ctx, err = callRequestRouted(ctx, s.hooks) + if err != nil { + s.writeError(ctx, resp, err) + return + } + + d := json.NewDecoder(req.Body) + rawReqBody := json.RawMessage{} + if err := d.Decode(&rawReqBody); err != nil { + s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err) + return + } + reqContent := new(ListPhoneNumberInventoryRequest) + unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true} + if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil { + s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err) + return + } + + handler := s.PhoneNumberService.ListPhoneNumberInventory + if s.interceptor != nil { + handler = func(ctx context.Context, req *ListPhoneNumberInventoryRequest) (*ListPhoneNumberInventoryResponse, error) { + resp, err := s.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*ListPhoneNumberInventoryRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*ListPhoneNumberInventoryRequest) when calling interceptor") + } + return s.PhoneNumberService.ListPhoneNumberInventory(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*ListPhoneNumberInventoryResponse) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*ListPhoneNumberInventoryResponse) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + + // Call service method + var respContent *ListPhoneNumberInventoryResponse + func() { + defer ensurePanicResponses(ctx, resp, s.hooks) + respContent, err = handler(ctx, reqContent) + }() + + if err != nil { + s.writeError(ctx, resp, err) + return + } + if respContent == nil { + s.writeError(ctx, resp, twirp.InternalError("received a nil *ListPhoneNumberInventoryResponse and nil error while calling ListPhoneNumberInventory. nil responses are not supported")) + return + } + + ctx = callResponsePrepared(ctx, s.hooks) + + marshaler := &protojson.MarshalOptions{UseProtoNames: !s.jsonCamelCase, EmitUnpopulated: !s.jsonSkipDefaults} + respBytes, err := marshaler.Marshal(respContent) + if err != nil { + s.writeError(ctx, resp, wrapInternal(err, "failed to marshal json response")) + return + } + + ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK) + resp.Header().Set("Content-Type", "application/json") + resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes))) + resp.WriteHeader(http.StatusOK) + + if n, err := resp.Write(respBytes); err != nil { + msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error()) + twerr := twirp.NewError(twirp.Unknown, msg) + ctx = callError(ctx, s.hooks, twerr) + } + callResponseSent(ctx, s.hooks) +} + +func (s *phoneNumberServiceServer) serveListPhoneNumberInventoryProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) { + var err error + ctx = ctxsetters.WithMethodName(ctx, "ListPhoneNumberInventory") + ctx, err = callRequestRouted(ctx, s.hooks) + if err != nil { + s.writeError(ctx, resp, err) + return + } + + buf, err := io.ReadAll(req.Body) + if err != nil { + s.handleRequestBodyError(ctx, resp, "failed to read request body", err) + return + } + reqContent := new(ListPhoneNumberInventoryRequest) + if err = proto.Unmarshal(buf, reqContent); err != nil { + s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded")) + return + } + + handler := s.PhoneNumberService.ListPhoneNumberInventory + if s.interceptor != nil { + handler = func(ctx context.Context, req *ListPhoneNumberInventoryRequest) (*ListPhoneNumberInventoryResponse, error) { + resp, err := s.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*ListPhoneNumberInventoryRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*ListPhoneNumberInventoryRequest) when calling interceptor") + } + return s.PhoneNumberService.ListPhoneNumberInventory(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*ListPhoneNumberInventoryResponse) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*ListPhoneNumberInventoryResponse) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + + // Call service method + var respContent *ListPhoneNumberInventoryResponse + func() { + defer ensurePanicResponses(ctx, resp, s.hooks) + respContent, err = handler(ctx, reqContent) + }() + + if err != nil { + s.writeError(ctx, resp, err) + return + } + if respContent == nil { + s.writeError(ctx, resp, twirp.InternalError("received a nil *ListPhoneNumberInventoryResponse and nil error while calling ListPhoneNumberInventory. nil responses are not supported")) + return + } + + ctx = callResponsePrepared(ctx, s.hooks) + + respBytes, err := proto.Marshal(respContent) + if err != nil { + s.writeError(ctx, resp, wrapInternal(err, "failed to marshal proto response")) + return + } + + ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK) + resp.Header().Set("Content-Type", "application/protobuf") + resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes))) + resp.WriteHeader(http.StatusOK) + if n, err := resp.Write(respBytes); err != nil { + msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error()) + twerr := twirp.NewError(twirp.Unknown, msg) + ctx = callError(ctx, s.hooks, twerr) + } + callResponseSent(ctx, s.hooks) +} + +func (s *phoneNumberServiceServer) servePurchasePhoneNumber(ctx context.Context, resp http.ResponseWriter, req *http.Request) { + header := req.Header.Get("Content-Type") + i := strings.Index(header, ";") + if i == -1 { + i = len(header) + } + switch strings.TrimSpace(strings.ToLower(header[:i])) { + case "application/json": + s.servePurchasePhoneNumberJSON(ctx, resp, req) + case "application/protobuf": + s.servePurchasePhoneNumberProtobuf(ctx, resp, req) + default: + msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type")) + twerr := badRouteError(msg, req.Method, req.URL.Path) + s.writeError(ctx, resp, twerr) + } +} + +func (s *phoneNumberServiceServer) servePurchasePhoneNumberJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) { + var err error + ctx = ctxsetters.WithMethodName(ctx, "PurchasePhoneNumber") + ctx, err = callRequestRouted(ctx, s.hooks) + if err != nil { + s.writeError(ctx, resp, err) + return + } + + d := json.NewDecoder(req.Body) + rawReqBody := json.RawMessage{} + if err := d.Decode(&rawReqBody); err != nil { + s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err) + return + } + reqContent := new(PurchasePhoneNumberRequest) + unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true} + if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil { + s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err) + return + } + + handler := s.PhoneNumberService.PurchasePhoneNumber + if s.interceptor != nil { + handler = func(ctx context.Context, req *PurchasePhoneNumberRequest) (*PurchasePhoneNumberResponse, error) { + resp, err := s.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*PurchasePhoneNumberRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*PurchasePhoneNumberRequest) when calling interceptor") + } + return s.PhoneNumberService.PurchasePhoneNumber(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*PurchasePhoneNumberResponse) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*PurchasePhoneNumberResponse) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + + // Call service method + var respContent *PurchasePhoneNumberResponse + func() { + defer ensurePanicResponses(ctx, resp, s.hooks) + respContent, err = handler(ctx, reqContent) + }() + + if err != nil { + s.writeError(ctx, resp, err) + return + } + if respContent == nil { + s.writeError(ctx, resp, twirp.InternalError("received a nil *PurchasePhoneNumberResponse and nil error while calling PurchasePhoneNumber. nil responses are not supported")) + return + } + + ctx = callResponsePrepared(ctx, s.hooks) + + marshaler := &protojson.MarshalOptions{UseProtoNames: !s.jsonCamelCase, EmitUnpopulated: !s.jsonSkipDefaults} + respBytes, err := marshaler.Marshal(respContent) + if err != nil { + s.writeError(ctx, resp, wrapInternal(err, "failed to marshal json response")) + return + } + + ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK) + resp.Header().Set("Content-Type", "application/json") + resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes))) + resp.WriteHeader(http.StatusOK) + + if n, err := resp.Write(respBytes); err != nil { + msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error()) + twerr := twirp.NewError(twirp.Unknown, msg) + ctx = callError(ctx, s.hooks, twerr) + } + callResponseSent(ctx, s.hooks) +} + +func (s *phoneNumberServiceServer) servePurchasePhoneNumberProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) { + var err error + ctx = ctxsetters.WithMethodName(ctx, "PurchasePhoneNumber") + ctx, err = callRequestRouted(ctx, s.hooks) + if err != nil { + s.writeError(ctx, resp, err) + return + } + + buf, err := io.ReadAll(req.Body) + if err != nil { + s.handleRequestBodyError(ctx, resp, "failed to read request body", err) + return + } + reqContent := new(PurchasePhoneNumberRequest) + if err = proto.Unmarshal(buf, reqContent); err != nil { + s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded")) + return + } + + handler := s.PhoneNumberService.PurchasePhoneNumber + if s.interceptor != nil { + handler = func(ctx context.Context, req *PurchasePhoneNumberRequest) (*PurchasePhoneNumberResponse, error) { + resp, err := s.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*PurchasePhoneNumberRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*PurchasePhoneNumberRequest) when calling interceptor") + } + return s.PhoneNumberService.PurchasePhoneNumber(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*PurchasePhoneNumberResponse) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*PurchasePhoneNumberResponse) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + + // Call service method + var respContent *PurchasePhoneNumberResponse + func() { + defer ensurePanicResponses(ctx, resp, s.hooks) + respContent, err = handler(ctx, reqContent) + }() + + if err != nil { + s.writeError(ctx, resp, err) + return + } + if respContent == nil { + s.writeError(ctx, resp, twirp.InternalError("received a nil *PurchasePhoneNumberResponse and nil error while calling PurchasePhoneNumber. nil responses are not supported")) + return + } + + ctx = callResponsePrepared(ctx, s.hooks) + + respBytes, err := proto.Marshal(respContent) + if err != nil { + s.writeError(ctx, resp, wrapInternal(err, "failed to marshal proto response")) + return + } + + ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK) + resp.Header().Set("Content-Type", "application/protobuf") + resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes))) + resp.WriteHeader(http.StatusOK) + if n, err := resp.Write(respBytes); err != nil { + msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error()) + twerr := twirp.NewError(twirp.Unknown, msg) + ctx = callError(ctx, s.hooks, twerr) + } + callResponseSent(ctx, s.hooks) +} + +func (s *phoneNumberServiceServer) serveListPurchasedPhoneNumbers(ctx context.Context, resp http.ResponseWriter, req *http.Request) { + header := req.Header.Get("Content-Type") + i := strings.Index(header, ";") + if i == -1 { + i = len(header) + } + switch strings.TrimSpace(strings.ToLower(header[:i])) { + case "application/json": + s.serveListPurchasedPhoneNumbersJSON(ctx, resp, req) + case "application/protobuf": + s.serveListPurchasedPhoneNumbersProtobuf(ctx, resp, req) + default: + msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type")) + twerr := badRouteError(msg, req.Method, req.URL.Path) + s.writeError(ctx, resp, twerr) + } +} + +func (s *phoneNumberServiceServer) serveListPurchasedPhoneNumbersJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) { + var err error + ctx = ctxsetters.WithMethodName(ctx, "ListPurchasedPhoneNumbers") + ctx, err = callRequestRouted(ctx, s.hooks) + if err != nil { + s.writeError(ctx, resp, err) + return + } + + d := json.NewDecoder(req.Body) + rawReqBody := json.RawMessage{} + if err := d.Decode(&rawReqBody); err != nil { + s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err) + return + } + reqContent := new(ListPurchasedPhoneNumbersRequest) + unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true} + if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil { + s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err) + return + } + + handler := s.PhoneNumberService.ListPurchasedPhoneNumbers + if s.interceptor != nil { + handler = func(ctx context.Context, req *ListPurchasedPhoneNumbersRequest) (*ListPurchasedPhoneNumbersResponse, error) { + resp, err := s.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*ListPurchasedPhoneNumbersRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*ListPurchasedPhoneNumbersRequest) when calling interceptor") + } + return s.PhoneNumberService.ListPurchasedPhoneNumbers(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*ListPurchasedPhoneNumbersResponse) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*ListPurchasedPhoneNumbersResponse) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + + // Call service method + var respContent *ListPurchasedPhoneNumbersResponse + func() { + defer ensurePanicResponses(ctx, resp, s.hooks) + respContent, err = handler(ctx, reqContent) + }() + + if err != nil { + s.writeError(ctx, resp, err) + return + } + if respContent == nil { + s.writeError(ctx, resp, twirp.InternalError("received a nil *ListPurchasedPhoneNumbersResponse and nil error while calling ListPurchasedPhoneNumbers. nil responses are not supported")) + return + } + + ctx = callResponsePrepared(ctx, s.hooks) + + marshaler := &protojson.MarshalOptions{UseProtoNames: !s.jsonCamelCase, EmitUnpopulated: !s.jsonSkipDefaults} + respBytes, err := marshaler.Marshal(respContent) + if err != nil { + s.writeError(ctx, resp, wrapInternal(err, "failed to marshal json response")) + return + } + + ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK) + resp.Header().Set("Content-Type", "application/json") + resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes))) + resp.WriteHeader(http.StatusOK) + + if n, err := resp.Write(respBytes); err != nil { + msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error()) + twerr := twirp.NewError(twirp.Unknown, msg) + ctx = callError(ctx, s.hooks, twerr) + } + callResponseSent(ctx, s.hooks) +} + +func (s *phoneNumberServiceServer) serveListPurchasedPhoneNumbersProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) { + var err error + ctx = ctxsetters.WithMethodName(ctx, "ListPurchasedPhoneNumbers") + ctx, err = callRequestRouted(ctx, s.hooks) + if err != nil { + s.writeError(ctx, resp, err) + return + } + + buf, err := io.ReadAll(req.Body) + if err != nil { + s.handleRequestBodyError(ctx, resp, "failed to read request body", err) + return + } + reqContent := new(ListPurchasedPhoneNumbersRequest) + if err = proto.Unmarshal(buf, reqContent); err != nil { + s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded")) + return + } + + handler := s.PhoneNumberService.ListPurchasedPhoneNumbers + if s.interceptor != nil { + handler = func(ctx context.Context, req *ListPurchasedPhoneNumbersRequest) (*ListPurchasedPhoneNumbersResponse, error) { + resp, err := s.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*ListPurchasedPhoneNumbersRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*ListPurchasedPhoneNumbersRequest) when calling interceptor") + } + return s.PhoneNumberService.ListPurchasedPhoneNumbers(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*ListPurchasedPhoneNumbersResponse) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*ListPurchasedPhoneNumbersResponse) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + + // Call service method + var respContent *ListPurchasedPhoneNumbersResponse + func() { + defer ensurePanicResponses(ctx, resp, s.hooks) + respContent, err = handler(ctx, reqContent) + }() + + if err != nil { + s.writeError(ctx, resp, err) + return + } + if respContent == nil { + s.writeError(ctx, resp, twirp.InternalError("received a nil *ListPurchasedPhoneNumbersResponse and nil error while calling ListPurchasedPhoneNumbers. nil responses are not supported")) + return + } + + ctx = callResponsePrepared(ctx, s.hooks) + + respBytes, err := proto.Marshal(respContent) + if err != nil { + s.writeError(ctx, resp, wrapInternal(err, "failed to marshal proto response")) + return + } + + ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK) + resp.Header().Set("Content-Type", "application/protobuf") + resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes))) + resp.WriteHeader(http.StatusOK) + if n, err := resp.Write(respBytes); err != nil { + msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error()) + twerr := twirp.NewError(twirp.Unknown, msg) + ctx = callError(ctx, s.hooks, twerr) + } + callResponseSent(ctx, s.hooks) +} + +func (s *phoneNumberServiceServer) serveReleasePhoneNumber(ctx context.Context, resp http.ResponseWriter, req *http.Request) { + header := req.Header.Get("Content-Type") + i := strings.Index(header, ";") + if i == -1 { + i = len(header) + } + switch strings.TrimSpace(strings.ToLower(header[:i])) { + case "application/json": + s.serveReleasePhoneNumberJSON(ctx, resp, req) + case "application/protobuf": + s.serveReleasePhoneNumberProtobuf(ctx, resp, req) + default: + msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type")) + twerr := badRouteError(msg, req.Method, req.URL.Path) + s.writeError(ctx, resp, twerr) + } +} + +func (s *phoneNumberServiceServer) serveReleasePhoneNumberJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) { + var err error + ctx = ctxsetters.WithMethodName(ctx, "ReleasePhoneNumber") + ctx, err = callRequestRouted(ctx, s.hooks) + if err != nil { + s.writeError(ctx, resp, err) + return + } + + d := json.NewDecoder(req.Body) + rawReqBody := json.RawMessage{} + if err := d.Decode(&rawReqBody); err != nil { + s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err) + return + } + reqContent := new(ReleasePhoneNumberRequest) + unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true} + if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil { + s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err) + return + } + + handler := s.PhoneNumberService.ReleasePhoneNumber + if s.interceptor != nil { + handler = func(ctx context.Context, req *ReleasePhoneNumberRequest) (*google_protobuf2.Empty, error) { + resp, err := s.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*ReleasePhoneNumberRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*ReleasePhoneNumberRequest) when calling interceptor") + } + return s.PhoneNumberService.ReleasePhoneNumber(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*google_protobuf2.Empty) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*google_protobuf2.Empty) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + + // Call service method + var respContent *google_protobuf2.Empty + func() { + defer ensurePanicResponses(ctx, resp, s.hooks) + respContent, err = handler(ctx, reqContent) + }() + + if err != nil { + s.writeError(ctx, resp, err) + return + } + if respContent == nil { + s.writeError(ctx, resp, twirp.InternalError("received a nil *google_protobuf2.Empty and nil error while calling ReleasePhoneNumber. nil responses are not supported")) + return + } + + ctx = callResponsePrepared(ctx, s.hooks) + + marshaler := &protojson.MarshalOptions{UseProtoNames: !s.jsonCamelCase, EmitUnpopulated: !s.jsonSkipDefaults} + respBytes, err := marshaler.Marshal(respContent) + if err != nil { + s.writeError(ctx, resp, wrapInternal(err, "failed to marshal json response")) + return + } + + ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK) + resp.Header().Set("Content-Type", "application/json") + resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes))) + resp.WriteHeader(http.StatusOK) + + if n, err := resp.Write(respBytes); err != nil { + msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error()) + twerr := twirp.NewError(twirp.Unknown, msg) + ctx = callError(ctx, s.hooks, twerr) + } + callResponseSent(ctx, s.hooks) +} + +func (s *phoneNumberServiceServer) serveReleasePhoneNumberProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) { + var err error + ctx = ctxsetters.WithMethodName(ctx, "ReleasePhoneNumber") + ctx, err = callRequestRouted(ctx, s.hooks) + if err != nil { + s.writeError(ctx, resp, err) + return + } + + buf, err := io.ReadAll(req.Body) + if err != nil { + s.handleRequestBodyError(ctx, resp, "failed to read request body", err) + return + } + reqContent := new(ReleasePhoneNumberRequest) + if err = proto.Unmarshal(buf, reqContent); err != nil { + s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded")) + return + } + + handler := s.PhoneNumberService.ReleasePhoneNumber + if s.interceptor != nil { + handler = func(ctx context.Context, req *ReleasePhoneNumberRequest) (*google_protobuf2.Empty, error) { + resp, err := s.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*ReleasePhoneNumberRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*ReleasePhoneNumberRequest) when calling interceptor") + } + return s.PhoneNumberService.ReleasePhoneNumber(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*google_protobuf2.Empty) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*google_protobuf2.Empty) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + + // Call service method + var respContent *google_protobuf2.Empty + func() { + defer ensurePanicResponses(ctx, resp, s.hooks) + respContent, err = handler(ctx, reqContent) + }() + + if err != nil { + s.writeError(ctx, resp, err) + return + } + if respContent == nil { + s.writeError(ctx, resp, twirp.InternalError("received a nil *google_protobuf2.Empty and nil error while calling ReleasePhoneNumber. nil responses are not supported")) + return + } + + ctx = callResponsePrepared(ctx, s.hooks) + + respBytes, err := proto.Marshal(respContent) + if err != nil { + s.writeError(ctx, resp, wrapInternal(err, "failed to marshal proto response")) + return + } + + ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK) + resp.Header().Set("Content-Type", "application/protobuf") + resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes))) + resp.WriteHeader(http.StatusOK) + if n, err := resp.Write(respBytes); err != nil { + msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error()) + twerr := twirp.NewError(twirp.Unknown, msg) + ctx = callError(ctx, s.hooks, twerr) + } + callResponseSent(ctx, s.hooks) +} + +func (s *phoneNumberServiceServer) ServiceDescriptor() ([]byte, int) { + return twirpFileDescriptor6, 0 +} + +func (s *phoneNumberServiceServer) ProtocGenTwirpVersion() string { + return "v8.1.3" +} + +// PathPrefix returns the base service path, in the form: "//./" +// that is everything in a Twirp route except for the . This can be used for routing, +// for example to identify the requests that are targeted to this service in a mux. +func (s *phoneNumberServiceServer) PathPrefix() string { + return baseServicePath(s.pathPrefix, "livekit", "PhoneNumberService") +} + +var twirpFileDescriptor6 = []byte{ + // 712 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x55, 0x4f, 0x4f, 0xdb, 0x4a, + 0x10, 0xc7, 0x36, 0x81, 0x78, 0x82, 0x78, 0x4f, 0xfb, 0x10, 0x32, 0xce, 0x7b, 0x22, 0x98, 0x57, + 0x35, 0xad, 0xaa, 0x20, 0xc1, 0xa1, 0xb7, 0xb6, 0x34, 0xea, 0x01, 0xa9, 0x45, 0xc8, 0xbd, 0xf5, + 0x62, 0xad, 0x9d, 0x21, 0x59, 0xd5, 0xf6, 0x06, 0xef, 0x3a, 0x52, 0x3e, 0x51, 0x45, 0xef, 0xfd, + 0x06, 0xfd, 0x60, 0x95, 0xd7, 0xeb, 0xfc, 0x21, 0x0e, 0x41, 0x95, 0x7a, 0x9c, 0xdf, 0xcc, 0xce, + 0xcc, 0xef, 0xb7, 0x3b, 0xb3, 0xe0, 0xc6, 0x6c, 0x82, 0x5f, 0x99, 0x0c, 0xc6, 0x23, 0x9e, 0x62, + 0x90, 0xe6, 0x49, 0x88, 0x59, 0x6f, 0x9c, 0x71, 0xc9, 0xc9, 0xae, 0xf6, 0xb9, 0xed, 0x21, 0xe7, + 0xc3, 0x18, 0xcf, 0x14, 0x1c, 0xe6, 0xb7, 0x67, 0x98, 0x8c, 0xe5, 0xb4, 0x8c, 0xf2, 0xee, 0x0d, + 0x38, 0xfe, 0xc8, 0x84, 0xbc, 0x29, 0x12, 0x5c, 0xab, 0xf3, 0x57, 0xe9, 0x04, 0x53, 0xc9, 0xb3, + 0xa9, 0x8f, 0x77, 0x39, 0x0a, 0x49, 0x4e, 0x60, 0x2f, 0xe2, 0x79, 0x2a, 0xb3, 0x69, 0x10, 0xf1, + 0x01, 0x3a, 0x46, 0xc7, 0xe8, 0xda, 0x7e, 0x4b, 0x63, 0x7d, 0x3e, 0x40, 0xd2, 0x06, 0x9b, 0x66, + 0x48, 0x4b, 0xbf, 0xa9, 0xfc, 0xcd, 0x02, 0x50, 0x4e, 0x07, 0x76, 0xc7, 0x54, 0x4a, 0xcc, 0x52, + 0xc7, 0x52, 0xae, 0xca, 0x24, 0x07, 0xd0, 0x88, 0x59, 0xc2, 0xa4, 0xb3, 0xdd, 0x31, 0xba, 0x0d, + 0xbf, 0x34, 0xc8, 0x21, 0xec, 0xf0, 0xdb, 0x5b, 0x81, 0xd2, 0x69, 0x28, 0x58, 0x5b, 0xde, 0x77, + 0x03, 0x3a, 0xeb, 0x7b, 0x15, 0x63, 0x9e, 0x0a, 0x24, 0xaf, 0xa1, 0xc1, 0x24, 0x26, 0xc2, 0x31, + 0x3a, 0x56, 0xb7, 0x75, 0x7e, 0xd2, 0xd3, 0x32, 0xf4, 0xea, 0x4e, 0x5d, 0x49, 0x4c, 0xfc, 0x32, + 0x9e, 0x1c, 0x43, 0x4b, 0x72, 0x49, 0xe3, 0x40, 0xf1, 0x52, 0x24, 0x1a, 0x3e, 0x28, 0xa8, 0x5f, + 0x20, 0xf3, 0x66, 0xad, 0xfa, 0x66, 0xb7, 0x97, 0x9a, 0x7d, 0x0b, 0xee, 0x4d, 0x9e, 0x45, 0x23, + 0x2a, 0x70, 0xa1, 0xf2, 0x82, 0xa4, 0x8b, 0x57, 0x56, 0x49, 0x3a, 0x9e, 0x47, 0x7a, 0x01, 0xb4, + 0x6b, 0x13, 0x68, 0x9e, 0xef, 0x6a, 0x32, 0xb4, 0xce, 0xff, 0x9b, 0xd3, 0xd5, 0x67, 0x07, 0x8b, + 0x87, 0x97, 0x0a, 0xdc, 0x68, 0x35, 0x6b, 0x02, 0x45, 0xd5, 0xe7, 0x8c, 0xb3, 0x51, 0xcf, 0xd9, + 0x5c, 0xe2, 0xfc, 0xcd, 0x80, 0x93, 0x47, 0x52, 0xea, 0xce, 0x2f, 0x96, 0x6f, 0x68, 0x43, 0xcb, + 0x7f, 0xe6, 0x76, 0xde, 0xc0, 0x91, 0x8f, 0x31, 0xfe, 0xf6, 0xe5, 0xfc, 0x34, 0xc1, 0x59, 0xf7, + 0xa0, 0x9e, 0x70, 0x7e, 0x65, 0xa4, 0xcc, 0x0d, 0x23, 0x65, 0x3d, 0x18, 0x29, 0x17, 0x9a, 0x31, + 0x8f, 0x68, 0xcc, 0xe4, 0x54, 0x31, 0xb3, 0xfd, 0x99, 0x5d, 0x70, 0xce, 0x70, 0xc8, 0x78, 0xaa, + 0xc6, 0xc7, 0xf6, 0xb5, 0x45, 0x3c, 0xd8, 0x8b, 0xe8, 0x98, 0x86, 0x2c, 0x66, 0x92, 0xa1, 0x70, + 0x76, 0x94, 0x77, 0x09, 0x23, 0xaf, 0x80, 0x24, 0x3c, 0x95, 0xa3, 0xb8, 0xe8, 0x4b, 0xc8, 0x20, + 0xc2, 0x54, 0x0a, 0x67, 0xb7, 0x63, 0x74, 0x2d, 0xff, 0x6f, 0xed, 0xe9, 0x73, 0x21, 0xfb, 0x05, + 0x4e, 0xfe, 0x05, 0x9b, 0x4e, 0x28, 0x8b, 0x69, 0x18, 0xa3, 0xd3, 0xec, 0x18, 0xdd, 0xa6, 0x3f, + 0x07, 0x14, 0x47, 0x9a, 0x65, 0x0c, 0xb3, 0x20, 0xa5, 0x09, 0x3a, 0xb6, 0xe6, 0x58, 0x62, 0xd7, + 0x34, 0x41, 0xef, 0xde, 0x84, 0x83, 0xba, 0x5b, 0x27, 0xfb, 0x60, 0xb2, 0x81, 0x16, 0xce, 0x64, + 0x83, 0x15, 0x49, 0xcd, 0xcd, 0x92, 0x5a, 0x1b, 0x24, 0xdd, 0x7e, 0x20, 0xe9, 0x73, 0xf8, 0x2b, + 0xa5, 0x92, 0xf1, 0x94, 0xc6, 0x55, 0x95, 0x52, 0xbf, 0xfd, 0x0a, 0xd6, 0x85, 0xda, 0x60, 0x33, + 0x11, 0x24, 0x3c, 0x64, 0x31, 0x2a, 0x11, 0x9b, 0x7e, 0x93, 0x89, 0x4f, 0xca, 0x2e, 0xc4, 0x17, + 0x92, 0xca, 0xbc, 0x14, 0xcd, 0xf6, 0xb5, 0x55, 0xbc, 0x5f, 0x2a, 0x04, 0x1b, 0xa6, 0x38, 0x08, + 0xa8, 0x54, 0x62, 0x59, 0x3e, 0x54, 0xd0, 0xa5, 0x2c, 0x02, 0xb2, 0xf2, 0x45, 0xaa, 0x00, 0xbb, + 0x0c, 0xa8, 0xa0, 0x4b, 0x79, 0xfe, 0xc3, 0x02, 0xb2, 0x20, 0xd1, 0x67, 0xcc, 0x26, 0x2c, 0x42, + 0x72, 0x07, 0xce, 0xba, 0x9d, 0x48, 0xba, 0xb3, 0xd1, 0xda, 0xb0, 0xe2, 0xdd, 0x17, 0x4f, 0x88, + 0x2c, 0xc7, 0xd7, 0xdb, 0x22, 0x21, 0xfc, 0x53, 0xb3, 0x99, 0xc8, 0xe9, 0xca, 0x20, 0xaf, 0xce, + 0x96, 0xfb, 0xff, 0xe3, 0x41, 0xb3, 0x1a, 0x12, 0x8e, 0xd6, 0x6e, 0x12, 0xf2, 0xa0, 0xdb, 0x47, + 0x16, 0x98, 0xfb, 0xf2, 0x29, 0xa1, 0xb3, 0xaa, 0x3e, 0x90, 0xd5, 0xb5, 0x40, 0xbc, 0x59, 0x8e, + 0xb5, 0x3b, 0xc3, 0x3d, 0xec, 0x95, 0xbf, 0x6c, 0xaf, 0xfa, 0x65, 0x7b, 0x1f, 0x8a, 0x5f, 0xd6, + 0xdb, 0x7a, 0xff, 0xec, 0xcb, 0xe9, 0x90, 0xc9, 0x51, 0x1e, 0xf6, 0x22, 0x9e, 0x9c, 0xe9, 0x4c, + 0xe5, 0x67, 0x1c, 0xf1, 0xb8, 0x02, 0xc2, 0x1d, 0x85, 0x5c, 0xfc, 0x0a, 0x00, 0x00, 0xff, 0xff, + 0xbf, 0xa5, 0x47, 0x83, 0xd3, 0x07, 0x00, 0x00, +} diff --git a/livekit/livekit_phone_number_grpc.pb.go b/livekit/livekit_phone_number_grpc.pb.go new file mode 100644 index 000000000..0864e1609 --- /dev/null +++ b/livekit/livekit_phone_number_grpc.pb.go @@ -0,0 +1,248 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.5.1 +// - protoc v4.23.4 +// source: livekit_phone_number.proto + +package livekit + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + emptypb "google.golang.org/protobuf/types/known/emptypb" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 + +const ( + PhoneNumberService_ListPhoneNumberInventory_FullMethodName = "/livekit.PhoneNumberService/ListPhoneNumberInventory" + PhoneNumberService_PurchasePhoneNumber_FullMethodName = "/livekit.PhoneNumberService/PurchasePhoneNumber" + PhoneNumberService_ListPurchasedPhoneNumbers_FullMethodName = "/livekit.PhoneNumberService/ListPurchasedPhoneNumbers" + PhoneNumberService_ReleasePhoneNumber_FullMethodName = "/livekit.PhoneNumberService/ReleasePhoneNumber" +) + +// PhoneNumberServiceClient is the client API for PhoneNumberService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// Public Phone Number Service - External API for phone number management +type PhoneNumberServiceClient interface { + // List available phone numbers in inventory + ListPhoneNumberInventory(ctx context.Context, in *ListPhoneNumberInventoryRequest, opts ...grpc.CallOption) (*ListPhoneNumberInventoryResponse, error) + // Purchase a phone number from inventory + PurchasePhoneNumber(ctx context.Context, in *PurchasePhoneNumberRequest, opts ...grpc.CallOption) (*PurchasePhoneNumberResponse, error) + // List purchased phone numbers for a project + ListPurchasedPhoneNumbers(ctx context.Context, in *ListPurchasedPhoneNumbersRequest, opts ...grpc.CallOption) (*ListPurchasedPhoneNumbersResponse, error) + // Release a purchased phone number + ReleasePhoneNumber(ctx context.Context, in *ReleasePhoneNumberRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) +} + +type phoneNumberServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewPhoneNumberServiceClient(cc grpc.ClientConnInterface) PhoneNumberServiceClient { + return &phoneNumberServiceClient{cc} +} + +func (c *phoneNumberServiceClient) ListPhoneNumberInventory(ctx context.Context, in *ListPhoneNumberInventoryRequest, opts ...grpc.CallOption) (*ListPhoneNumberInventoryResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ListPhoneNumberInventoryResponse) + err := c.cc.Invoke(ctx, PhoneNumberService_ListPhoneNumberInventory_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *phoneNumberServiceClient) PurchasePhoneNumber(ctx context.Context, in *PurchasePhoneNumberRequest, opts ...grpc.CallOption) (*PurchasePhoneNumberResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(PurchasePhoneNumberResponse) + err := c.cc.Invoke(ctx, PhoneNumberService_PurchasePhoneNumber_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *phoneNumberServiceClient) ListPurchasedPhoneNumbers(ctx context.Context, in *ListPurchasedPhoneNumbersRequest, opts ...grpc.CallOption) (*ListPurchasedPhoneNumbersResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ListPurchasedPhoneNumbersResponse) + err := c.cc.Invoke(ctx, PhoneNumberService_ListPurchasedPhoneNumbers_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *phoneNumberServiceClient) ReleasePhoneNumber(ctx context.Context, in *ReleasePhoneNumberRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, PhoneNumberService_ReleasePhoneNumber_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +// PhoneNumberServiceServer is the server API for PhoneNumberService service. +// All implementations must embed UnimplementedPhoneNumberServiceServer +// for forward compatibility. +// +// Public Phone Number Service - External API for phone number management +type PhoneNumberServiceServer interface { + // List available phone numbers in inventory + ListPhoneNumberInventory(context.Context, *ListPhoneNumberInventoryRequest) (*ListPhoneNumberInventoryResponse, error) + // Purchase a phone number from inventory + PurchasePhoneNumber(context.Context, *PurchasePhoneNumberRequest) (*PurchasePhoneNumberResponse, error) + // List purchased phone numbers for a project + ListPurchasedPhoneNumbers(context.Context, *ListPurchasedPhoneNumbersRequest) (*ListPurchasedPhoneNumbersResponse, error) + // Release a purchased phone number + ReleasePhoneNumber(context.Context, *ReleasePhoneNumberRequest) (*emptypb.Empty, error) + mustEmbedUnimplementedPhoneNumberServiceServer() +} + +// UnimplementedPhoneNumberServiceServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedPhoneNumberServiceServer struct{} + +func (UnimplementedPhoneNumberServiceServer) ListPhoneNumberInventory(context.Context, *ListPhoneNumberInventoryRequest) (*ListPhoneNumberInventoryResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListPhoneNumberInventory not implemented") +} +func (UnimplementedPhoneNumberServiceServer) PurchasePhoneNumber(context.Context, *PurchasePhoneNumberRequest) (*PurchasePhoneNumberResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method PurchasePhoneNumber not implemented") +} +func (UnimplementedPhoneNumberServiceServer) ListPurchasedPhoneNumbers(context.Context, *ListPurchasedPhoneNumbersRequest) (*ListPurchasedPhoneNumbersResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListPurchasedPhoneNumbers not implemented") +} +func (UnimplementedPhoneNumberServiceServer) ReleasePhoneNumber(context.Context, *ReleasePhoneNumberRequest) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method ReleasePhoneNumber not implemented") +} +func (UnimplementedPhoneNumberServiceServer) mustEmbedUnimplementedPhoneNumberServiceServer() {} +func (UnimplementedPhoneNumberServiceServer) testEmbeddedByValue() {} + +// UnsafePhoneNumberServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to PhoneNumberServiceServer will +// result in compilation errors. +type UnsafePhoneNumberServiceServer interface { + mustEmbedUnimplementedPhoneNumberServiceServer() +} + +func RegisterPhoneNumberServiceServer(s grpc.ServiceRegistrar, srv PhoneNumberServiceServer) { + // If the following call pancis, it indicates UnimplementedPhoneNumberServiceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } + s.RegisterService(&PhoneNumberService_ServiceDesc, srv) +} + +func _PhoneNumberService_ListPhoneNumberInventory_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListPhoneNumberInventoryRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PhoneNumberServiceServer).ListPhoneNumberInventory(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: PhoneNumberService_ListPhoneNumberInventory_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PhoneNumberServiceServer).ListPhoneNumberInventory(ctx, req.(*ListPhoneNumberInventoryRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _PhoneNumberService_PurchasePhoneNumber_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(PurchasePhoneNumberRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PhoneNumberServiceServer).PurchasePhoneNumber(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: PhoneNumberService_PurchasePhoneNumber_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PhoneNumberServiceServer).PurchasePhoneNumber(ctx, req.(*PurchasePhoneNumberRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _PhoneNumberService_ListPurchasedPhoneNumbers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListPurchasedPhoneNumbersRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PhoneNumberServiceServer).ListPurchasedPhoneNumbers(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: PhoneNumberService_ListPurchasedPhoneNumbers_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PhoneNumberServiceServer).ListPurchasedPhoneNumbers(ctx, req.(*ListPurchasedPhoneNumbersRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _PhoneNumberService_ReleasePhoneNumber_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ReleasePhoneNumberRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PhoneNumberServiceServer).ReleasePhoneNumber(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: PhoneNumberService_ReleasePhoneNumber_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PhoneNumberServiceServer).ReleasePhoneNumber(ctx, req.(*ReleasePhoneNumberRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// PhoneNumberService_ServiceDesc is the grpc.ServiceDesc for PhoneNumberService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var PhoneNumberService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "livekit.PhoneNumberService", + HandlerType: (*PhoneNumberServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "ListPhoneNumberInventory", + Handler: _PhoneNumberService_ListPhoneNumberInventory_Handler, + }, + { + MethodName: "PurchasePhoneNumber", + Handler: _PhoneNumberService_PurchasePhoneNumber_Handler, + }, + { + MethodName: "ListPurchasedPhoneNumbers", + Handler: _PhoneNumberService_ListPurchasedPhoneNumbers_Handler, + }, + { + MethodName: "ReleasePhoneNumber", + Handler: _PhoneNumberService_ReleasePhoneNumber_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "livekit_phone_number.proto", +} From 93487132492ed83d16972a4bc38c6375d00299d3 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 11 Aug 2025 19:27:22 +0000 Subject: [PATCH 06/20] generated protobuf --- livekit/livekit_phone_number.pb.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/livekit/livekit_phone_number.pb.go b/livekit/livekit_phone_number.pb.go index 90d20ebd4..8a2c66c75 100644 --- a/livekit/livekit_phone_number.pb.go +++ b/livekit/livekit_phone_number.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.6 +// protoc-gen-go v1.36.7 // protoc v4.23.4 // source: livekit_phone_number.proto From 8ec9d23d22f6eda0097a2c668ac675e49042937f Mon Sep 17 00:00:00 2001 From: Nishad Musthafa Date: Mon, 11 Aug 2025 13:04:54 -0700 Subject: [PATCH 07/20] Updating to remove internal apis --- magefile.go | 17 -------- protobufs/rpc/phone_number.proto | 67 -------------------------------- 2 files changed, 84 deletions(-) delete mode 100644 protobufs/rpc/phone_number.proto diff --git a/magefile.go b/magefile.go index ed91c8ce2..bd43baf37 100644 --- a/magefile.go +++ b/magefile.go @@ -63,7 +63,6 @@ func Proto() error { grpcProtoFiles := []string{ "infra/link.proto", "rpc/analytics.proto", - "livekit_phone_number.proto", } psrpcProtoFiles := []string{ "rpc/agent.proto", @@ -164,22 +163,6 @@ func Proto() error { return err } - fmt.Println("generating livekit grpc protobuf") - args = append([]string{ - "--go_out", target, - "--go-grpc_out", target, - "--go_opt=paths=source_relative", - "--go-grpc_opt=paths=source_relative", - "--plugin=go=" + protocGoPath, - "--plugin=go-grpc=" + protocGrpcGoPath, - "-I=./protobufs", - }, "livekit_phone_number.proto") - cmd = exec.Command(protoc, args...) - connectStd(cmd) - if err := cmd.Run(); err != nil { - return err - } - fmt.Println("generating psrpc protobuf") psrpcDir, err := mageutil.GetPkgDir("github.com/livekit/psrpc") diff --git a/protobufs/rpc/phone_number.proto b/protobufs/rpc/phone_number.proto deleted file mode 100644 index bc9935716..000000000 --- a/protobufs/rpc/phone_number.proto +++ /dev/null @@ -1,67 +0,0 @@ -syntax = "proto3"; - -package rpc; - -option go_package = "github.com/livekit/protocol/rpc"; - -// Import the public phone number types for reuse -import "livekit_phone_number.proto"; - -// Internal request/response for listing phone number inventory -message InternalListPhoneNumberInventoryRequest { - string project_id = 1; - string country_code = 2; - string area_code = 3; - string pattern = 4; - int32 limit = 5; - int32 offset = 6; -} - -message InternalListPhoneNumberInventoryResponse { - repeated livekit.PhoneNumberInventoryItem items = 1; - int32 total_count = 2; - int32 limit = 3; - int32 offset = 4; -} - -// Internal request/response for purchasing phone number -message InternalPurchasePhoneNumberRequest { - string project_id = 1; - string phone_number = 2; -} - -message InternalPurchasePhoneNumberResponse { - livekit.PhoneNumber phone_number = 1; -} - -// Internal request/response for listing purchased phone numbers -message InternalListPurchasedPhoneNumbersRequest { - string project_id = 1; - int32 limit = 2; - int32 offset = 3; -} - -message InternalListPurchasedPhoneNumbersResponse { - repeated livekit.PhoneNumber phone_numbers = 1; - int32 total_count = 2; - int32 limit = 3; - int32 offset = 4; -} - -// Internal request/response for releasing phone number -message InternalReleasePhoneNumberRequest { - string project_id = 1; - string phone_number = 2; -} - -message InternalReleasePhoneNumberResponse { - // Empty response -} - -// Internal phone number service -service InternalPhoneNumberService { - rpc ListPhoneNumberInventory(InternalListPhoneNumberInventoryRequest) returns (InternalListPhoneNumberInventoryResponse); - rpc PurchasePhoneNumber(InternalPurchasePhoneNumberRequest) returns (InternalPurchasePhoneNumberResponse); - rpc ListPurchasedPhoneNumbers(InternalListPurchasedPhoneNumbersRequest) returns (InternalListPurchasedPhoneNumbersResponse); - rpc ReleasePhoneNumber(InternalReleasePhoneNumberRequest) returns (InternalReleasePhoneNumberResponse); -} \ No newline at end of file From d924b3dd376fc78d721c9384e52a787aa9836fa6 Mon Sep 17 00:00:00 2001 From: Nishad Musthafa Date: Wed, 13 Aug 2025 10:47:39 -0700 Subject: [PATCH 08/20] Adding changeset --- .changeset/giant-sloths-stare.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/giant-sloths-stare.md diff --git a/.changeset/giant-sloths-stare.md b/.changeset/giant-sloths-stare.md new file mode 100644 index 000000000..db56b9748 --- /dev/null +++ b/.changeset/giant-sloths-stare.md @@ -0,0 +1,5 @@ +--- +"github.com/livekit/protocol": major +--- + +Adding public apis for Livekit Phone Numbers feature From a900406014db1c8724d3dbaafe393a3c53d1e57a Mon Sep 17 00:00:00 2001 From: Nishad Musthafa Date: Fri, 15 Aug 2025 16:05:27 -0700 Subject: [PATCH 09/20] Clean up and changes around common fields for Phone number messages and pricing for the same --- protobufs/livekit_phone_number.proto | 89 +++++++++++++++++----------- 1 file changed, 56 insertions(+), 33 deletions(-) diff --git a/protobufs/livekit_phone_number.proto b/protobufs/livekit_phone_number.proto index 4a01f1331..e7070c447 100644 --- a/protobufs/livekit_phone_number.proto +++ b/protobufs/livekit_phone_number.proto @@ -6,6 +6,14 @@ option go_package = "github.com/livekit/protocol/livekit"; import "google/protobuf/empty.proto"; +// Phone number status enumeration +enum PhoneNumberStatus { + PHONE_NUMBER_STATUS_UNSPECIFIED = 0; // Default value + PHONE_NUMBER_STATUS_ACTIVE = 1; // Number is active and ready for use + PHONE_NUMBER_STATUS_PENDING = 2; // Number is being provisioned + PHONE_NUMBER_STATUS_RELEASED = 3; // Number has been released +} + // Public Phone Number Service - External API for phone number management service PhoneNumberService { // List available phone numbers in inventory @@ -29,41 +37,37 @@ service PhoneNumberService { message ListPhoneNumberInventoryRequest { string country_code = 1; // Optional: Filter by country code (e.g., "US", "CA") string area_code = 2; // Optional: Filter by area code (e.g., "415") - string pattern = 3; // Optional: Filter by pattern (e.g., "***-***-1234") - int32 limit = 4; // Optional: Maximum number of results (default: 50) - int32 offset = 5; // Optional: Number of results to skip (default: 0) + int32 limit = 3; // Optional: Maximum number of results (default: 50) + string page_token = 4; // Optional: Token for pagination (empty for first page) } // ListPhoneNumberInventoryResponse - Response containing available phone numbers message ListPhoneNumberInventoryResponse { repeated PhoneNumberInventoryItem items = 1; // List of available phone numbers - int32 total_count = 2; // Total number of available numbers - int32 limit = 3; // Limit used in the request - int32 offset = 4; // Offset used in the request + string next_page_token = 2; // Token for next page (empty if no more pages) } -// PurchasePhoneNumberRequest - Request to purchase a phone number +// PurchasePhoneNumberRequest - Request to purchase phone numbers message PurchasePhoneNumberRequest { - string phone_number = 1; // Phone number to purchase (e.g., "+1234567890") + repeated string phone_numbers = 1; // Phone numbers to purchase (e.g., ["+1234567890", "+1234567891"]) } -// PurchasePhoneNumberResponse - Response containing the purchased phone number +// PurchasePhoneNumberResponse - Response containing the purchased phone numbers message PurchasePhoneNumberResponse { - PurchasedPhoneNumber phone_number = 1; // Details of the purchased phone number + repeated PurchasedPhoneNumber phone_numbers = 1; // Details of the purchased phone numbers } // ListPurchasedPhoneNumbersRequest - Request to list purchased phone numbers message ListPurchasedPhoneNumbersRequest { int32 limit = 1; // Optional: Maximum number of results (default: 50) - int32 offset = 2; // Optional: Number of results to skip (default: 0) + string page_token = 2; // Optional: Token for pagination (empty for first page) } // ListPurchasedPhoneNumbersResponse - Response containing purchased phone numbers message ListPurchasedPhoneNumbersResponse { repeated PurchasedPhoneNumber items = 1; // List of purchased phone numbers - int32 total_count = 2; // Total number of purchased numbers - int32 limit = 3; // Limit used in the request - int32 offset = 4; // Offset used in the request + string next_page_token = 2; // Token for next page (empty if no more pages) + int32 total_count = 3; // Total number of purchased phone numbers } // ReleasePhoneNumberRequest - Request to release a purchased phone number @@ -71,28 +75,47 @@ message ReleasePhoneNumberRequest { string phone_number = 1; // Phone number to release (e.g., "+1234567890") } +// GlobalPhoneNumber represents a phone number with standardized format +message GlobalPhoneNumber { + string id = 1; // unique identifier + string e164_format = 2; // e.g., "+14155552671" + string country_code = 3; // e.g., "US" + string area_code = 4; // e.g., "415" + string number_type = 5; // e.g., local, toll-free, national, mobile + string locality = 6; // City/locality (e.g., "San Francisco") + string region = 7; // State/region (e.g., "CA") + int64 spam_score = 8; // can be used later for fraud detection + int64 created_at = 9; // timestamp when created + int64 updated_at = 10; // timestamp when updated +} + +// PhoneNumberCost represents the pricing structure for a phone number +message PhoneNumberCost { + string currency = 1; // Currency code (e.g., "USD", "EUR") + + // Monthly rental cost + double monthly_rental = 2; // Monthly rental cost (e.g., 10.00) + + // Voice calling costs + double voice_cost = 3; // Voice cost per unit (e.g., 2.00) + string voice_billing_unit = 4; // Voice billing unit (e.g., "minute", "second", "call") + + // SMS costs + double sms_cost = 5; // SMS cost per unit (e.g., 0.50) + string sms_billing_unit = 6; // SMS billing unit (e.g., "message", "character") +} + // PhoneNumberInventoryItem - Represents an available phone number for purchase message PhoneNumberInventoryItem { - string phone_number = 1; // Phone number in E.164 format (e.g., "+14155552671") - string country_code = 2; // Country code (e.g., "US") - string area_code = 3; // Area code (e.g., "415") - string locality = 4; // City/locality (e.g., "San Francisco") - string region = 5; // State/region (e.g., "CA") - string capabilities = 6; // Comma-separated capabilities (e.g., "voice,sms") - int64 monthly_cost_cents = 7; // Monthly cost in cents - bool available = 8; // Whether the number is currently available - string carrier_name = 9; // Name of the carrier providing this number + GlobalPhoneNumber phone_number = 1; // Common phone number fields + repeated string capabilities = 2; // Comma-separated capabilities (e.g., "voice,sms") + PhoneNumberCost cost = 3; // Cost structure for this phone number } // PurchasedPhoneNumber - Represents a phone number owned by a LiveKit project message PurchasedPhoneNumber { - string id = 1; // Unique identifier for the phone number - string phone_number = 2; // Phone number in E.164 format (e.g., "+14155552671") - string country_code = 3; // Country code (e.g., "US") - string area_code = 4; // Area code (e.g., "415") - string national_number = 5; // National number without country code (e.g., "4155552671") - bool is_mobile = 6; // Whether this is a mobile number - string status = 7; // Current status ("active", "pending", "released") - int64 assigned_at = 8; // Timestamp when the number was assigned - int64 released_at = 9; // Timestamp when the number was released (if applicable) -} \ No newline at end of file + GlobalPhoneNumber phone_number = 1; // Common phone number fields + PhoneNumberStatus status = 2; // Current status of the phone number + int64 assigned_at = 3; // Timestamp when the number was assigned + int64 released_at = 4; // Timestamp when the number was released (if applicable) +} From 437bcc218c85eb6abeafaad63032a66b2997793c Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 15 Aug 2025 23:06:51 +0000 Subject: [PATCH 10/20] generated protobuf --- livekit/livekit_phone_number.pb.go | 585 ++++++++++++++++---------- livekit/livekit_phone_number.twirp.go | 107 +++-- 2 files changed, 435 insertions(+), 257 deletions(-) diff --git a/livekit/livekit_phone_number.pb.go b/livekit/livekit_phone_number.pb.go index 8a2c66c75..5ff2a957b 100644 --- a/livekit/livekit_phone_number.pb.go +++ b/livekit/livekit_phone_number.pb.go @@ -22,14 +22,66 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +// Phone number status enumeration +type PhoneNumberStatus int32 + +const ( + PhoneNumberStatus_PHONE_NUMBER_STATUS_UNSPECIFIED PhoneNumberStatus = 0 // Default value + PhoneNumberStatus_PHONE_NUMBER_STATUS_ACTIVE PhoneNumberStatus = 1 // Number is active and ready for use + PhoneNumberStatus_PHONE_NUMBER_STATUS_PENDING PhoneNumberStatus = 2 // Number is being provisioned + PhoneNumberStatus_PHONE_NUMBER_STATUS_RELEASED PhoneNumberStatus = 3 // Number has been released +) + +// Enum value maps for PhoneNumberStatus. +var ( + PhoneNumberStatus_name = map[int32]string{ + 0: "PHONE_NUMBER_STATUS_UNSPECIFIED", + 1: "PHONE_NUMBER_STATUS_ACTIVE", + 2: "PHONE_NUMBER_STATUS_PENDING", + 3: "PHONE_NUMBER_STATUS_RELEASED", + } + PhoneNumberStatus_value = map[string]int32{ + "PHONE_NUMBER_STATUS_UNSPECIFIED": 0, + "PHONE_NUMBER_STATUS_ACTIVE": 1, + "PHONE_NUMBER_STATUS_PENDING": 2, + "PHONE_NUMBER_STATUS_RELEASED": 3, + } +) + +func (x PhoneNumberStatus) Enum() *PhoneNumberStatus { + p := new(PhoneNumberStatus) + *p = x + return p +} + +func (x PhoneNumberStatus) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PhoneNumberStatus) Descriptor() protoreflect.EnumDescriptor { + return file_livekit_phone_number_proto_enumTypes[0].Descriptor() +} + +func (PhoneNumberStatus) Type() protoreflect.EnumType { + return &file_livekit_phone_number_proto_enumTypes[0] +} + +func (x PhoneNumberStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PhoneNumberStatus.Descriptor instead. +func (PhoneNumberStatus) EnumDescriptor() ([]byte, []int) { + return file_livekit_phone_number_proto_rawDescGZIP(), []int{0} +} + // ListPhoneNumberInventoryRequest - Request to list available phone numbers type ListPhoneNumberInventoryRequest struct { state protoimpl.MessageState `protogen:"open.v1"` CountryCode string `protobuf:"bytes,1,opt,name=country_code,json=countryCode,proto3" json:"country_code,omitempty"` // Optional: Filter by country code (e.g., "US", "CA") AreaCode string `protobuf:"bytes,2,opt,name=area_code,json=areaCode,proto3" json:"area_code,omitempty"` // Optional: Filter by area code (e.g., "415") - Pattern string `protobuf:"bytes,3,opt,name=pattern,proto3" json:"pattern,omitempty"` // Optional: Filter by pattern (e.g., "***-***-1234") - Limit int32 `protobuf:"varint,4,opt,name=limit,proto3" json:"limit,omitempty"` // Optional: Maximum number of results (default: 50) - Offset int32 `protobuf:"varint,5,opt,name=offset,proto3" json:"offset,omitempty"` // Optional: Number of results to skip (default: 0) + Limit int32 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit,omitempty"` // Optional: Maximum number of results (default: 50) + PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` // Optional: Token for pagination (empty for first page) unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -78,13 +130,6 @@ func (x *ListPhoneNumberInventoryRequest) GetAreaCode() string { return "" } -func (x *ListPhoneNumberInventoryRequest) GetPattern() string { - if x != nil { - return x.Pattern - } - return "" -} - func (x *ListPhoneNumberInventoryRequest) GetLimit() int32 { if x != nil { return x.Limit @@ -92,20 +137,18 @@ func (x *ListPhoneNumberInventoryRequest) GetLimit() int32 { return 0 } -func (x *ListPhoneNumberInventoryRequest) GetOffset() int32 { +func (x *ListPhoneNumberInventoryRequest) GetPageToken() string { if x != nil { - return x.Offset + return x.PageToken } - return 0 + return "" } // ListPhoneNumberInventoryResponse - Response containing available phone numbers type ListPhoneNumberInventoryResponse struct { state protoimpl.MessageState `protogen:"open.v1"` - Items []*PhoneNumberInventoryItem `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` // List of available phone numbers - TotalCount int32 `protobuf:"varint,2,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty"` // Total number of available numbers - Limit int32 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit,omitempty"` // Limit used in the request - Offset int32 `protobuf:"varint,4,opt,name=offset,proto3" json:"offset,omitempty"` // Offset used in the request + Items []*PhoneNumberInventoryItem `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` // List of available phone numbers + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` // Token for next page (empty if no more pages) unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -147,31 +190,17 @@ func (x *ListPhoneNumberInventoryResponse) GetItems() []*PhoneNumberInventoryIte return nil } -func (x *ListPhoneNumberInventoryResponse) GetTotalCount() int32 { - if x != nil { - return x.TotalCount - } - return 0 -} - -func (x *ListPhoneNumberInventoryResponse) GetLimit() int32 { - if x != nil { - return x.Limit - } - return 0 -} - -func (x *ListPhoneNumberInventoryResponse) GetOffset() int32 { +func (x *ListPhoneNumberInventoryResponse) GetNextPageToken() string { if x != nil { - return x.Offset + return x.NextPageToken } - return 0 + return "" } -// PurchasePhoneNumberRequest - Request to purchase a phone number +// PurchasePhoneNumberRequest - Request to purchase phone numbers type PurchasePhoneNumberRequest struct { state protoimpl.MessageState `protogen:"open.v1"` - PhoneNumber string `protobuf:"bytes,1,opt,name=phone_number,json=phoneNumber,proto3" json:"phone_number,omitempty"` // Phone number to purchase (e.g., "+1234567890") + PhoneNumbers []string `protobuf:"bytes,1,rep,name=phone_numbers,json=phoneNumbers,proto3" json:"phone_numbers,omitempty"` // Phone numbers to purchase (e.g., ["+1234567890", "+1234567891"]) unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -206,17 +235,17 @@ func (*PurchasePhoneNumberRequest) Descriptor() ([]byte, []int) { return file_livekit_phone_number_proto_rawDescGZIP(), []int{2} } -func (x *PurchasePhoneNumberRequest) GetPhoneNumber() string { +func (x *PurchasePhoneNumberRequest) GetPhoneNumbers() []string { if x != nil { - return x.PhoneNumber + return x.PhoneNumbers } - return "" + return nil } -// PurchasePhoneNumberResponse - Response containing the purchased phone number +// PurchasePhoneNumberResponse - Response containing the purchased phone numbers type PurchasePhoneNumberResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - PhoneNumber *PurchasedPhoneNumber `protobuf:"bytes,1,opt,name=phone_number,json=phoneNumber,proto3" json:"phone_number,omitempty"` // Details of the purchased phone number + state protoimpl.MessageState `protogen:"open.v1"` + PhoneNumbers []*PurchasedPhoneNumber `protobuf:"bytes,1,rep,name=phone_numbers,json=phoneNumbers,proto3" json:"phone_numbers,omitempty"` // Details of the purchased phone numbers unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -251,9 +280,9 @@ func (*PurchasePhoneNumberResponse) Descriptor() ([]byte, []int) { return file_livekit_phone_number_proto_rawDescGZIP(), []int{3} } -func (x *PurchasePhoneNumberResponse) GetPhoneNumber() *PurchasedPhoneNumber { +func (x *PurchasePhoneNumberResponse) GetPhoneNumbers() []*PurchasedPhoneNumber { if x != nil { - return x.PhoneNumber + return x.PhoneNumbers } return nil } @@ -261,8 +290,8 @@ func (x *PurchasePhoneNumberResponse) GetPhoneNumber() *PurchasedPhoneNumber { // ListPurchasedPhoneNumbersRequest - Request to list purchased phone numbers type ListPurchasedPhoneNumbersRequest struct { state protoimpl.MessageState `protogen:"open.v1"` - Limit int32 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"` // Optional: Maximum number of results (default: 50) - Offset int32 `protobuf:"varint,2,opt,name=offset,proto3" json:"offset,omitempty"` // Optional: Number of results to skip (default: 0) + Limit int32 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"` // Optional: Maximum number of results (default: 50) + PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` // Optional: Token for pagination (empty for first page) unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -304,20 +333,19 @@ func (x *ListPurchasedPhoneNumbersRequest) GetLimit() int32 { return 0 } -func (x *ListPurchasedPhoneNumbersRequest) GetOffset() int32 { +func (x *ListPurchasedPhoneNumbersRequest) GetPageToken() string { if x != nil { - return x.Offset + return x.PageToken } - return 0 + return "" } // ListPurchasedPhoneNumbersResponse - Response containing purchased phone numbers type ListPurchasedPhoneNumbersResponse struct { state protoimpl.MessageState `protogen:"open.v1"` - Items []*PurchasedPhoneNumber `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` // List of purchased phone numbers - TotalCount int32 `protobuf:"varint,2,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty"` // Total number of purchased numbers - Limit int32 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit,omitempty"` // Limit used in the request - Offset int32 `protobuf:"varint,4,opt,name=offset,proto3" json:"offset,omitempty"` // Offset used in the request + Items []*PurchasedPhoneNumber `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` // List of purchased phone numbers + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` // Token for next page (empty if no more pages) + TotalCount int32 `protobuf:"varint,3,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty"` // Total number of purchased phone numbers unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -359,23 +387,16 @@ func (x *ListPurchasedPhoneNumbersResponse) GetItems() []*PurchasedPhoneNumber { return nil } -func (x *ListPurchasedPhoneNumbersResponse) GetTotalCount() int32 { +func (x *ListPurchasedPhoneNumbersResponse) GetNextPageToken() string { if x != nil { - return x.TotalCount + return x.NextPageToken } - return 0 -} - -func (x *ListPurchasedPhoneNumbersResponse) GetLimit() int32 { - if x != nil { - return x.Limit - } - return 0 + return "" } -func (x *ListPurchasedPhoneNumbersResponse) GetOffset() int32 { +func (x *ListPurchasedPhoneNumbersResponse) GetTotalCount() int32 { if x != nil { - return x.Offset + return x.TotalCount } return 0 } @@ -425,36 +446,37 @@ func (x *ReleasePhoneNumberRequest) GetPhoneNumber() string { return "" } -// PhoneNumberInventoryItem - Represents an available phone number for purchase -type PhoneNumberInventoryItem struct { - state protoimpl.MessageState `protogen:"open.v1"` - PhoneNumber string `protobuf:"bytes,1,opt,name=phone_number,json=phoneNumber,proto3" json:"phone_number,omitempty"` // Phone number in E.164 format (e.g., "+14155552671") - CountryCode string `protobuf:"bytes,2,opt,name=country_code,json=countryCode,proto3" json:"country_code,omitempty"` // Country code (e.g., "US") - AreaCode string `protobuf:"bytes,3,opt,name=area_code,json=areaCode,proto3" json:"area_code,omitempty"` // Area code (e.g., "415") - Locality string `protobuf:"bytes,4,opt,name=locality,proto3" json:"locality,omitempty"` // City/locality (e.g., "San Francisco") - Region string `protobuf:"bytes,5,opt,name=region,proto3" json:"region,omitempty"` // State/region (e.g., "CA") - Capabilities string `protobuf:"bytes,6,opt,name=capabilities,proto3" json:"capabilities,omitempty"` // Comma-separated capabilities (e.g., "voice,sms") - MonthlyCostCents int64 `protobuf:"varint,7,opt,name=monthly_cost_cents,json=monthlyCostCents,proto3" json:"monthly_cost_cents,omitempty"` // Monthly cost in cents - Available bool `protobuf:"varint,8,opt,name=available,proto3" json:"available,omitempty"` // Whether the number is currently available - CarrierName string `protobuf:"bytes,9,opt,name=carrier_name,json=carrierName,proto3" json:"carrier_name,omitempty"` // Name of the carrier providing this number - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache +// GlobalPhoneNumber represents a phone number with standardized format +type GlobalPhoneNumber struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // unique identifier + E164Format string `protobuf:"bytes,2,opt,name=e164_format,json=e164Format,proto3" json:"e164_format,omitempty"` // e.g., "+14155552671" + CountryCode string `protobuf:"bytes,3,opt,name=country_code,json=countryCode,proto3" json:"country_code,omitempty"` // e.g., "US" + AreaCode string `protobuf:"bytes,4,opt,name=area_code,json=areaCode,proto3" json:"area_code,omitempty"` // e.g., "415" + NumberType string `protobuf:"bytes,5,opt,name=number_type,json=numberType,proto3" json:"number_type,omitempty"` // e.g., local, toll-free, national, mobile + Locality string `protobuf:"bytes,6,opt,name=locality,proto3" json:"locality,omitempty"` // City/locality (e.g., "San Francisco") + Region string `protobuf:"bytes,7,opt,name=region,proto3" json:"region,omitempty"` // State/region (e.g., "CA") + SpamScore int64 `protobuf:"varint,8,opt,name=spam_score,json=spamScore,proto3" json:"spam_score,omitempty"` // can be used later for fraud detection + CreatedAt int64 `protobuf:"varint,9,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` // timestamp when created + UpdatedAt int64 `protobuf:"varint,10,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` // timestamp when updated + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *PhoneNumberInventoryItem) Reset() { - *x = PhoneNumberInventoryItem{} +func (x *GlobalPhoneNumber) Reset() { + *x = GlobalPhoneNumber{} mi := &file_livekit_phone_number_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *PhoneNumberInventoryItem) String() string { +func (x *GlobalPhoneNumber) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PhoneNumberInventoryItem) ProtoMessage() {} +func (*GlobalPhoneNumber) ProtoMessage() {} -func (x *PhoneNumberInventoryItem) ProtoReflect() protoreflect.Message { +func (x *GlobalPhoneNumber) ProtoReflect() protoreflect.Message { mi := &file_livekit_phone_number_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -466,104 +488,111 @@ func (x *PhoneNumberInventoryItem) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PhoneNumberInventoryItem.ProtoReflect.Descriptor instead. -func (*PhoneNumberInventoryItem) Descriptor() ([]byte, []int) { +// Deprecated: Use GlobalPhoneNumber.ProtoReflect.Descriptor instead. +func (*GlobalPhoneNumber) Descriptor() ([]byte, []int) { return file_livekit_phone_number_proto_rawDescGZIP(), []int{7} } -func (x *PhoneNumberInventoryItem) GetPhoneNumber() string { +func (x *GlobalPhoneNumber) GetId() string { if x != nil { - return x.PhoneNumber + return x.Id } return "" } -func (x *PhoneNumberInventoryItem) GetCountryCode() string { +func (x *GlobalPhoneNumber) GetE164Format() string { + if x != nil { + return x.E164Format + } + return "" +} + +func (x *GlobalPhoneNumber) GetCountryCode() string { if x != nil { return x.CountryCode } return "" } -func (x *PhoneNumberInventoryItem) GetAreaCode() string { +func (x *GlobalPhoneNumber) GetAreaCode() string { if x != nil { return x.AreaCode } return "" } -func (x *PhoneNumberInventoryItem) GetLocality() string { +func (x *GlobalPhoneNumber) GetNumberType() string { if x != nil { - return x.Locality + return x.NumberType } return "" } -func (x *PhoneNumberInventoryItem) GetRegion() string { +func (x *GlobalPhoneNumber) GetLocality() string { if x != nil { - return x.Region + return x.Locality } return "" } -func (x *PhoneNumberInventoryItem) GetCapabilities() string { +func (x *GlobalPhoneNumber) GetRegion() string { if x != nil { - return x.Capabilities + return x.Region } return "" } -func (x *PhoneNumberInventoryItem) GetMonthlyCostCents() int64 { +func (x *GlobalPhoneNumber) GetSpamScore() int64 { if x != nil { - return x.MonthlyCostCents + return x.SpamScore } return 0 } -func (x *PhoneNumberInventoryItem) GetAvailable() bool { +func (x *GlobalPhoneNumber) GetCreatedAt() int64 { if x != nil { - return x.Available + return x.CreatedAt } - return false + return 0 } -func (x *PhoneNumberInventoryItem) GetCarrierName() string { +func (x *GlobalPhoneNumber) GetUpdatedAt() int64 { if x != nil { - return x.CarrierName + return x.UpdatedAt } - return "" + return 0 } -// PurchasedPhoneNumber - Represents a phone number owned by a LiveKit project -type PurchasedPhoneNumber struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Unique identifier for the phone number - PhoneNumber string `protobuf:"bytes,2,opt,name=phone_number,json=phoneNumber,proto3" json:"phone_number,omitempty"` // Phone number in E.164 format (e.g., "+14155552671") - CountryCode string `protobuf:"bytes,3,opt,name=country_code,json=countryCode,proto3" json:"country_code,omitempty"` // Country code (e.g., "US") - AreaCode string `protobuf:"bytes,4,opt,name=area_code,json=areaCode,proto3" json:"area_code,omitempty"` // Area code (e.g., "415") - NationalNumber string `protobuf:"bytes,5,opt,name=national_number,json=nationalNumber,proto3" json:"national_number,omitempty"` // National number without country code (e.g., "4155552671") - IsMobile bool `protobuf:"varint,6,opt,name=is_mobile,json=isMobile,proto3" json:"is_mobile,omitempty"` // Whether this is a mobile number - Status string `protobuf:"bytes,7,opt,name=status,proto3" json:"status,omitempty"` // Current status ("active", "pending", "released") - AssignedAt int64 `protobuf:"varint,8,opt,name=assigned_at,json=assignedAt,proto3" json:"assigned_at,omitempty"` // Timestamp when the number was assigned - ReleasedAt int64 `protobuf:"varint,9,opt,name=released_at,json=releasedAt,proto3" json:"released_at,omitempty"` // Timestamp when the number was released (if applicable) +// PhoneNumberCost represents the pricing structure for a phone number +type PhoneNumberCost struct { + state protoimpl.MessageState `protogen:"open.v1"` + Currency string `protobuf:"bytes,1,opt,name=currency,proto3" json:"currency,omitempty"` // Currency code (e.g., "USD", "EUR") + // Monthly rental cost + MonthlyRental float64 `protobuf:"fixed64,2,opt,name=monthly_rental,json=monthlyRental,proto3" json:"monthly_rental,omitempty"` // Monthly rental cost (e.g., 10.00) + // Voice calling costs + VoiceCost float64 `protobuf:"fixed64,3,opt,name=voice_cost,json=voiceCost,proto3" json:"voice_cost,omitempty"` // Voice cost per unit (e.g., 2.00) + VoiceBillingUnit string `protobuf:"bytes,4,opt,name=voice_billing_unit,json=voiceBillingUnit,proto3" json:"voice_billing_unit,omitempty"` // Voice billing unit (e.g., "minute", "second", "call") + // SMS costs + SmsCost float64 `protobuf:"fixed64,5,opt,name=sms_cost,json=smsCost,proto3" json:"sms_cost,omitempty"` // SMS cost per unit (e.g., 0.50) + SmsBillingUnit string `protobuf:"bytes,6,opt,name=sms_billing_unit,json=smsBillingUnit,proto3" json:"sms_billing_unit,omitempty"` // SMS billing unit (e.g., "message", "character") unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } -func (x *PurchasedPhoneNumber) Reset() { - *x = PurchasedPhoneNumber{} +func (x *PhoneNumberCost) Reset() { + *x = PhoneNumberCost{} mi := &file_livekit_phone_number_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *PurchasedPhoneNumber) String() string { +func (x *PhoneNumberCost) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PurchasedPhoneNumber) ProtoMessage() {} +func (*PhoneNumberCost) ProtoMessage() {} -func (x *PurchasedPhoneNumber) ProtoReflect() protoreflect.Message { +func (x *PhoneNumberCost) ProtoReflect() protoreflect.Message { mi := &file_livekit_phone_number_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -575,58 +604,167 @@ func (x *PurchasedPhoneNumber) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PurchasedPhoneNumber.ProtoReflect.Descriptor instead. -func (*PurchasedPhoneNumber) Descriptor() ([]byte, []int) { +// Deprecated: Use PhoneNumberCost.ProtoReflect.Descriptor instead. +func (*PhoneNumberCost) Descriptor() ([]byte, []int) { return file_livekit_phone_number_proto_rawDescGZIP(), []int{8} } -func (x *PurchasedPhoneNumber) GetId() string { +func (x *PhoneNumberCost) GetCurrency() string { if x != nil { - return x.Id + return x.Currency } return "" } -func (x *PurchasedPhoneNumber) GetPhoneNumber() string { +func (x *PhoneNumberCost) GetMonthlyRental() float64 { if x != nil { - return x.PhoneNumber + return x.MonthlyRental } - return "" + return 0 } -func (x *PurchasedPhoneNumber) GetCountryCode() string { +func (x *PhoneNumberCost) GetVoiceCost() float64 { if x != nil { - return x.CountryCode + return x.VoiceCost } - return "" + return 0 } -func (x *PurchasedPhoneNumber) GetAreaCode() string { +func (x *PhoneNumberCost) GetVoiceBillingUnit() string { if x != nil { - return x.AreaCode + return x.VoiceBillingUnit } return "" } -func (x *PurchasedPhoneNumber) GetNationalNumber() string { +func (x *PhoneNumberCost) GetSmsCost() float64 { if x != nil { - return x.NationalNumber + return x.SmsCost + } + return 0 +} + +func (x *PhoneNumberCost) GetSmsBillingUnit() string { + if x != nil { + return x.SmsBillingUnit } return "" } -func (x *PurchasedPhoneNumber) GetIsMobile() bool { +// PhoneNumberInventoryItem - Represents an available phone number for purchase +type PhoneNumberInventoryItem struct { + state protoimpl.MessageState `protogen:"open.v1"` + PhoneNumber *GlobalPhoneNumber `protobuf:"bytes,1,opt,name=phone_number,json=phoneNumber,proto3" json:"phone_number,omitempty"` // Common phone number fields + Capabilities []string `protobuf:"bytes,2,rep,name=capabilities,proto3" json:"capabilities,omitempty"` // Comma-separated capabilities (e.g., "voice,sms") + Cost *PhoneNumberCost `protobuf:"bytes,3,opt,name=cost,proto3" json:"cost,omitempty"` // Cost structure for this phone number + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PhoneNumberInventoryItem) Reset() { + *x = PhoneNumberInventoryItem{} + mi := &file_livekit_phone_number_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PhoneNumberInventoryItem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PhoneNumberInventoryItem) ProtoMessage() {} + +func (x *PhoneNumberInventoryItem) ProtoReflect() protoreflect.Message { + mi := &file_livekit_phone_number_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PhoneNumberInventoryItem.ProtoReflect.Descriptor instead. +func (*PhoneNumberInventoryItem) Descriptor() ([]byte, []int) { + return file_livekit_phone_number_proto_rawDescGZIP(), []int{9} +} + +func (x *PhoneNumberInventoryItem) GetPhoneNumber() *GlobalPhoneNumber { + if x != nil { + return x.PhoneNumber + } + return nil +} + +func (x *PhoneNumberInventoryItem) GetCapabilities() []string { + if x != nil { + return x.Capabilities + } + return nil +} + +func (x *PhoneNumberInventoryItem) GetCost() *PhoneNumberCost { if x != nil { - return x.IsMobile + return x.Cost } - return false + return nil +} + +// PurchasedPhoneNumber - Represents a phone number owned by a LiveKit project +type PurchasedPhoneNumber struct { + state protoimpl.MessageState `protogen:"open.v1"` + PhoneNumber *GlobalPhoneNumber `protobuf:"bytes,1,opt,name=phone_number,json=phoneNumber,proto3" json:"phone_number,omitempty"` // Common phone number fields + Status PhoneNumberStatus `protobuf:"varint,2,opt,name=status,proto3,enum=livekit.PhoneNumberStatus" json:"status,omitempty"` // Current status of the phone number + AssignedAt int64 `protobuf:"varint,3,opt,name=assigned_at,json=assignedAt,proto3" json:"assigned_at,omitempty"` // Timestamp when the number was assigned + ReleasedAt int64 `protobuf:"varint,4,opt,name=released_at,json=releasedAt,proto3" json:"released_at,omitempty"` // Timestamp when the number was released (if applicable) + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PurchasedPhoneNumber) Reset() { + *x = PurchasedPhoneNumber{} + mi := &file_livekit_phone_number_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *PurchasedPhoneNumber) GetStatus() string { +func (x *PurchasedPhoneNumber) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PurchasedPhoneNumber) ProtoMessage() {} + +func (x *PurchasedPhoneNumber) ProtoReflect() protoreflect.Message { + mi := &file_livekit_phone_number_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PurchasedPhoneNumber.ProtoReflect.Descriptor instead. +func (*PurchasedPhoneNumber) Descriptor() ([]byte, []int) { + return file_livekit_phone_number_proto_rawDescGZIP(), []int{10} +} + +func (x *PurchasedPhoneNumber) GetPhoneNumber() *GlobalPhoneNumber { + if x != nil { + return x.PhoneNumber + } + return nil +} + +func (x *PurchasedPhoneNumber) GetStatus() PhoneNumberStatus { if x != nil { return x.Status } - return "" + return PhoneNumberStatus_PHONE_NUMBER_STATUS_UNSPECIFIED } func (x *PurchasedPhoneNumber) GetAssignedAt() int64 { @@ -647,56 +785,72 @@ var File_livekit_phone_number_proto protoreflect.FileDescriptor const file_livekit_phone_number_proto_rawDesc = "" + "\n" + - "\x1alivekit_phone_number.proto\x12\alivekit\x1a\x1bgoogle/protobuf/empty.proto\"\xa9\x01\n" + + "\x1alivekit_phone_number.proto\x12\alivekit\x1a\x1bgoogle/protobuf/empty.proto\"\x96\x01\n" + "\x1fListPhoneNumberInventoryRequest\x12!\n" + "\fcountry_code\x18\x01 \x01(\tR\vcountryCode\x12\x1b\n" + - "\tarea_code\x18\x02 \x01(\tR\bareaCode\x12\x18\n" + - "\apattern\x18\x03 \x01(\tR\apattern\x12\x14\n" + - "\x05limit\x18\x04 \x01(\x05R\x05limit\x12\x16\n" + - "\x06offset\x18\x05 \x01(\x05R\x06offset\"\xaa\x01\n" + + "\tarea_code\x18\x02 \x01(\tR\bareaCode\x12\x14\n" + + "\x05limit\x18\x03 \x01(\x05R\x05limit\x12\x1d\n" + + "\n" + + "page_token\x18\x04 \x01(\tR\tpageToken\"\x83\x01\n" + " ListPhoneNumberInventoryResponse\x127\n" + - "\x05items\x18\x01 \x03(\v2!.livekit.PhoneNumberInventoryItemR\x05items\x12\x1f\n" + - "\vtotal_count\x18\x02 \x01(\x05R\n" + - "totalCount\x12\x14\n" + - "\x05limit\x18\x03 \x01(\x05R\x05limit\x12\x16\n" + - "\x06offset\x18\x04 \x01(\x05R\x06offset\"?\n" + - "\x1aPurchasePhoneNumberRequest\x12!\n" + - "\fphone_number\x18\x01 \x01(\tR\vphoneNumber\"_\n" + - "\x1bPurchasePhoneNumberResponse\x12@\n" + - "\fphone_number\x18\x01 \x01(\v2\x1d.livekit.PurchasedPhoneNumberR\vphoneNumber\"P\n" + + "\x05items\x18\x01 \x03(\v2!.livekit.PhoneNumberInventoryItemR\x05items\x12&\n" + + "\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\"A\n" + + "\x1aPurchasePhoneNumberRequest\x12#\n" + + "\rphone_numbers\x18\x01 \x03(\tR\fphoneNumbers\"a\n" + + "\x1bPurchasePhoneNumberResponse\x12B\n" + + "\rphone_numbers\x18\x01 \x03(\v2\x1d.livekit.PurchasedPhoneNumberR\fphoneNumbers\"W\n" + " ListPurchasedPhoneNumbersRequest\x12\x14\n" + - "\x05limit\x18\x01 \x01(\x05R\x05limit\x12\x16\n" + - "\x06offset\x18\x02 \x01(\x05R\x06offset\"\xa7\x01\n" + + "\x05limit\x18\x01 \x01(\x05R\x05limit\x12\x1d\n" + + "\n" + + "page_token\x18\x02 \x01(\tR\tpageToken\"\xa1\x01\n" + "!ListPurchasedPhoneNumbersResponse\x123\n" + - "\x05items\x18\x01 \x03(\v2\x1d.livekit.PurchasedPhoneNumberR\x05items\x12\x1f\n" + - "\vtotal_count\x18\x02 \x01(\x05R\n" + - "totalCount\x12\x14\n" + - "\x05limit\x18\x03 \x01(\x05R\x05limit\x12\x16\n" + - "\x06offset\x18\x04 \x01(\x05R\x06offset\">\n" + + "\x05items\x18\x01 \x03(\v2\x1d.livekit.PurchasedPhoneNumberR\x05items\x12&\n" + + "\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\x12\x1f\n" + + "\vtotal_count\x18\x03 \x01(\x05R\n" + + "totalCount\">\n" + "\x19ReleasePhoneNumberRequest\x12!\n" + - "\fphone_number\x18\x01 \x01(\tR\vphoneNumber\"\xc4\x02\n" + - "\x18PhoneNumberInventoryItem\x12!\n" + - "\fphone_number\x18\x01 \x01(\tR\vphoneNumber\x12!\n" + - "\fcountry_code\x18\x02 \x01(\tR\vcountryCode\x12\x1b\n" + - "\tarea_code\x18\x03 \x01(\tR\bareaCode\x12\x1a\n" + - "\blocality\x18\x04 \x01(\tR\blocality\x12\x16\n" + - "\x06region\x18\x05 \x01(\tR\x06region\x12\"\n" + - "\fcapabilities\x18\x06 \x01(\tR\fcapabilities\x12,\n" + - "\x12monthly_cost_cents\x18\a \x01(\x03R\x10monthlyCostCents\x12\x1c\n" + - "\tavailable\x18\b \x01(\bR\tavailable\x12!\n" + - "\fcarrier_name\x18\t \x01(\tR\vcarrierName\"\xa9\x02\n" + - "\x14PurchasedPhoneNumber\x12\x0e\n" + - "\x02id\x18\x01 \x01(\tR\x02id\x12!\n" + - "\fphone_number\x18\x02 \x01(\tR\vphoneNumber\x12!\n" + + "\fphone_number\x18\x01 \x01(\tR\vphoneNumber\"\xb6\x02\n" + + "\x11GlobalPhoneNumber\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x1f\n" + + "\ve164_format\x18\x02 \x01(\tR\n" + + "e164Format\x12!\n" + "\fcountry_code\x18\x03 \x01(\tR\vcountryCode\x12\x1b\n" + - "\tarea_code\x18\x04 \x01(\tR\bareaCode\x12'\n" + - "\x0fnational_number\x18\x05 \x01(\tR\x0enationalNumber\x12\x1b\n" + - "\tis_mobile\x18\x06 \x01(\bR\bisMobile\x12\x16\n" + - "\x06status\x18\a \x01(\tR\x06status\x12\x1f\n" + - "\vassigned_at\x18\b \x01(\x03R\n" + + "\tarea_code\x18\x04 \x01(\tR\bareaCode\x12\x1f\n" + + "\vnumber_type\x18\x05 \x01(\tR\n" + + "numberType\x12\x1a\n" + + "\blocality\x18\x06 \x01(\tR\blocality\x12\x16\n" + + "\x06region\x18\a \x01(\tR\x06region\x12\x1d\n" + + "\n" + + "spam_score\x18\b \x01(\x03R\tspamScore\x12\x1d\n" + + "\n" + + "created_at\x18\t \x01(\x03R\tcreatedAt\x12\x1d\n" + + "\n" + + "updated_at\x18\n" + + " \x01(\x03R\tupdatedAt\"\xe6\x01\n" + + "\x0fPhoneNumberCost\x12\x1a\n" + + "\bcurrency\x18\x01 \x01(\tR\bcurrency\x12%\n" + + "\x0emonthly_rental\x18\x02 \x01(\x01R\rmonthlyRental\x12\x1d\n" + + "\n" + + "voice_cost\x18\x03 \x01(\x01R\tvoiceCost\x12,\n" + + "\x12voice_billing_unit\x18\x04 \x01(\tR\x10voiceBillingUnit\x12\x19\n" + + "\bsms_cost\x18\x05 \x01(\x01R\asmsCost\x12(\n" + + "\x10sms_billing_unit\x18\x06 \x01(\tR\x0esmsBillingUnit\"\xab\x01\n" + + "\x18PhoneNumberInventoryItem\x12=\n" + + "\fphone_number\x18\x01 \x01(\v2\x1a.livekit.GlobalPhoneNumberR\vphoneNumber\x12\"\n" + + "\fcapabilities\x18\x02 \x03(\tR\fcapabilities\x12,\n" + + "\x04cost\x18\x03 \x01(\v2\x18.livekit.PhoneNumberCostR\x04cost\"\xcb\x01\n" + + "\x14PurchasedPhoneNumber\x12=\n" + + "\fphone_number\x18\x01 \x01(\v2\x1a.livekit.GlobalPhoneNumberR\vphoneNumber\x122\n" + + "\x06status\x18\x02 \x01(\x0e2\x1a.livekit.PhoneNumberStatusR\x06status\x12\x1f\n" + + "\vassigned_at\x18\x03 \x01(\x03R\n" + "assignedAt\x12\x1f\n" + - "\vreleased_at\x18\t \x01(\x03R\n" + - "releasedAt2\xb5\x03\n" + + "\vreleased_at\x18\x04 \x01(\x03R\n" + + "releasedAt*\x9b\x01\n" + + "\x11PhoneNumberStatus\x12#\n" + + "\x1fPHONE_NUMBER_STATUS_UNSPECIFIED\x10\x00\x12\x1e\n" + + "\x1aPHONE_NUMBER_STATUS_ACTIVE\x10\x01\x12\x1f\n" + + "\x1bPHONE_NUMBER_STATUS_PENDING\x10\x02\x12 \n" + + "\x1cPHONE_NUMBER_STATUS_RELEASED\x10\x032\xb5\x03\n" + "\x12PhoneNumberService\x12q\n" + "\x18ListPhoneNumberInventory\x12(.livekit.ListPhoneNumberInventoryRequest\x1a).livekit.ListPhoneNumberInventoryResponse\"\x00\x12b\n" + "\x13PurchasePhoneNumber\x12#.livekit.PurchasePhoneNumberRequest\x1a$.livekit.PurchasePhoneNumberResponse\"\x00\x12t\n" + @@ -715,36 +869,44 @@ func file_livekit_phone_number_proto_rawDescGZIP() []byte { return file_livekit_phone_number_proto_rawDescData } -var file_livekit_phone_number_proto_msgTypes = make([]protoimpl.MessageInfo, 9) +var file_livekit_phone_number_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_livekit_phone_number_proto_msgTypes = make([]protoimpl.MessageInfo, 11) var file_livekit_phone_number_proto_goTypes = []any{ - (*ListPhoneNumberInventoryRequest)(nil), // 0: livekit.ListPhoneNumberInventoryRequest - (*ListPhoneNumberInventoryResponse)(nil), // 1: livekit.ListPhoneNumberInventoryResponse - (*PurchasePhoneNumberRequest)(nil), // 2: livekit.PurchasePhoneNumberRequest - (*PurchasePhoneNumberResponse)(nil), // 3: livekit.PurchasePhoneNumberResponse - (*ListPurchasedPhoneNumbersRequest)(nil), // 4: livekit.ListPurchasedPhoneNumbersRequest - (*ListPurchasedPhoneNumbersResponse)(nil), // 5: livekit.ListPurchasedPhoneNumbersResponse - (*ReleasePhoneNumberRequest)(nil), // 6: livekit.ReleasePhoneNumberRequest - (*PhoneNumberInventoryItem)(nil), // 7: livekit.PhoneNumberInventoryItem - (*PurchasedPhoneNumber)(nil), // 8: livekit.PurchasedPhoneNumber - (*emptypb.Empty)(nil), // 9: google.protobuf.Empty + (PhoneNumberStatus)(0), // 0: livekit.PhoneNumberStatus + (*ListPhoneNumberInventoryRequest)(nil), // 1: livekit.ListPhoneNumberInventoryRequest + (*ListPhoneNumberInventoryResponse)(nil), // 2: livekit.ListPhoneNumberInventoryResponse + (*PurchasePhoneNumberRequest)(nil), // 3: livekit.PurchasePhoneNumberRequest + (*PurchasePhoneNumberResponse)(nil), // 4: livekit.PurchasePhoneNumberResponse + (*ListPurchasedPhoneNumbersRequest)(nil), // 5: livekit.ListPurchasedPhoneNumbersRequest + (*ListPurchasedPhoneNumbersResponse)(nil), // 6: livekit.ListPurchasedPhoneNumbersResponse + (*ReleasePhoneNumberRequest)(nil), // 7: livekit.ReleasePhoneNumberRequest + (*GlobalPhoneNumber)(nil), // 8: livekit.GlobalPhoneNumber + (*PhoneNumberCost)(nil), // 9: livekit.PhoneNumberCost + (*PhoneNumberInventoryItem)(nil), // 10: livekit.PhoneNumberInventoryItem + (*PurchasedPhoneNumber)(nil), // 11: livekit.PurchasedPhoneNumber + (*emptypb.Empty)(nil), // 12: google.protobuf.Empty } var file_livekit_phone_number_proto_depIdxs = []int32{ - 7, // 0: livekit.ListPhoneNumberInventoryResponse.items:type_name -> livekit.PhoneNumberInventoryItem - 8, // 1: livekit.PurchasePhoneNumberResponse.phone_number:type_name -> livekit.PurchasedPhoneNumber - 8, // 2: livekit.ListPurchasedPhoneNumbersResponse.items:type_name -> livekit.PurchasedPhoneNumber - 0, // 3: livekit.PhoneNumberService.ListPhoneNumberInventory:input_type -> livekit.ListPhoneNumberInventoryRequest - 2, // 4: livekit.PhoneNumberService.PurchasePhoneNumber:input_type -> livekit.PurchasePhoneNumberRequest - 4, // 5: livekit.PhoneNumberService.ListPurchasedPhoneNumbers:input_type -> livekit.ListPurchasedPhoneNumbersRequest - 6, // 6: livekit.PhoneNumberService.ReleasePhoneNumber:input_type -> livekit.ReleasePhoneNumberRequest - 1, // 7: livekit.PhoneNumberService.ListPhoneNumberInventory:output_type -> livekit.ListPhoneNumberInventoryResponse - 3, // 8: livekit.PhoneNumberService.PurchasePhoneNumber:output_type -> livekit.PurchasePhoneNumberResponse - 5, // 9: livekit.PhoneNumberService.ListPurchasedPhoneNumbers:output_type -> livekit.ListPurchasedPhoneNumbersResponse - 9, // 10: livekit.PhoneNumberService.ReleasePhoneNumber:output_type -> google.protobuf.Empty - 7, // [7:11] is the sub-list for method output_type - 3, // [3:7] is the sub-list for method input_type - 3, // [3:3] is the sub-list for extension type_name - 3, // [3:3] is the sub-list for extension extendee - 0, // [0:3] is the sub-list for field type_name + 10, // 0: livekit.ListPhoneNumberInventoryResponse.items:type_name -> livekit.PhoneNumberInventoryItem + 11, // 1: livekit.PurchasePhoneNumberResponse.phone_numbers:type_name -> livekit.PurchasedPhoneNumber + 11, // 2: livekit.ListPurchasedPhoneNumbersResponse.items:type_name -> livekit.PurchasedPhoneNumber + 8, // 3: livekit.PhoneNumberInventoryItem.phone_number:type_name -> livekit.GlobalPhoneNumber + 9, // 4: livekit.PhoneNumberInventoryItem.cost:type_name -> livekit.PhoneNumberCost + 8, // 5: livekit.PurchasedPhoneNumber.phone_number:type_name -> livekit.GlobalPhoneNumber + 0, // 6: livekit.PurchasedPhoneNumber.status:type_name -> livekit.PhoneNumberStatus + 1, // 7: livekit.PhoneNumberService.ListPhoneNumberInventory:input_type -> livekit.ListPhoneNumberInventoryRequest + 3, // 8: livekit.PhoneNumberService.PurchasePhoneNumber:input_type -> livekit.PurchasePhoneNumberRequest + 5, // 9: livekit.PhoneNumberService.ListPurchasedPhoneNumbers:input_type -> livekit.ListPurchasedPhoneNumbersRequest + 7, // 10: livekit.PhoneNumberService.ReleasePhoneNumber:input_type -> livekit.ReleasePhoneNumberRequest + 2, // 11: livekit.PhoneNumberService.ListPhoneNumberInventory:output_type -> livekit.ListPhoneNumberInventoryResponse + 4, // 12: livekit.PhoneNumberService.PurchasePhoneNumber:output_type -> livekit.PurchasePhoneNumberResponse + 6, // 13: livekit.PhoneNumberService.ListPurchasedPhoneNumbers:output_type -> livekit.ListPurchasedPhoneNumbersResponse + 12, // 14: livekit.PhoneNumberService.ReleasePhoneNumber:output_type -> google.protobuf.Empty + 11, // [11:15] is the sub-list for method output_type + 7, // [7:11] is the sub-list for method input_type + 7, // [7:7] is the sub-list for extension type_name + 7, // [7:7] is the sub-list for extension extendee + 0, // [0:7] is the sub-list for field type_name } func init() { file_livekit_phone_number_proto_init() } @@ -757,13 +919,14 @@ func file_livekit_phone_number_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_livekit_phone_number_proto_rawDesc), len(file_livekit_phone_number_proto_rawDesc)), - NumEnums: 0, - NumMessages: 9, + NumEnums: 1, + NumMessages: 11, NumExtensions: 0, NumServices: 1, }, GoTypes: file_livekit_phone_number_proto_goTypes, DependencyIndexes: file_livekit_phone_number_proto_depIdxs, + EnumInfos: file_livekit_phone_number_proto_enumTypes, MessageInfos: file_livekit_phone_number_proto_msgTypes, }.Build() File_livekit_phone_number_proto = out.File diff --git a/livekit/livekit_phone_number.twirp.go b/livekit/livekit_phone_number.twirp.go index 1410b090c..9756689d9 100644 --- a/livekit/livekit_phone_number.twirp.go +++ b/livekit/livekit_phone_number.twirp.go @@ -1361,50 +1361,65 @@ func (s *phoneNumberServiceServer) PathPrefix() string { } var twirpFileDescriptor6 = []byte{ - // 712 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x55, 0x4f, 0x4f, 0xdb, 0x4a, - 0x10, 0xc7, 0x36, 0x81, 0x78, 0x82, 0x78, 0x4f, 0xfb, 0x10, 0x32, 0xce, 0x7b, 0x22, 0x98, 0x57, - 0x35, 0xad, 0xaa, 0x20, 0xc1, 0xa1, 0xb7, 0xb6, 0x34, 0xea, 0x01, 0xa9, 0x45, 0xc8, 0xbd, 0xf5, - 0x62, 0xad, 0x9d, 0x21, 0x59, 0xd5, 0xf6, 0x06, 0xef, 0x3a, 0x52, 0x3e, 0x51, 0x45, 0xef, 0xfd, - 0x06, 0xfd, 0x60, 0x95, 0xd7, 0xeb, 0xfc, 0x21, 0x0e, 0x41, 0x95, 0x7a, 0x9c, 0xdf, 0xcc, 0xce, - 0xcc, 0xef, 0xb7, 0x3b, 0xb3, 0xe0, 0xc6, 0x6c, 0x82, 0x5f, 0x99, 0x0c, 0xc6, 0x23, 0x9e, 0x62, - 0x90, 0xe6, 0x49, 0x88, 0x59, 0x6f, 0x9c, 0x71, 0xc9, 0xc9, 0xae, 0xf6, 0xb9, 0xed, 0x21, 0xe7, - 0xc3, 0x18, 0xcf, 0x14, 0x1c, 0xe6, 0xb7, 0x67, 0x98, 0x8c, 0xe5, 0xb4, 0x8c, 0xf2, 0xee, 0x0d, - 0x38, 0xfe, 0xc8, 0x84, 0xbc, 0x29, 0x12, 0x5c, 0xab, 0xf3, 0x57, 0xe9, 0x04, 0x53, 0xc9, 0xb3, - 0xa9, 0x8f, 0x77, 0x39, 0x0a, 0x49, 0x4e, 0x60, 0x2f, 0xe2, 0x79, 0x2a, 0xb3, 0x69, 0x10, 0xf1, - 0x01, 0x3a, 0x46, 0xc7, 0xe8, 0xda, 0x7e, 0x4b, 0x63, 0x7d, 0x3e, 0x40, 0xd2, 0x06, 0x9b, 0x66, - 0x48, 0x4b, 0xbf, 0xa9, 0xfc, 0xcd, 0x02, 0x50, 0x4e, 0x07, 0x76, 0xc7, 0x54, 0x4a, 0xcc, 0x52, - 0xc7, 0x52, 0xae, 0xca, 0x24, 0x07, 0xd0, 0x88, 0x59, 0xc2, 0xa4, 0xb3, 0xdd, 0x31, 0xba, 0x0d, - 0xbf, 0x34, 0xc8, 0x21, 0xec, 0xf0, 0xdb, 0x5b, 0x81, 0xd2, 0x69, 0x28, 0x58, 0x5b, 0xde, 0x77, - 0x03, 0x3a, 0xeb, 0x7b, 0x15, 0x63, 0x9e, 0x0a, 0x24, 0xaf, 0xa1, 0xc1, 0x24, 0x26, 0xc2, 0x31, - 0x3a, 0x56, 0xb7, 0x75, 0x7e, 0xd2, 0xd3, 0x32, 0xf4, 0xea, 0x4e, 0x5d, 0x49, 0x4c, 0xfc, 0x32, - 0x9e, 0x1c, 0x43, 0x4b, 0x72, 0x49, 0xe3, 0x40, 0xf1, 0x52, 0x24, 0x1a, 0x3e, 0x28, 0xa8, 0x5f, - 0x20, 0xf3, 0x66, 0xad, 0xfa, 0x66, 0xb7, 0x97, 0x9a, 0x7d, 0x0b, 0xee, 0x4d, 0x9e, 0x45, 0x23, - 0x2a, 0x70, 0xa1, 0xf2, 0x82, 0xa4, 0x8b, 0x57, 0x56, 0x49, 0x3a, 0x9e, 0x47, 0x7a, 0x01, 0xb4, - 0x6b, 0x13, 0x68, 0x9e, 0xef, 0x6a, 0x32, 0xb4, 0xce, 0xff, 0x9b, 0xd3, 0xd5, 0x67, 0x07, 0x8b, - 0x87, 0x97, 0x0a, 0xdc, 0x68, 0x35, 0x6b, 0x02, 0x45, 0xd5, 0xe7, 0x8c, 0xb3, 0x51, 0xcf, 0xd9, - 0x5c, 0xe2, 0xfc, 0xcd, 0x80, 0x93, 0x47, 0x52, 0xea, 0xce, 0x2f, 0x96, 0x6f, 0x68, 0x43, 0xcb, - 0x7f, 0xe6, 0x76, 0xde, 0xc0, 0x91, 0x8f, 0x31, 0xfe, 0xf6, 0xe5, 0xfc, 0x34, 0xc1, 0x59, 0xf7, - 0xa0, 0x9e, 0x70, 0x7e, 0x65, 0xa4, 0xcc, 0x0d, 0x23, 0x65, 0x3d, 0x18, 0x29, 0x17, 0x9a, 0x31, - 0x8f, 0x68, 0xcc, 0xe4, 0x54, 0x31, 0xb3, 0xfd, 0x99, 0x5d, 0x70, 0xce, 0x70, 0xc8, 0x78, 0xaa, - 0xc6, 0xc7, 0xf6, 0xb5, 0x45, 0x3c, 0xd8, 0x8b, 0xe8, 0x98, 0x86, 0x2c, 0x66, 0x92, 0xa1, 0x70, - 0x76, 0x94, 0x77, 0x09, 0x23, 0xaf, 0x80, 0x24, 0x3c, 0x95, 0xa3, 0xb8, 0xe8, 0x4b, 0xc8, 0x20, - 0xc2, 0x54, 0x0a, 0x67, 0xb7, 0x63, 0x74, 0x2d, 0xff, 0x6f, 0xed, 0xe9, 0x73, 0x21, 0xfb, 0x05, - 0x4e, 0xfe, 0x05, 0x9b, 0x4e, 0x28, 0x8b, 0x69, 0x18, 0xa3, 0xd3, 0xec, 0x18, 0xdd, 0xa6, 0x3f, - 0x07, 0x14, 0x47, 0x9a, 0x65, 0x0c, 0xb3, 0x20, 0xa5, 0x09, 0x3a, 0xb6, 0xe6, 0x58, 0x62, 0xd7, - 0x34, 0x41, 0xef, 0xde, 0x84, 0x83, 0xba, 0x5b, 0x27, 0xfb, 0x60, 0xb2, 0x81, 0x16, 0xce, 0x64, - 0x83, 0x15, 0x49, 0xcd, 0xcd, 0x92, 0x5a, 0x1b, 0x24, 0xdd, 0x7e, 0x20, 0xe9, 0x73, 0xf8, 0x2b, - 0xa5, 0x92, 0xf1, 0x94, 0xc6, 0x55, 0x95, 0x52, 0xbf, 0xfd, 0x0a, 0xd6, 0x85, 0xda, 0x60, 0x33, - 0x11, 0x24, 0x3c, 0x64, 0x31, 0x2a, 0x11, 0x9b, 0x7e, 0x93, 0x89, 0x4f, 0xca, 0x2e, 0xc4, 0x17, - 0x92, 0xca, 0xbc, 0x14, 0xcd, 0xf6, 0xb5, 0x55, 0xbc, 0x5f, 0x2a, 0x04, 0x1b, 0xa6, 0x38, 0x08, - 0xa8, 0x54, 0x62, 0x59, 0x3e, 0x54, 0xd0, 0xa5, 0x2c, 0x02, 0xb2, 0xf2, 0x45, 0xaa, 0x00, 0xbb, - 0x0c, 0xa8, 0xa0, 0x4b, 0x79, 0xfe, 0xc3, 0x02, 0xb2, 0x20, 0xd1, 0x67, 0xcc, 0x26, 0x2c, 0x42, - 0x72, 0x07, 0xce, 0xba, 0x9d, 0x48, 0xba, 0xb3, 0xd1, 0xda, 0xb0, 0xe2, 0xdd, 0x17, 0x4f, 0x88, - 0x2c, 0xc7, 0xd7, 0xdb, 0x22, 0x21, 0xfc, 0x53, 0xb3, 0x99, 0xc8, 0xe9, 0xca, 0x20, 0xaf, 0xce, - 0x96, 0xfb, 0xff, 0xe3, 0x41, 0xb3, 0x1a, 0x12, 0x8e, 0xd6, 0x6e, 0x12, 0xf2, 0xa0, 0xdb, 0x47, - 0x16, 0x98, 0xfb, 0xf2, 0x29, 0xa1, 0xb3, 0xaa, 0x3e, 0x90, 0xd5, 0xb5, 0x40, 0xbc, 0x59, 0x8e, - 0xb5, 0x3b, 0xc3, 0x3d, 0xec, 0x95, 0xbf, 0x6c, 0xaf, 0xfa, 0x65, 0x7b, 0x1f, 0x8a, 0x5f, 0xd6, - 0xdb, 0x7a, 0xff, 0xec, 0xcb, 0xe9, 0x90, 0xc9, 0x51, 0x1e, 0xf6, 0x22, 0x9e, 0x9c, 0xe9, 0x4c, - 0xe5, 0x67, 0x1c, 0xf1, 0xb8, 0x02, 0xc2, 0x1d, 0x85, 0x5c, 0xfc, 0x0a, 0x00, 0x00, 0xff, 0xff, - 0xbf, 0xa5, 0x47, 0x83, 0xd3, 0x07, 0x00, 0x00, + // 952 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0xcf, 0x6e, 0xdb, 0xc6, + 0x13, 0x36, 0x25, 0xcb, 0xb6, 0x46, 0xb6, 0xa3, 0xec, 0x2f, 0x08, 0x68, 0xfa, 0x97, 0x4a, 0xa6, + 0x9b, 0x42, 0x0d, 0x02, 0x19, 0x55, 0x8a, 0xf6, 0xd4, 0x02, 0xb2, 0xcc, 0xa4, 0x02, 0x52, 0x55, + 0xa0, 0xe4, 0x16, 0xe8, 0x85, 0xa0, 0xa8, 0x8d, 0xbc, 0x08, 0xc9, 0x65, 0xb8, 0x4b, 0xa3, 0x3a, + 0xf7, 0x1d, 0x7a, 0xe9, 0xa9, 0xe7, 0x9e, 0xdb, 0x97, 0xe8, 0x7b, 0xf4, 0x39, 0x8a, 0xfd, 0x23, + 0x86, 0xb6, 0x28, 0x3b, 0x45, 0x8f, 0xfb, 0xcd, 0x37, 0xb3, 0xdf, 0xce, 0xcc, 0xce, 0x2e, 0x58, + 0x21, 0xb9, 0xc6, 0x6f, 0x09, 0xf7, 0x92, 0x2b, 0x1a, 0x63, 0x2f, 0xce, 0xa2, 0x19, 0x4e, 0xbb, + 0x49, 0x4a, 0x39, 0x45, 0xbb, 0xda, 0x66, 0x1d, 0x2f, 0x28, 0x5d, 0x84, 0xf8, 0x4c, 0xc2, 0xb3, + 0xec, 0xcd, 0x19, 0x8e, 0x12, 0xbe, 0x54, 0x2c, 0xfb, 0x17, 0x03, 0x5a, 0xaf, 0x09, 0xe3, 0x63, + 0x11, 0x60, 0x24, 0xfd, 0x87, 0xf1, 0x35, 0x8e, 0x39, 0x4d, 0x97, 0x2e, 0x7e, 0x97, 0x61, 0xc6, + 0xd1, 0x09, 0xec, 0x07, 0x34, 0x8b, 0x79, 0xba, 0xf4, 0x02, 0x3a, 0xc7, 0xa6, 0xd1, 0x36, 0x3a, + 0x75, 0xb7, 0xa1, 0xb1, 0x01, 0x9d, 0x63, 0x74, 0x0c, 0x75, 0x3f, 0xc5, 0xbe, 0xb2, 0x57, 0xa4, + 0x7d, 0x4f, 0x00, 0xd2, 0xf8, 0x08, 0x6a, 0x21, 0x89, 0x08, 0x37, 0xab, 0x6d, 0xa3, 0x53, 0x73, + 0xd5, 0x02, 0x3d, 0x01, 0x48, 0xfc, 0x05, 0xf6, 0x38, 0x7d, 0x8b, 0x63, 0x73, 0x5b, 0xfa, 0xd4, + 0x05, 0x32, 0x15, 0x80, 0xfd, 0xb3, 0x01, 0xed, 0xcd, 0xc2, 0x58, 0x42, 0x63, 0x86, 0xd1, 0x97, + 0x50, 0x23, 0x1c, 0x47, 0xcc, 0x34, 0xda, 0xd5, 0x4e, 0xa3, 0x77, 0xd2, 0xd5, 0x67, 0xee, 0x96, + 0x79, 0x0d, 0x39, 0x8e, 0x5c, 0xc5, 0x47, 0x9f, 0xc0, 0x83, 0x18, 0xff, 0xc4, 0xbd, 0x82, 0x02, + 0xa5, 0xfa, 0x40, 0xc0, 0xe3, 0x5c, 0x45, 0x1f, 0xac, 0x71, 0x96, 0x06, 0x57, 0x3e, 0xc3, 0x85, + 0x90, 0xab, 0xc4, 0x9c, 0xc2, 0x41, 0x31, 0xf1, 0x4a, 0x46, 0xdd, 0xdd, 0x4f, 0xde, 0x53, 0x99, + 0xed, 0xc3, 0x71, 0x69, 0x08, 0x7d, 0x84, 0xf3, 0xb2, 0x18, 0x8d, 0xde, 0x93, 0xf7, 0x47, 0xd1, + 0xce, 0xf3, 0xa2, 0xf7, 0xcd, 0x2d, 0x7e, 0xd0, 0xa9, 0x2a, 0x61, 0xb2, 0x95, 0xd6, 0xbc, 0x08, + 0xc6, 0xe6, 0x22, 0x54, 0x6e, 0x17, 0xe1, 0x37, 0x03, 0x4e, 0xee, 0x88, 0xac, 0x8f, 0xf0, 0xe2, + 0x66, 0x15, 0xee, 0x91, 0xfe, 0xef, 0x2a, 0x80, 0x5a, 0xd0, 0xe0, 0x94, 0xfb, 0xa1, 0x27, 0xdb, + 0x4d, 0xb7, 0x10, 0x48, 0x68, 0x20, 0x10, 0xfb, 0x6b, 0x38, 0x72, 0x71, 0x88, 0xcb, 0x2b, 0x74, + 0x02, 0xfb, 0xc5, 0xec, 0xae, 0x5a, 0xb7, 0x90, 0x3d, 0xfb, 0xcf, 0x0a, 0x3c, 0x7c, 0x15, 0xd2, + 0x99, 0x1f, 0x16, 0xfc, 0xd1, 0x21, 0x54, 0xc8, 0x5c, 0xd3, 0x2b, 0x64, 0x2e, 0x64, 0xe0, 0xcf, + 0xbe, 0xf8, 0xdc, 0x7b, 0x43, 0xd3, 0xc8, 0xe7, 0x5a, 0x2a, 0x08, 0xe8, 0xa5, 0x44, 0xd6, 0x2e, + 0x49, 0xf5, 0x9e, 0x4b, 0xb2, 0x7d, 0xeb, 0x92, 0xb4, 0xa0, 0xa1, 0x34, 0x7a, 0x7c, 0x99, 0x60, + 0xb3, 0xa6, 0x36, 0x50, 0xd0, 0x74, 0x99, 0x60, 0x64, 0xc1, 0x5e, 0x48, 0x03, 0x3f, 0x24, 0x7c, + 0x69, 0xee, 0x28, 0xe7, 0xd5, 0x1a, 0x3d, 0x86, 0x9d, 0x14, 0x2f, 0x08, 0x8d, 0xcd, 0x5d, 0x69, + 0xd1, 0x2b, 0x51, 0x5e, 0x96, 0xf8, 0x91, 0xc7, 0x02, 0x9a, 0x62, 0x73, 0xaf, 0x6d, 0x74, 0xaa, + 0x6e, 0x5d, 0x20, 0x13, 0x01, 0x08, 0x73, 0x90, 0x62, 0x9f, 0xe3, 0xb9, 0xe7, 0x73, 0xb3, 0xae, + 0xcc, 0x1a, 0xe9, 0xcb, 0xe6, 0xc8, 0x92, 0xf9, 0xca, 0x0c, 0xca, 0xac, 0x91, 0x3e, 0xb7, 0xff, + 0x36, 0xe0, 0x41, 0x21, 0x65, 0x03, 0xca, 0xb8, 0x10, 0x19, 0x64, 0x69, 0x8a, 0xe3, 0x60, 0xa9, + 0x93, 0x97, 0xaf, 0xd1, 0x53, 0x38, 0x8c, 0x68, 0xcc, 0xaf, 0xc2, 0xa5, 0x97, 0xe2, 0x98, 0xfb, + 0xa1, 0xcc, 0xa2, 0xe1, 0x1e, 0x68, 0xd4, 0x95, 0xa0, 0xd8, 0xf5, 0x9a, 0x92, 0x00, 0x7b, 0x01, + 0x65, 0xaa, 0xde, 0x86, 0x5b, 0x97, 0x88, 0xdc, 0xe1, 0x39, 0x20, 0x65, 0x9e, 0x91, 0x30, 0x24, + 0xf1, 0xc2, 0xcb, 0x62, 0xc2, 0x75, 0x36, 0x9b, 0xd2, 0x72, 0xae, 0x0c, 0x97, 0x31, 0xe1, 0xe8, + 0x08, 0xf6, 0x58, 0xc4, 0x54, 0xa8, 0x9a, 0x0c, 0xb5, 0xcb, 0x22, 0x26, 0x03, 0x75, 0xa0, 0x29, + 0x4c, 0x37, 0xc2, 0xa8, 0xbc, 0x1e, 0xb2, 0x88, 0x15, 0x82, 0xd8, 0xbf, 0x1b, 0x60, 0x6e, 0x1a, + 0x28, 0xe8, 0xab, 0x92, 0x0e, 0x6b, 0xf4, 0xac, 0xfc, 0x0e, 0xac, 0xb5, 0xd6, 0x8d, 0xee, 0x43, + 0x36, 0xec, 0x07, 0x7e, 0xe2, 0xcf, 0x48, 0x48, 0x38, 0xc1, 0xcc, 0xac, 0xa8, 0x09, 0x52, 0xc4, + 0xd0, 0x73, 0xd8, 0xce, 0x73, 0xd1, 0xe8, 0x99, 0x65, 0x43, 0x4e, 0x9c, 0xc8, 0x95, 0x2c, 0xfb, + 0x2f, 0x03, 0x1e, 0x95, 0x5d, 0xbc, 0xff, 0xaa, 0xb4, 0x07, 0x3b, 0x8c, 0xfb, 0x3c, 0x63, 0xb2, + 0x6c, 0x87, 0x05, 0xc7, 0x82, 0xcb, 0x44, 0x32, 0x5c, 0xcd, 0x14, 0x4d, 0xed, 0x33, 0x46, 0x16, + 0xb1, 0x6a, 0xa1, 0xaa, 0x6c, 0x21, 0x58, 0x41, 0x7d, 0x2e, 0x08, 0xa9, 0xba, 0xbc, 0x92, 0xb0, + 0xad, 0x08, 0x2b, 0xa8, 0xcf, 0x9f, 0xfd, 0x6a, 0xc0, 0xc3, 0xb5, 0xf8, 0xe8, 0x14, 0x5a, 0xe3, + 0x6f, 0xbe, 0x1b, 0x39, 0xde, 0xe8, 0xf2, 0xdb, 0x73, 0xc7, 0xf5, 0x26, 0xd3, 0xfe, 0xf4, 0x72, + 0xe2, 0x5d, 0x8e, 0x26, 0x63, 0x67, 0x30, 0x7c, 0x39, 0x74, 0x2e, 0x9a, 0x5b, 0xe8, 0x23, 0xb0, + 0xca, 0x48, 0xfd, 0xc1, 0x74, 0xf8, 0xbd, 0xd3, 0x34, 0x50, 0x0b, 0x8e, 0xcb, 0xec, 0x63, 0x67, + 0x74, 0x31, 0x1c, 0xbd, 0x6a, 0x56, 0x50, 0x1b, 0xfe, 0x5f, 0x46, 0x70, 0x9d, 0xd7, 0x4e, 0x7f, + 0xe2, 0x5c, 0x34, 0xab, 0xbd, 0x3f, 0xaa, 0x80, 0x8a, 0xea, 0x70, 0x7a, 0x4d, 0x02, 0x8c, 0xde, + 0x81, 0xb9, 0xe9, 0xe9, 0x42, 0x9d, 0x3c, 0x6d, 0xf7, 0x3c, 0xbb, 0xd6, 0xa7, 0x1f, 0xc0, 0x54, + 0x13, 0xd8, 0xde, 0x42, 0x33, 0xf8, 0x5f, 0xc9, 0x2b, 0x83, 0x4e, 0xd7, 0x66, 0xf1, 0xfa, 0x90, + 0xb4, 0x3e, 0xbe, 0x9b, 0x94, 0xef, 0xc1, 0xe1, 0x68, 0xe3, 0x63, 0x80, 0x6e, 0xa9, 0xbd, 0xe3, + 0x29, 0xb2, 0x9e, 0x7d, 0x08, 0x35, 0xdf, 0xd5, 0x05, 0xb4, 0x3e, 0xdf, 0x91, 0x9d, 0xc7, 0xd8, + 0x38, 0xfc, 0xad, 0xc7, 0x5d, 0xf5, 0xf3, 0xe9, 0xae, 0x7e, 0x3e, 0x5d, 0x47, 0xfc, 0x7c, 0xec, + 0xad, 0xf3, 0xa7, 0x3f, 0x9e, 0x2e, 0x08, 0xbf, 0xca, 0x66, 0xdd, 0x80, 0x46, 0x67, 0x3a, 0x92, + 0xfa, 0x20, 0x05, 0x34, 0x5c, 0x01, 0xb3, 0x1d, 0x89, 0xbc, 0xf8, 0x27, 0x00, 0x00, 0xff, 0xff, + 0x6d, 0x6d, 0xb8, 0x81, 0x67, 0x09, 0x00, 0x00, } From 337ed0bd96acf298cfacd23f802107a4b6e91f92 Mon Sep 17 00:00:00 2001 From: Nishad Musthafa Date: Sun, 17 Aug 2025 19:29:59 -0700 Subject: [PATCH 11/20] Using a more generic costing model based on resources --- protobufs/livekit_phone_number.proto | 36 +++++++++++++++------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/protobufs/livekit_phone_number.proto b/protobufs/livekit_phone_number.proto index e7070c447..7cb07b1f5 100644 --- a/protobufs/livekit_phone_number.proto +++ b/protobufs/livekit_phone_number.proto @@ -6,6 +6,16 @@ option go_package = "github.com/livekit/protocol/livekit"; import "google/protobuf/empty.proto"; +// Telephony cost type enumeration +enum TelephonyCostType { + TELEPHONY_COST_TYPE_UNSPECIFIED = 0; // Default value + TELEPHONY_COST_TYPE_NUMBER_RENTAL = 1; // Monthly rental for the phone number + TELEPHONY_COST_TYPE_VOICE_INBOUND = 2; // Inbound voice calls + TELEPHONY_COST_TYPE_VOICE_OUTBOUND = 3; // Outbound voice calls + TELEPHONY_COST_TYPE_SMS_INBOUND = 4; // Inbound SMS + TELEPHONY_COST_TYPE_SMS_OUTBOUND = 5; // Outbound SMS +} + // Phone number status enumeration enum PhoneNumberStatus { PHONE_NUMBER_STATUS_UNSPECIFIED = 0; // Default value @@ -89,27 +99,21 @@ message GlobalPhoneNumber { int64 updated_at = 10; // timestamp when updated } -// PhoneNumberCost represents the pricing structure for a phone number -message PhoneNumberCost { - string currency = 1; // Currency code (e.g., "USD", "EUR") - - // Monthly rental cost - double monthly_rental = 2; // Monthly rental cost (e.g., 10.00) +// TelephonyCost represents the pricing structure for a specific telephony service +message TelephonyCost { + TelephonyCostType resource = 1; // Type of telephony service + string currency = 2; // Currency code (e.g., "USD", "EUR") + double price = 3; // Price for this service + string billing_unit = 4; // Billing unit (e.g., "month", "minute", "message", "call") +} - // Voice calling costs - double voice_cost = 3; // Voice cost per unit (e.g., 2.00) - string voice_billing_unit = 4; // Voice billing unit (e.g., "minute", "second", "call") - // SMS costs - double sms_cost = 5; // SMS cost per unit (e.g., 0.50) - string sms_billing_unit = 6; // SMS billing unit (e.g., "message", "character") -} // PhoneNumberInventoryItem - Represents an available phone number for purchase message PhoneNumberInventoryItem { - GlobalPhoneNumber phone_number = 1; // Common phone number fields - repeated string capabilities = 2; // Comma-separated capabilities (e.g., "voice,sms") - PhoneNumberCost cost = 3; // Cost structure for this phone number + GlobalPhoneNumber phone_number = 1; // Common phone number fields + repeated string capabilities = 2; // Comma-separated capabilities (e.g., "voice,sms") + repeated TelephonyCost costs = 3; // Array of costs for different services } // PurchasedPhoneNumber - Represents a phone number owned by a LiveKit project From c798146c2c6439708656637f9b63e15a47560c14 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 18 Aug 2025 02:31:47 +0000 Subject: [PATCH 12/20] generated protobuf --- livekit/livekit_phone_number.pb.go | 242 +++++++++++++++----------- livekit/livekit_phone_number.twirp.go | 125 ++++++------- 2 files changed, 208 insertions(+), 159 deletions(-) diff --git a/livekit/livekit_phone_number.pb.go b/livekit/livekit_phone_number.pb.go index 5ff2a957b..bb9f3e14f 100644 --- a/livekit/livekit_phone_number.pb.go +++ b/livekit/livekit_phone_number.pb.go @@ -22,6 +22,65 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +// Telephony cost type enumeration +type TelephonyCostType int32 + +const ( + TelephonyCostType_TELEPHONY_COST_TYPE_UNSPECIFIED TelephonyCostType = 0 // Default value + TelephonyCostType_TELEPHONY_COST_TYPE_NUMBER_RENTAL TelephonyCostType = 1 // Monthly rental for the phone number + TelephonyCostType_TELEPHONY_COST_TYPE_VOICE_INBOUND TelephonyCostType = 2 // Inbound voice calls + TelephonyCostType_TELEPHONY_COST_TYPE_VOICE_OUTBOUND TelephonyCostType = 3 // Outbound voice calls + TelephonyCostType_TELEPHONY_COST_TYPE_SMS_INBOUND TelephonyCostType = 4 // Inbound SMS + TelephonyCostType_TELEPHONY_COST_TYPE_SMS_OUTBOUND TelephonyCostType = 5 // Outbound SMS +) + +// Enum value maps for TelephonyCostType. +var ( + TelephonyCostType_name = map[int32]string{ + 0: "TELEPHONY_COST_TYPE_UNSPECIFIED", + 1: "TELEPHONY_COST_TYPE_NUMBER_RENTAL", + 2: "TELEPHONY_COST_TYPE_VOICE_INBOUND", + 3: "TELEPHONY_COST_TYPE_VOICE_OUTBOUND", + 4: "TELEPHONY_COST_TYPE_SMS_INBOUND", + 5: "TELEPHONY_COST_TYPE_SMS_OUTBOUND", + } + TelephonyCostType_value = map[string]int32{ + "TELEPHONY_COST_TYPE_UNSPECIFIED": 0, + "TELEPHONY_COST_TYPE_NUMBER_RENTAL": 1, + "TELEPHONY_COST_TYPE_VOICE_INBOUND": 2, + "TELEPHONY_COST_TYPE_VOICE_OUTBOUND": 3, + "TELEPHONY_COST_TYPE_SMS_INBOUND": 4, + "TELEPHONY_COST_TYPE_SMS_OUTBOUND": 5, + } +) + +func (x TelephonyCostType) Enum() *TelephonyCostType { + p := new(TelephonyCostType) + *p = x + return p +} + +func (x TelephonyCostType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (TelephonyCostType) Descriptor() protoreflect.EnumDescriptor { + return file_livekit_phone_number_proto_enumTypes[0].Descriptor() +} + +func (TelephonyCostType) Type() protoreflect.EnumType { + return &file_livekit_phone_number_proto_enumTypes[0] +} + +func (x TelephonyCostType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use TelephonyCostType.Descriptor instead. +func (TelephonyCostType) EnumDescriptor() ([]byte, []int) { + return file_livekit_phone_number_proto_rawDescGZIP(), []int{0} +} + // Phone number status enumeration type PhoneNumberStatus int32 @@ -59,11 +118,11 @@ func (x PhoneNumberStatus) String() string { } func (PhoneNumberStatus) Descriptor() protoreflect.EnumDescriptor { - return file_livekit_phone_number_proto_enumTypes[0].Descriptor() + return file_livekit_phone_number_proto_enumTypes[1].Descriptor() } func (PhoneNumberStatus) Type() protoreflect.EnumType { - return &file_livekit_phone_number_proto_enumTypes[0] + return &file_livekit_phone_number_proto_enumTypes[1] } func (x PhoneNumberStatus) Number() protoreflect.EnumNumber { @@ -72,7 +131,7 @@ func (x PhoneNumberStatus) Number() protoreflect.EnumNumber { // Deprecated: Use PhoneNumberStatus.Descriptor instead. func (PhoneNumberStatus) EnumDescriptor() ([]byte, []int) { - return file_livekit_phone_number_proto_rawDescGZIP(), []int{0} + return file_livekit_phone_number_proto_rawDescGZIP(), []int{1} } // ListPhoneNumberInventoryRequest - Request to list available phone numbers @@ -563,36 +622,31 @@ func (x *GlobalPhoneNumber) GetUpdatedAt() int64 { return 0 } -// PhoneNumberCost represents the pricing structure for a phone number -type PhoneNumberCost struct { - state protoimpl.MessageState `protogen:"open.v1"` - Currency string `protobuf:"bytes,1,opt,name=currency,proto3" json:"currency,omitempty"` // Currency code (e.g., "USD", "EUR") - // Monthly rental cost - MonthlyRental float64 `protobuf:"fixed64,2,opt,name=monthly_rental,json=monthlyRental,proto3" json:"monthly_rental,omitempty"` // Monthly rental cost (e.g., 10.00) - // Voice calling costs - VoiceCost float64 `protobuf:"fixed64,3,opt,name=voice_cost,json=voiceCost,proto3" json:"voice_cost,omitempty"` // Voice cost per unit (e.g., 2.00) - VoiceBillingUnit string `protobuf:"bytes,4,opt,name=voice_billing_unit,json=voiceBillingUnit,proto3" json:"voice_billing_unit,omitempty"` // Voice billing unit (e.g., "minute", "second", "call") - // SMS costs - SmsCost float64 `protobuf:"fixed64,5,opt,name=sms_cost,json=smsCost,proto3" json:"sms_cost,omitempty"` // SMS cost per unit (e.g., 0.50) - SmsBillingUnit string `protobuf:"bytes,6,opt,name=sms_billing_unit,json=smsBillingUnit,proto3" json:"sms_billing_unit,omitempty"` // SMS billing unit (e.g., "message", "character") - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *PhoneNumberCost) Reset() { - *x = PhoneNumberCost{} +// TelephonyCost represents the pricing structure for a specific telephony service +type TelephonyCost struct { + state protoimpl.MessageState `protogen:"open.v1"` + Resource TelephonyCostType `protobuf:"varint,1,opt,name=resource,proto3,enum=livekit.TelephonyCostType" json:"resource,omitempty"` // Type of telephony service + Currency string `protobuf:"bytes,2,opt,name=currency,proto3" json:"currency,omitempty"` // Currency code (e.g., "USD", "EUR") + Price float64 `protobuf:"fixed64,3,opt,name=price,proto3" json:"price,omitempty"` // Price for this service + BillingUnit string `protobuf:"bytes,4,opt,name=billing_unit,json=billingUnit,proto3" json:"billing_unit,omitempty"` // Billing unit (e.g., "month", "minute", "message", "call") + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TelephonyCost) Reset() { + *x = TelephonyCost{} mi := &file_livekit_phone_number_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *PhoneNumberCost) String() string { +func (x *TelephonyCost) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PhoneNumberCost) ProtoMessage() {} +func (*TelephonyCost) ProtoMessage() {} -func (x *PhoneNumberCost) ProtoReflect() protoreflect.Message { +func (x *TelephonyCost) ProtoReflect() protoreflect.Message { mi := &file_livekit_phone_number_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -604,49 +658,35 @@ func (x *PhoneNumberCost) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PhoneNumberCost.ProtoReflect.Descriptor instead. -func (*PhoneNumberCost) Descriptor() ([]byte, []int) { +// Deprecated: Use TelephonyCost.ProtoReflect.Descriptor instead. +func (*TelephonyCost) Descriptor() ([]byte, []int) { return file_livekit_phone_number_proto_rawDescGZIP(), []int{8} } -func (x *PhoneNumberCost) GetCurrency() string { +func (x *TelephonyCost) GetResource() TelephonyCostType { if x != nil { - return x.Currency + return x.Resource } - return "" + return TelephonyCostType_TELEPHONY_COST_TYPE_UNSPECIFIED } -func (x *PhoneNumberCost) GetMonthlyRental() float64 { +func (x *TelephonyCost) GetCurrency() string { if x != nil { - return x.MonthlyRental - } - return 0 -} - -func (x *PhoneNumberCost) GetVoiceCost() float64 { - if x != nil { - return x.VoiceCost - } - return 0 -} - -func (x *PhoneNumberCost) GetVoiceBillingUnit() string { - if x != nil { - return x.VoiceBillingUnit + return x.Currency } return "" } -func (x *PhoneNumberCost) GetSmsCost() float64 { +func (x *TelephonyCost) GetPrice() float64 { if x != nil { - return x.SmsCost + return x.Price } return 0 } -func (x *PhoneNumberCost) GetSmsBillingUnit() string { +func (x *TelephonyCost) GetBillingUnit() string { if x != nil { - return x.SmsBillingUnit + return x.BillingUnit } return "" } @@ -656,7 +696,7 @@ type PhoneNumberInventoryItem struct { state protoimpl.MessageState `protogen:"open.v1"` PhoneNumber *GlobalPhoneNumber `protobuf:"bytes,1,opt,name=phone_number,json=phoneNumber,proto3" json:"phone_number,omitempty"` // Common phone number fields Capabilities []string `protobuf:"bytes,2,rep,name=capabilities,proto3" json:"capabilities,omitempty"` // Comma-separated capabilities (e.g., "voice,sms") - Cost *PhoneNumberCost `protobuf:"bytes,3,opt,name=cost,proto3" json:"cost,omitempty"` // Cost structure for this phone number + Costs []*TelephonyCost `protobuf:"bytes,3,rep,name=costs,proto3" json:"costs,omitempty"` // Array of costs for different services unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -705,9 +745,9 @@ func (x *PhoneNumberInventoryItem) GetCapabilities() []string { return nil } -func (x *PhoneNumberInventoryItem) GetCost() *PhoneNumberCost { +func (x *PhoneNumberInventoryItem) GetCosts() []*TelephonyCost { if x != nil { - return x.Cost + return x.Costs } return nil } @@ -826,26 +866,30 @@ const file_livekit_phone_number_proto_rawDesc = "" + "created_at\x18\t \x01(\x03R\tcreatedAt\x12\x1d\n" + "\n" + "updated_at\x18\n" + - " \x01(\x03R\tupdatedAt\"\xe6\x01\n" + - "\x0fPhoneNumberCost\x12\x1a\n" + - "\bcurrency\x18\x01 \x01(\tR\bcurrency\x12%\n" + - "\x0emonthly_rental\x18\x02 \x01(\x01R\rmonthlyRental\x12\x1d\n" + - "\n" + - "voice_cost\x18\x03 \x01(\x01R\tvoiceCost\x12,\n" + - "\x12voice_billing_unit\x18\x04 \x01(\tR\x10voiceBillingUnit\x12\x19\n" + - "\bsms_cost\x18\x05 \x01(\x01R\asmsCost\x12(\n" + - "\x10sms_billing_unit\x18\x06 \x01(\tR\x0esmsBillingUnit\"\xab\x01\n" + + " \x01(\x03R\tupdatedAt\"\x9c\x01\n" + + "\rTelephonyCost\x126\n" + + "\bresource\x18\x01 \x01(\x0e2\x1a.livekit.TelephonyCostTypeR\bresource\x12\x1a\n" + + "\bcurrency\x18\x02 \x01(\tR\bcurrency\x12\x14\n" + + "\x05price\x18\x03 \x01(\x01R\x05price\x12!\n" + + "\fbilling_unit\x18\x04 \x01(\tR\vbillingUnit\"\xab\x01\n" + "\x18PhoneNumberInventoryItem\x12=\n" + "\fphone_number\x18\x01 \x01(\v2\x1a.livekit.GlobalPhoneNumberR\vphoneNumber\x12\"\n" + "\fcapabilities\x18\x02 \x03(\tR\fcapabilities\x12,\n" + - "\x04cost\x18\x03 \x01(\v2\x18.livekit.PhoneNumberCostR\x04cost\"\xcb\x01\n" + + "\x05costs\x18\x03 \x03(\v2\x16.livekit.TelephonyCostR\x05costs\"\xcb\x01\n" + "\x14PurchasedPhoneNumber\x12=\n" + "\fphone_number\x18\x01 \x01(\v2\x1a.livekit.GlobalPhoneNumberR\vphoneNumber\x122\n" + "\x06status\x18\x02 \x01(\x0e2\x1a.livekit.PhoneNumberStatusR\x06status\x12\x1f\n" + "\vassigned_at\x18\x03 \x01(\x03R\n" + "assignedAt\x12\x1f\n" + "\vreleased_at\x18\x04 \x01(\x03R\n" + - "releasedAt*\x9b\x01\n" + + "releasedAt*\xf9\x01\n" + + "\x11TelephonyCostType\x12#\n" + + "\x1fTELEPHONY_COST_TYPE_UNSPECIFIED\x10\x00\x12%\n" + + "!TELEPHONY_COST_TYPE_NUMBER_RENTAL\x10\x01\x12%\n" + + "!TELEPHONY_COST_TYPE_VOICE_INBOUND\x10\x02\x12&\n" + + "\"TELEPHONY_COST_TYPE_VOICE_OUTBOUND\x10\x03\x12#\n" + + "\x1fTELEPHONY_COST_TYPE_SMS_INBOUND\x10\x04\x12$\n" + + " TELEPHONY_COST_TYPE_SMS_OUTBOUND\x10\x05*\x9b\x01\n" + "\x11PhoneNumberStatus\x12#\n" + "\x1fPHONE_NUMBER_STATUS_UNSPECIFIED\x10\x00\x12\x1e\n" + "\x1aPHONE_NUMBER_STATUS_ACTIVE\x10\x01\x12\x1f\n" + @@ -869,44 +913,46 @@ func file_livekit_phone_number_proto_rawDescGZIP() []byte { return file_livekit_phone_number_proto_rawDescData } -var file_livekit_phone_number_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_livekit_phone_number_proto_enumTypes = make([]protoimpl.EnumInfo, 2) var file_livekit_phone_number_proto_msgTypes = make([]protoimpl.MessageInfo, 11) var file_livekit_phone_number_proto_goTypes = []any{ - (PhoneNumberStatus)(0), // 0: livekit.PhoneNumberStatus - (*ListPhoneNumberInventoryRequest)(nil), // 1: livekit.ListPhoneNumberInventoryRequest - (*ListPhoneNumberInventoryResponse)(nil), // 2: livekit.ListPhoneNumberInventoryResponse - (*PurchasePhoneNumberRequest)(nil), // 3: livekit.PurchasePhoneNumberRequest - (*PurchasePhoneNumberResponse)(nil), // 4: livekit.PurchasePhoneNumberResponse - (*ListPurchasedPhoneNumbersRequest)(nil), // 5: livekit.ListPurchasedPhoneNumbersRequest - (*ListPurchasedPhoneNumbersResponse)(nil), // 6: livekit.ListPurchasedPhoneNumbersResponse - (*ReleasePhoneNumberRequest)(nil), // 7: livekit.ReleasePhoneNumberRequest - (*GlobalPhoneNumber)(nil), // 8: livekit.GlobalPhoneNumber - (*PhoneNumberCost)(nil), // 9: livekit.PhoneNumberCost - (*PhoneNumberInventoryItem)(nil), // 10: livekit.PhoneNumberInventoryItem - (*PurchasedPhoneNumber)(nil), // 11: livekit.PurchasedPhoneNumber - (*emptypb.Empty)(nil), // 12: google.protobuf.Empty + (TelephonyCostType)(0), // 0: livekit.TelephonyCostType + (PhoneNumberStatus)(0), // 1: livekit.PhoneNumberStatus + (*ListPhoneNumberInventoryRequest)(nil), // 2: livekit.ListPhoneNumberInventoryRequest + (*ListPhoneNumberInventoryResponse)(nil), // 3: livekit.ListPhoneNumberInventoryResponse + (*PurchasePhoneNumberRequest)(nil), // 4: livekit.PurchasePhoneNumberRequest + (*PurchasePhoneNumberResponse)(nil), // 5: livekit.PurchasePhoneNumberResponse + (*ListPurchasedPhoneNumbersRequest)(nil), // 6: livekit.ListPurchasedPhoneNumbersRequest + (*ListPurchasedPhoneNumbersResponse)(nil), // 7: livekit.ListPurchasedPhoneNumbersResponse + (*ReleasePhoneNumberRequest)(nil), // 8: livekit.ReleasePhoneNumberRequest + (*GlobalPhoneNumber)(nil), // 9: livekit.GlobalPhoneNumber + (*TelephonyCost)(nil), // 10: livekit.TelephonyCost + (*PhoneNumberInventoryItem)(nil), // 11: livekit.PhoneNumberInventoryItem + (*PurchasedPhoneNumber)(nil), // 12: livekit.PurchasedPhoneNumber + (*emptypb.Empty)(nil), // 13: google.protobuf.Empty } var file_livekit_phone_number_proto_depIdxs = []int32{ - 10, // 0: livekit.ListPhoneNumberInventoryResponse.items:type_name -> livekit.PhoneNumberInventoryItem - 11, // 1: livekit.PurchasePhoneNumberResponse.phone_numbers:type_name -> livekit.PurchasedPhoneNumber - 11, // 2: livekit.ListPurchasedPhoneNumbersResponse.items:type_name -> livekit.PurchasedPhoneNumber - 8, // 3: livekit.PhoneNumberInventoryItem.phone_number:type_name -> livekit.GlobalPhoneNumber - 9, // 4: livekit.PhoneNumberInventoryItem.cost:type_name -> livekit.PhoneNumberCost - 8, // 5: livekit.PurchasedPhoneNumber.phone_number:type_name -> livekit.GlobalPhoneNumber - 0, // 6: livekit.PurchasedPhoneNumber.status:type_name -> livekit.PhoneNumberStatus - 1, // 7: livekit.PhoneNumberService.ListPhoneNumberInventory:input_type -> livekit.ListPhoneNumberInventoryRequest - 3, // 8: livekit.PhoneNumberService.PurchasePhoneNumber:input_type -> livekit.PurchasePhoneNumberRequest - 5, // 9: livekit.PhoneNumberService.ListPurchasedPhoneNumbers:input_type -> livekit.ListPurchasedPhoneNumbersRequest - 7, // 10: livekit.PhoneNumberService.ReleasePhoneNumber:input_type -> livekit.ReleasePhoneNumberRequest - 2, // 11: livekit.PhoneNumberService.ListPhoneNumberInventory:output_type -> livekit.ListPhoneNumberInventoryResponse - 4, // 12: livekit.PhoneNumberService.PurchasePhoneNumber:output_type -> livekit.PurchasePhoneNumberResponse - 6, // 13: livekit.PhoneNumberService.ListPurchasedPhoneNumbers:output_type -> livekit.ListPurchasedPhoneNumbersResponse - 12, // 14: livekit.PhoneNumberService.ReleasePhoneNumber:output_type -> google.protobuf.Empty - 11, // [11:15] is the sub-list for method output_type - 7, // [7:11] is the sub-list for method input_type - 7, // [7:7] is the sub-list for extension type_name - 7, // [7:7] is the sub-list for extension extendee - 0, // [0:7] is the sub-list for field type_name + 11, // 0: livekit.ListPhoneNumberInventoryResponse.items:type_name -> livekit.PhoneNumberInventoryItem + 12, // 1: livekit.PurchasePhoneNumberResponse.phone_numbers:type_name -> livekit.PurchasedPhoneNumber + 12, // 2: livekit.ListPurchasedPhoneNumbersResponse.items:type_name -> livekit.PurchasedPhoneNumber + 0, // 3: livekit.TelephonyCost.resource:type_name -> livekit.TelephonyCostType + 9, // 4: livekit.PhoneNumberInventoryItem.phone_number:type_name -> livekit.GlobalPhoneNumber + 10, // 5: livekit.PhoneNumberInventoryItem.costs:type_name -> livekit.TelephonyCost + 9, // 6: livekit.PurchasedPhoneNumber.phone_number:type_name -> livekit.GlobalPhoneNumber + 1, // 7: livekit.PurchasedPhoneNumber.status:type_name -> livekit.PhoneNumberStatus + 2, // 8: livekit.PhoneNumberService.ListPhoneNumberInventory:input_type -> livekit.ListPhoneNumberInventoryRequest + 4, // 9: livekit.PhoneNumberService.PurchasePhoneNumber:input_type -> livekit.PurchasePhoneNumberRequest + 6, // 10: livekit.PhoneNumberService.ListPurchasedPhoneNumbers:input_type -> livekit.ListPurchasedPhoneNumbersRequest + 8, // 11: livekit.PhoneNumberService.ReleasePhoneNumber:input_type -> livekit.ReleasePhoneNumberRequest + 3, // 12: livekit.PhoneNumberService.ListPhoneNumberInventory:output_type -> livekit.ListPhoneNumberInventoryResponse + 5, // 13: livekit.PhoneNumberService.PurchasePhoneNumber:output_type -> livekit.PurchasePhoneNumberResponse + 7, // 14: livekit.PhoneNumberService.ListPurchasedPhoneNumbers:output_type -> livekit.ListPurchasedPhoneNumbersResponse + 13, // 15: livekit.PhoneNumberService.ReleasePhoneNumber:output_type -> google.protobuf.Empty + 12, // [12:16] is the sub-list for method output_type + 8, // [8:12] is the sub-list for method input_type + 8, // [8:8] is the sub-list for extension type_name + 8, // [8:8] is the sub-list for extension extendee + 0, // [0:8] is the sub-list for field type_name } func init() { file_livekit_phone_number_proto_init() } @@ -919,7 +965,7 @@ func file_livekit_phone_number_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_livekit_phone_number_proto_rawDesc), len(file_livekit_phone_number_proto_rawDesc)), - NumEnums: 1, + NumEnums: 2, NumMessages: 11, NumExtensions: 0, NumServices: 1, diff --git a/livekit/livekit_phone_number.twirp.go b/livekit/livekit_phone_number.twirp.go index 9756689d9..63087b809 100644 --- a/livekit/livekit_phone_number.twirp.go +++ b/livekit/livekit_phone_number.twirp.go @@ -1361,65 +1361,68 @@ func (s *phoneNumberServiceServer) PathPrefix() string { } var twirpFileDescriptor6 = []byte{ - // 952 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0xcf, 0x6e, 0xdb, 0xc6, - 0x13, 0x36, 0x25, 0xcb, 0xb6, 0x46, 0xb6, 0xa3, 0xec, 0x2f, 0x08, 0x68, 0xfa, 0x97, 0x4a, 0xa6, - 0x9b, 0x42, 0x0d, 0x02, 0x19, 0x55, 0x8a, 0xf6, 0xd4, 0x02, 0xb2, 0xcc, 0xa4, 0x02, 0x52, 0x55, - 0xa0, 0xe4, 0x16, 0xe8, 0x85, 0xa0, 0xa8, 0x8d, 0xbc, 0x08, 0xc9, 0x65, 0xb8, 0x4b, 0xa3, 0x3a, - 0xf7, 0x1d, 0x7a, 0xe9, 0xa9, 0xe7, 0x9e, 0xdb, 0x97, 0xe8, 0x7b, 0xf4, 0x39, 0x8a, 0xfd, 0x23, - 0x86, 0xb6, 0x28, 0x3b, 0x45, 0x8f, 0xfb, 0xcd, 0x37, 0xb3, 0xdf, 0xce, 0xcc, 0xce, 0x2e, 0x58, - 0x21, 0xb9, 0xc6, 0x6f, 0x09, 0xf7, 0x92, 0x2b, 0x1a, 0x63, 0x2f, 0xce, 0xa2, 0x19, 0x4e, 0xbb, - 0x49, 0x4a, 0x39, 0x45, 0xbb, 0xda, 0x66, 0x1d, 0x2f, 0x28, 0x5d, 0x84, 0xf8, 0x4c, 0xc2, 0xb3, - 0xec, 0xcd, 0x19, 0x8e, 0x12, 0xbe, 0x54, 0x2c, 0xfb, 0x17, 0x03, 0x5a, 0xaf, 0x09, 0xe3, 0x63, - 0x11, 0x60, 0x24, 0xfd, 0x87, 0xf1, 0x35, 0x8e, 0x39, 0x4d, 0x97, 0x2e, 0x7e, 0x97, 0x61, 0xc6, - 0xd1, 0x09, 0xec, 0x07, 0x34, 0x8b, 0x79, 0xba, 0xf4, 0x02, 0x3a, 0xc7, 0xa6, 0xd1, 0x36, 0x3a, - 0x75, 0xb7, 0xa1, 0xb1, 0x01, 0x9d, 0x63, 0x74, 0x0c, 0x75, 0x3f, 0xc5, 0xbe, 0xb2, 0x57, 0xa4, - 0x7d, 0x4f, 0x00, 0xd2, 0xf8, 0x08, 0x6a, 0x21, 0x89, 0x08, 0x37, 0xab, 0x6d, 0xa3, 0x53, 0x73, - 0xd5, 0x02, 0x3d, 0x01, 0x48, 0xfc, 0x05, 0xf6, 0x38, 0x7d, 0x8b, 0x63, 0x73, 0x5b, 0xfa, 0xd4, - 0x05, 0x32, 0x15, 0x80, 0xfd, 0xb3, 0x01, 0xed, 0xcd, 0xc2, 0x58, 0x42, 0x63, 0x86, 0xd1, 0x97, - 0x50, 0x23, 0x1c, 0x47, 0xcc, 0x34, 0xda, 0xd5, 0x4e, 0xa3, 0x77, 0xd2, 0xd5, 0x67, 0xee, 0x96, - 0x79, 0x0d, 0x39, 0x8e, 0x5c, 0xc5, 0x47, 0x9f, 0xc0, 0x83, 0x18, 0xff, 0xc4, 0xbd, 0x82, 0x02, - 0xa5, 0xfa, 0x40, 0xc0, 0xe3, 0x5c, 0x45, 0x1f, 0xac, 0x71, 0x96, 0x06, 0x57, 0x3e, 0xc3, 0x85, - 0x90, 0xab, 0xc4, 0x9c, 0xc2, 0x41, 0x31, 0xf1, 0x4a, 0x46, 0xdd, 0xdd, 0x4f, 0xde, 0x53, 0x99, - 0xed, 0xc3, 0x71, 0x69, 0x08, 0x7d, 0x84, 0xf3, 0xb2, 0x18, 0x8d, 0xde, 0x93, 0xf7, 0x47, 0xd1, - 0xce, 0xf3, 0xa2, 0xf7, 0xcd, 0x2d, 0x7e, 0xd0, 0xa9, 0x2a, 0x61, 0xb2, 0x95, 0xd6, 0xbc, 0x08, - 0xc6, 0xe6, 0x22, 0x54, 0x6e, 0x17, 0xe1, 0x37, 0x03, 0x4e, 0xee, 0x88, 0xac, 0x8f, 0xf0, 0xe2, - 0x66, 0x15, 0xee, 0x91, 0xfe, 0xef, 0x2a, 0x80, 0x5a, 0xd0, 0xe0, 0x94, 0xfb, 0xa1, 0x27, 0xdb, - 0x4d, 0xb7, 0x10, 0x48, 0x68, 0x20, 0x10, 0xfb, 0x6b, 0x38, 0x72, 0x71, 0x88, 0xcb, 0x2b, 0x74, - 0x02, 0xfb, 0xc5, 0xec, 0xae, 0x5a, 0xb7, 0x90, 0x3d, 0xfb, 0xcf, 0x0a, 0x3c, 0x7c, 0x15, 0xd2, - 0x99, 0x1f, 0x16, 0xfc, 0xd1, 0x21, 0x54, 0xc8, 0x5c, 0xd3, 0x2b, 0x64, 0x2e, 0x64, 0xe0, 0xcf, - 0xbe, 0xf8, 0xdc, 0x7b, 0x43, 0xd3, 0xc8, 0xe7, 0x5a, 0x2a, 0x08, 0xe8, 0xa5, 0x44, 0xd6, 0x2e, - 0x49, 0xf5, 0x9e, 0x4b, 0xb2, 0x7d, 0xeb, 0x92, 0xb4, 0xa0, 0xa1, 0x34, 0x7a, 0x7c, 0x99, 0x60, - 0xb3, 0xa6, 0x36, 0x50, 0xd0, 0x74, 0x99, 0x60, 0x64, 0xc1, 0x5e, 0x48, 0x03, 0x3f, 0x24, 0x7c, - 0x69, 0xee, 0x28, 0xe7, 0xd5, 0x1a, 0x3d, 0x86, 0x9d, 0x14, 0x2f, 0x08, 0x8d, 0xcd, 0x5d, 0x69, - 0xd1, 0x2b, 0x51, 0x5e, 0x96, 0xf8, 0x91, 0xc7, 0x02, 0x9a, 0x62, 0x73, 0xaf, 0x6d, 0x74, 0xaa, - 0x6e, 0x5d, 0x20, 0x13, 0x01, 0x08, 0x73, 0x90, 0x62, 0x9f, 0xe3, 0xb9, 0xe7, 0x73, 0xb3, 0xae, - 0xcc, 0x1a, 0xe9, 0xcb, 0xe6, 0xc8, 0x92, 0xf9, 0xca, 0x0c, 0xca, 0xac, 0x91, 0x3e, 0xb7, 0xff, - 0x36, 0xe0, 0x41, 0x21, 0x65, 0x03, 0xca, 0xb8, 0x10, 0x19, 0x64, 0x69, 0x8a, 0xe3, 0x60, 0xa9, - 0x93, 0x97, 0xaf, 0xd1, 0x53, 0x38, 0x8c, 0x68, 0xcc, 0xaf, 0xc2, 0xa5, 0x97, 0xe2, 0x98, 0xfb, - 0xa1, 0xcc, 0xa2, 0xe1, 0x1e, 0x68, 0xd4, 0x95, 0xa0, 0xd8, 0xf5, 0x9a, 0x92, 0x00, 0x7b, 0x01, - 0x65, 0xaa, 0xde, 0x86, 0x5b, 0x97, 0x88, 0xdc, 0xe1, 0x39, 0x20, 0x65, 0x9e, 0x91, 0x30, 0x24, - 0xf1, 0xc2, 0xcb, 0x62, 0xc2, 0x75, 0x36, 0x9b, 0xd2, 0x72, 0xae, 0x0c, 0x97, 0x31, 0xe1, 0xe8, - 0x08, 0xf6, 0x58, 0xc4, 0x54, 0xa8, 0x9a, 0x0c, 0xb5, 0xcb, 0x22, 0x26, 0x03, 0x75, 0xa0, 0x29, - 0x4c, 0x37, 0xc2, 0xa8, 0xbc, 0x1e, 0xb2, 0x88, 0x15, 0x82, 0xd8, 0xbf, 0x1b, 0x60, 0x6e, 0x1a, - 0x28, 0xe8, 0xab, 0x92, 0x0e, 0x6b, 0xf4, 0xac, 0xfc, 0x0e, 0xac, 0xb5, 0xd6, 0x8d, 0xee, 0x43, - 0x36, 0xec, 0x07, 0x7e, 0xe2, 0xcf, 0x48, 0x48, 0x38, 0xc1, 0xcc, 0xac, 0xa8, 0x09, 0x52, 0xc4, - 0xd0, 0x73, 0xd8, 0xce, 0x73, 0xd1, 0xe8, 0x99, 0x65, 0x43, 0x4e, 0x9c, 0xc8, 0x95, 0x2c, 0xfb, - 0x2f, 0x03, 0x1e, 0x95, 0x5d, 0xbc, 0xff, 0xaa, 0xb4, 0x07, 0x3b, 0x8c, 0xfb, 0x3c, 0x63, 0xb2, - 0x6c, 0x87, 0x05, 0xc7, 0x82, 0xcb, 0x44, 0x32, 0x5c, 0xcd, 0x14, 0x4d, 0xed, 0x33, 0x46, 0x16, - 0xb1, 0x6a, 0xa1, 0xaa, 0x6c, 0x21, 0x58, 0x41, 0x7d, 0x2e, 0x08, 0xa9, 0xba, 0xbc, 0x92, 0xb0, - 0xad, 0x08, 0x2b, 0xa8, 0xcf, 0x9f, 0xfd, 0x6a, 0xc0, 0xc3, 0xb5, 0xf8, 0xe8, 0x14, 0x5a, 0xe3, - 0x6f, 0xbe, 0x1b, 0x39, 0xde, 0xe8, 0xf2, 0xdb, 0x73, 0xc7, 0xf5, 0x26, 0xd3, 0xfe, 0xf4, 0x72, - 0xe2, 0x5d, 0x8e, 0x26, 0x63, 0x67, 0x30, 0x7c, 0x39, 0x74, 0x2e, 0x9a, 0x5b, 0xe8, 0x23, 0xb0, - 0xca, 0x48, 0xfd, 0xc1, 0x74, 0xf8, 0xbd, 0xd3, 0x34, 0x50, 0x0b, 0x8e, 0xcb, 0xec, 0x63, 0x67, - 0x74, 0x31, 0x1c, 0xbd, 0x6a, 0x56, 0x50, 0x1b, 0xfe, 0x5f, 0x46, 0x70, 0x9d, 0xd7, 0x4e, 0x7f, - 0xe2, 0x5c, 0x34, 0xab, 0xbd, 0x3f, 0xaa, 0x80, 0x8a, 0xea, 0x70, 0x7a, 0x4d, 0x02, 0x8c, 0xde, - 0x81, 0xb9, 0xe9, 0xe9, 0x42, 0x9d, 0x3c, 0x6d, 0xf7, 0x3c, 0xbb, 0xd6, 0xa7, 0x1f, 0xc0, 0x54, - 0x13, 0xd8, 0xde, 0x42, 0x33, 0xf8, 0x5f, 0xc9, 0x2b, 0x83, 0x4e, 0xd7, 0x66, 0xf1, 0xfa, 0x90, - 0xb4, 0x3e, 0xbe, 0x9b, 0x94, 0xef, 0xc1, 0xe1, 0x68, 0xe3, 0x63, 0x80, 0x6e, 0xa9, 0xbd, 0xe3, - 0x29, 0xb2, 0x9e, 0x7d, 0x08, 0x35, 0xdf, 0xd5, 0x05, 0xb4, 0x3e, 0xdf, 0x91, 0x9d, 0xc7, 0xd8, - 0x38, 0xfc, 0xad, 0xc7, 0x5d, 0xf5, 0xf3, 0xe9, 0xae, 0x7e, 0x3e, 0x5d, 0x47, 0xfc, 0x7c, 0xec, - 0xad, 0xf3, 0xa7, 0x3f, 0x9e, 0x2e, 0x08, 0xbf, 0xca, 0x66, 0xdd, 0x80, 0x46, 0x67, 0x3a, 0x92, - 0xfa, 0x20, 0x05, 0x34, 0x5c, 0x01, 0xb3, 0x1d, 0x89, 0xbc, 0xf8, 0x27, 0x00, 0x00, 0xff, 0xff, - 0x6d, 0x6d, 0xb8, 0x81, 0x67, 0x09, 0x00, 0x00, + // 994 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0x4f, 0x6f, 0xdb, 0x36, + 0x14, 0x8f, 0xec, 0x38, 0x8d, 0x9f, 0x93, 0xce, 0xe1, 0x8a, 0x40, 0x55, 0xd6, 0xc5, 0x51, 0xda, + 0xc2, 0x0b, 0x06, 0x07, 0x73, 0x87, 0xee, 0xb4, 0x01, 0x8e, 0xa3, 0x76, 0x06, 0x52, 0xdb, 0x90, + 0xe5, 0x0e, 0xdd, 0x45, 0x90, 0x65, 0xd6, 0x21, 0x2a, 0x8b, 0xaa, 0x48, 0x05, 0xf3, 0x79, 0xdf, + 0x61, 0x97, 0xed, 0xb2, 0xf3, 0xce, 0xdb, 0x97, 0xd8, 0x27, 0xda, 0x6d, 0xa0, 0x28, 0xa9, 0x4a, + 0x2c, 0x25, 0x1d, 0x76, 0xe4, 0xef, 0xfd, 0xde, 0xe3, 0xfb, 0xcb, 0x47, 0xd0, 0x3c, 0x72, 0x85, + 0xdf, 0x11, 0x6e, 0x07, 0x97, 0xd4, 0xc7, 0xb6, 0x1f, 0x2d, 0x67, 0x38, 0xec, 0x04, 0x21, 0xe5, + 0x14, 0xdd, 0x4b, 0x64, 0xda, 0xc1, 0x82, 0xd2, 0x85, 0x87, 0x4f, 0x63, 0x78, 0x16, 0xbd, 0x3d, + 0xc5, 0xcb, 0x80, 0xaf, 0x24, 0x4b, 0xff, 0x45, 0x81, 0xc3, 0x0b, 0xc2, 0xf8, 0x58, 0x18, 0x18, + 0xc6, 0xfa, 0x03, 0xff, 0x0a, 0xfb, 0x9c, 0x86, 0x2b, 0x13, 0xbf, 0x8f, 0x30, 0xe3, 0xe8, 0x08, + 0x76, 0x5c, 0x1a, 0xf9, 0x3c, 0x5c, 0xd9, 0x2e, 0x9d, 0x63, 0x55, 0x69, 0x29, 0xed, 0xba, 0xd9, + 0x48, 0xb0, 0x3e, 0x9d, 0x63, 0x74, 0x00, 0x75, 0x27, 0xc4, 0x8e, 0x94, 0x57, 0x62, 0xf9, 0xb6, + 0x00, 0x62, 0xe1, 0x03, 0xa8, 0x79, 0x64, 0x49, 0xb8, 0x5a, 0x6d, 0x29, 0xed, 0x9a, 0x29, 0x0f, + 0xe8, 0x11, 0x40, 0xe0, 0x2c, 0xb0, 0xcd, 0xe9, 0x3b, 0xec, 0xab, 0x9b, 0xb1, 0x4e, 0x5d, 0x20, + 0x96, 0x00, 0xf4, 0x9f, 0x15, 0x68, 0x95, 0x3b, 0xc6, 0x02, 0xea, 0x33, 0x8c, 0xbe, 0x81, 0x1a, + 0xe1, 0x78, 0xc9, 0x54, 0xa5, 0x55, 0x6d, 0x37, 0xba, 0x47, 0x9d, 0x24, 0xe6, 0x4e, 0x91, 0xd6, + 0x80, 0xe3, 0xa5, 0x29, 0xf9, 0xe8, 0x29, 0x7c, 0xe2, 0xe3, 0x9f, 0xb8, 0x9d, 0xf3, 0x40, 0x7a, + 0xbd, 0x2b, 0xe0, 0x71, 0xe6, 0x45, 0x0f, 0xb4, 0x71, 0x14, 0xba, 0x97, 0x0e, 0xc3, 0x39, 0x93, + 0x69, 0x62, 0x8e, 0x61, 0x37, 0x9f, 0x78, 0xe9, 0x46, 0xdd, 0xdc, 0x09, 0x3e, 0x50, 0x99, 0xee, + 0xc0, 0x41, 0xa1, 0x89, 0x24, 0x84, 0xb3, 0x22, 0x1b, 0x8d, 0xee, 0xa3, 0x0f, 0xa1, 0x24, 0xca, + 0xf3, 0xbc, 0xf6, 0xf5, 0x2b, 0x7e, 0x48, 0x52, 0x55, 0xc0, 0x64, 0xa9, 0xaf, 0x59, 0x11, 0x94, + 0xf2, 0x22, 0x54, 0x6e, 0x16, 0xe1, 0x77, 0x05, 0x8e, 0x6e, 0xb1, 0x9c, 0x84, 0xf0, 0xec, 0x7a, + 0x15, 0xee, 0x70, 0xfd, 0xbf, 0x55, 0x00, 0x1d, 0x42, 0x83, 0x53, 0xee, 0x78, 0x76, 0xdc, 0x6e, + 0x49, 0x0b, 0x41, 0x0c, 0xf5, 0x05, 0xa2, 0x7f, 0x07, 0x0f, 0x4d, 0xec, 0xe1, 0xe2, 0x0a, 0x1d, + 0xc1, 0x4e, 0x3e, 0xbb, 0x69, 0xeb, 0xe6, 0xb2, 0xa7, 0xff, 0x55, 0x81, 0xbd, 0x97, 0x1e, 0x9d, + 0x39, 0x5e, 0x4e, 0x1f, 0xdd, 0x87, 0x0a, 0x99, 0x27, 0xf4, 0x0a, 0x99, 0x0b, 0x37, 0xf0, 0x57, + 0xcf, 0xbf, 0xb6, 0xdf, 0xd2, 0x70, 0xe9, 0xf0, 0xc4, 0x55, 0x10, 0xd0, 0x8b, 0x18, 0x59, 0x1b, + 0x92, 0xea, 0x1d, 0x43, 0xb2, 0x79, 0x63, 0x48, 0x0e, 0xa1, 0x21, 0x7d, 0xb4, 0xf9, 0x2a, 0xc0, + 0x6a, 0x4d, 0x5e, 0x20, 0x21, 0x6b, 0x15, 0x60, 0xa4, 0xc1, 0xb6, 0x47, 0x5d, 0xc7, 0x23, 0x7c, + 0xa5, 0x6e, 0x49, 0xe5, 0xf4, 0x8c, 0xf6, 0x61, 0x2b, 0xc4, 0x0b, 0x42, 0x7d, 0xf5, 0x5e, 0x2c, + 0x49, 0x4e, 0xa2, 0xbc, 0x2c, 0x70, 0x96, 0x36, 0x73, 0x69, 0x88, 0xd5, 0xed, 0x96, 0xd2, 0xae, + 0x9a, 0x75, 0x81, 0x4c, 0x04, 0x20, 0xc4, 0x6e, 0x88, 0x1d, 0x8e, 0xe7, 0xb6, 0xc3, 0xd5, 0xba, + 0x14, 0x27, 0x48, 0x2f, 0x6e, 0x8e, 0x28, 0x98, 0xa7, 0x62, 0x90, 0xe2, 0x04, 0xe9, 0x71, 0xfd, + 0x37, 0x05, 0x76, 0x2d, 0xec, 0x61, 0x91, 0xcc, 0x55, 0x9f, 0x32, 0x8e, 0x9e, 0xc3, 0x76, 0x88, + 0x19, 0x8d, 0x42, 0x57, 0x3e, 0x12, 0xf7, 0xbb, 0x5a, 0xd6, 0x0b, 0xd7, 0x98, 0x22, 0x20, 0x33, + 0xe3, 0x8a, 0xd0, 0xdc, 0x28, 0x0c, 0xb1, 0xef, 0xae, 0xd2, 0xc7, 0x23, 0x3d, 0x8b, 0xbe, 0x0d, + 0x42, 0xe2, 0xca, 0x84, 0x2a, 0xa6, 0x3c, 0x88, 0x6c, 0xcf, 0x88, 0xe7, 0x11, 0x7f, 0x61, 0x47, + 0x3e, 0xe1, 0x49, 0x36, 0x1b, 0x09, 0x36, 0xf5, 0x09, 0xd7, 0xff, 0x50, 0x40, 0x2d, 0x7b, 0x06, + 0xd0, 0xb7, 0x05, 0x7d, 0xd1, 0xc8, 0x79, 0xbb, 0xd6, 0x10, 0xd7, 0x7a, 0x06, 0xe9, 0xb0, 0xe3, + 0x3a, 0x81, 0x33, 0x23, 0x1e, 0xe1, 0x04, 0x33, 0xb5, 0x22, 0xe7, 0x3e, 0x8f, 0xa1, 0x2f, 0xa1, + 0xe6, 0x52, 0xc6, 0x99, 0x5a, 0x8d, 0xa7, 0x62, 0xbf, 0x38, 0x13, 0xa6, 0x24, 0xe9, 0x7f, 0x2b, + 0xf0, 0xa0, 0x68, 0x5c, 0xfe, 0xaf, 0xa7, 0x5d, 0xd8, 0x62, 0xdc, 0xe1, 0x11, 0x8b, 0x13, 0x9b, + 0x2f, 0x48, 0x4e, 0x65, 0x12, 0x33, 0xcc, 0x84, 0x29, 0x5a, 0xd1, 0x61, 0x8c, 0x2c, 0x7c, 0x59, + 0xf8, 0x6a, 0x5c, 0x78, 0x48, 0xa1, 0x1e, 0x17, 0x84, 0x50, 0x8e, 0x5c, 0x4c, 0xd8, 0x94, 0x84, + 0x14, 0xea, 0xf1, 0x93, 0x7f, 0x14, 0xd8, 0x5b, 0x2b, 0x38, 0x3a, 0x86, 0x43, 0xcb, 0xb8, 0x30, + 0xc6, 0xdf, 0x8f, 0x86, 0x6f, 0xec, 0xfe, 0x68, 0x62, 0xd9, 0xd6, 0x9b, 0xb1, 0x61, 0x4f, 0x87, + 0x93, 0xb1, 0xd1, 0x1f, 0xbc, 0x18, 0x18, 0xe7, 0xcd, 0x0d, 0xf4, 0x04, 0x8e, 0x8a, 0x48, 0xc3, + 0xe9, 0xab, 0x33, 0xc3, 0xb4, 0x4d, 0x63, 0x68, 0xf5, 0x2e, 0x9a, 0x4a, 0x19, 0xed, 0xf5, 0x68, + 0xd0, 0x37, 0xec, 0xc1, 0xf0, 0x6c, 0x34, 0x1d, 0x9e, 0x37, 0x2b, 0xe8, 0x29, 0xe8, 0xe5, 0xb4, + 0xd1, 0xd4, 0x92, 0xbc, 0x6a, 0x99, 0x6b, 0x93, 0x57, 0x93, 0xcc, 0xd8, 0x26, 0x7a, 0x0c, 0xad, + 0x32, 0x52, 0x66, 0xaa, 0x76, 0xf2, 0xab, 0x02, 0x7b, 0x6b, 0xb9, 0x15, 0x17, 0x08, 0xbd, 0x2c, + 0x90, 0x89, 0xd5, 0xb3, 0xa6, 0x93, 0x1b, 0xb1, 0x7f, 0x0e, 0x5a, 0x11, 0xa9, 0xd7, 0xb7, 0x06, + 0xaf, 0x8d, 0xa6, 0x82, 0x0e, 0xe1, 0xa0, 0x48, 0x3e, 0x36, 0x86, 0xe7, 0x83, 0xe1, 0xcb, 0x66, + 0x05, 0xb5, 0xe0, 0xb3, 0x22, 0x82, 0x69, 0x5c, 0x18, 0xbd, 0x89, 0x71, 0xde, 0xac, 0x76, 0xff, + 0xac, 0x02, 0xca, 0x7b, 0x87, 0xc3, 0x2b, 0x31, 0x4f, 0xef, 0x41, 0x2d, 0x5b, 0xb6, 0xa8, 0x9d, + 0xb5, 0xcc, 0x1d, 0x1f, 0x05, 0xed, 0x8b, 0x8f, 0x60, 0xca, 0x9d, 0xa1, 0x6f, 0xa0, 0x19, 0x7c, + 0x5a, 0xb0, 0x17, 0xd1, 0xf1, 0xda, 0xf6, 0x58, 0x7f, 0xd6, 0xb5, 0xc7, 0xb7, 0x93, 0xb2, 0x3b, + 0x38, 0x3c, 0x2c, 0x5d, 0x5f, 0xe8, 0x86, 0xb7, 0xb7, 0x2c, 0x4f, 0xed, 0xe4, 0x63, 0xa8, 0xd9, + 0xad, 0x26, 0xa0, 0xf5, 0x8d, 0x84, 0xf4, 0xcc, 0x46, 0xe9, 0xba, 0xd2, 0xf6, 0x3b, 0xf2, 0xaf, + 0xd6, 0x49, 0xff, 0x6a, 0x1d, 0x43, 0xfc, 0xd5, 0xf4, 0x8d, 0xb3, 0x27, 0x3f, 0x1e, 0x2f, 0x08, + 0xbf, 0x8c, 0x66, 0x1d, 0x97, 0x2e, 0x4f, 0x13, 0x4b, 0xf2, 0x4b, 0xe7, 0x52, 0x2f, 0x05, 0x66, + 0x5b, 0x31, 0xf2, 0xec, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x20, 0xae, 0x09, 0x76, 0x19, 0x0a, + 0x00, 0x00, } From 2d107866d27642b1c055933382ae5c39159b42ad Mon Sep 17 00:00:00 2001 From: Nishad Musthafa Date: Sun, 17 Aug 2025 21:10:24 -0700 Subject: [PATCH 13/20] Adding a reference to SipDispatchRule in the PurchasedPhoneNumber message --- protobufs/livekit_phone_number.proto | 2 ++ 1 file changed, 2 insertions(+) diff --git a/protobufs/livekit_phone_number.proto b/protobufs/livekit_phone_number.proto index 7cb07b1f5..3b2615cf0 100644 --- a/protobufs/livekit_phone_number.proto +++ b/protobufs/livekit_phone_number.proto @@ -5,6 +5,7 @@ package livekit; option go_package = "github.com/livekit/protocol/livekit"; import "google/protobuf/empty.proto"; +import "livekit_sip.proto"; // Telephony cost type enumeration enum TelephonyCostType { @@ -122,4 +123,5 @@ message PurchasedPhoneNumber { PhoneNumberStatus status = 2; // Current status of the phone number int64 assigned_at = 3; // Timestamp when the number was assigned int64 released_at = 4; // Timestamp when the number was released (if applicable) + SIPDispatchRuleInfo sip_dispatch_rule = 5; // Optional: Associated SIP dispatch rule } From e84828b894784ca88efcb3dabe02e6385a07769c Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 18 Aug 2025 04:11:30 +0000 Subject: [PATCH 14/20] generated protobuf --- livekit/livekit_phone_number.pb.go | 60 +++++++----- livekit/livekit_phone_number.twirp.go | 130 +++++++++++++------------- 2 files changed, 102 insertions(+), 88 deletions(-) diff --git a/livekit/livekit_phone_number.pb.go b/livekit/livekit_phone_number.pb.go index bb9f3e14f..ad2ce5743 100644 --- a/livekit/livekit_phone_number.pb.go +++ b/livekit/livekit_phone_number.pb.go @@ -754,13 +754,14 @@ func (x *PhoneNumberInventoryItem) GetCosts() []*TelephonyCost { // PurchasedPhoneNumber - Represents a phone number owned by a LiveKit project type PurchasedPhoneNumber struct { - state protoimpl.MessageState `protogen:"open.v1"` - PhoneNumber *GlobalPhoneNumber `protobuf:"bytes,1,opt,name=phone_number,json=phoneNumber,proto3" json:"phone_number,omitempty"` // Common phone number fields - Status PhoneNumberStatus `protobuf:"varint,2,opt,name=status,proto3,enum=livekit.PhoneNumberStatus" json:"status,omitempty"` // Current status of the phone number - AssignedAt int64 `protobuf:"varint,3,opt,name=assigned_at,json=assignedAt,proto3" json:"assigned_at,omitempty"` // Timestamp when the number was assigned - ReleasedAt int64 `protobuf:"varint,4,opt,name=released_at,json=releasedAt,proto3" json:"released_at,omitempty"` // Timestamp when the number was released (if applicable) - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + PhoneNumber *GlobalPhoneNumber `protobuf:"bytes,1,opt,name=phone_number,json=phoneNumber,proto3" json:"phone_number,omitempty"` // Common phone number fields + Status PhoneNumberStatus `protobuf:"varint,2,opt,name=status,proto3,enum=livekit.PhoneNumberStatus" json:"status,omitempty"` // Current status of the phone number + AssignedAt int64 `protobuf:"varint,3,opt,name=assigned_at,json=assignedAt,proto3" json:"assigned_at,omitempty"` // Timestamp when the number was assigned + ReleasedAt int64 `protobuf:"varint,4,opt,name=released_at,json=releasedAt,proto3" json:"released_at,omitempty"` // Timestamp when the number was released (if applicable) + SipDispatchRule *SIPDispatchRuleInfo `protobuf:"bytes,5,opt,name=sip_dispatch_rule,json=sipDispatchRule,proto3" json:"sip_dispatch_rule,omitempty"` // Optional: Associated SIP dispatch rule + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PurchasedPhoneNumber) Reset() { @@ -821,11 +822,18 @@ func (x *PurchasedPhoneNumber) GetReleasedAt() int64 { return 0 } +func (x *PurchasedPhoneNumber) GetSipDispatchRule() *SIPDispatchRuleInfo { + if x != nil { + return x.SipDispatchRule + } + return nil +} + var File_livekit_phone_number_proto protoreflect.FileDescriptor const file_livekit_phone_number_proto_rawDesc = "" + "\n" + - "\x1alivekit_phone_number.proto\x12\alivekit\x1a\x1bgoogle/protobuf/empty.proto\"\x96\x01\n" + + "\x1alivekit_phone_number.proto\x12\alivekit\x1a\x1bgoogle/protobuf/empty.proto\x1a\x11livekit_sip.proto\"\x96\x01\n" + "\x1fListPhoneNumberInventoryRequest\x12!\n" + "\fcountry_code\x18\x01 \x01(\tR\vcountryCode\x12\x1b\n" + "\tarea_code\x18\x02 \x01(\tR\bareaCode\x12\x14\n" + @@ -875,14 +883,15 @@ const file_livekit_phone_number_proto_rawDesc = "" + "\x18PhoneNumberInventoryItem\x12=\n" + "\fphone_number\x18\x01 \x01(\v2\x1a.livekit.GlobalPhoneNumberR\vphoneNumber\x12\"\n" + "\fcapabilities\x18\x02 \x03(\tR\fcapabilities\x12,\n" + - "\x05costs\x18\x03 \x03(\v2\x16.livekit.TelephonyCostR\x05costs\"\xcb\x01\n" + + "\x05costs\x18\x03 \x03(\v2\x16.livekit.TelephonyCostR\x05costs\"\x95\x02\n" + "\x14PurchasedPhoneNumber\x12=\n" + "\fphone_number\x18\x01 \x01(\v2\x1a.livekit.GlobalPhoneNumberR\vphoneNumber\x122\n" + "\x06status\x18\x02 \x01(\x0e2\x1a.livekit.PhoneNumberStatusR\x06status\x12\x1f\n" + "\vassigned_at\x18\x03 \x01(\x03R\n" + "assignedAt\x12\x1f\n" + "\vreleased_at\x18\x04 \x01(\x03R\n" + - "releasedAt*\xf9\x01\n" + + "releasedAt\x12H\n" + + "\x11sip_dispatch_rule\x18\x05 \x01(\v2\x1c.livekit.SIPDispatchRuleInfoR\x0fsipDispatchRule*\xf9\x01\n" + "\x11TelephonyCostType\x12#\n" + "\x1fTELEPHONY_COST_TYPE_UNSPECIFIED\x10\x00\x12%\n" + "!TELEPHONY_COST_TYPE_NUMBER_RENTAL\x10\x01\x12%\n" + @@ -929,7 +938,8 @@ var file_livekit_phone_number_proto_goTypes = []any{ (*TelephonyCost)(nil), // 10: livekit.TelephonyCost (*PhoneNumberInventoryItem)(nil), // 11: livekit.PhoneNumberInventoryItem (*PurchasedPhoneNumber)(nil), // 12: livekit.PurchasedPhoneNumber - (*emptypb.Empty)(nil), // 13: google.protobuf.Empty + (*SIPDispatchRuleInfo)(nil), // 13: livekit.SIPDispatchRuleInfo + (*emptypb.Empty)(nil), // 14: google.protobuf.Empty } var file_livekit_phone_number_proto_depIdxs = []int32{ 11, // 0: livekit.ListPhoneNumberInventoryResponse.items:type_name -> livekit.PhoneNumberInventoryItem @@ -940,19 +950,20 @@ var file_livekit_phone_number_proto_depIdxs = []int32{ 10, // 5: livekit.PhoneNumberInventoryItem.costs:type_name -> livekit.TelephonyCost 9, // 6: livekit.PurchasedPhoneNumber.phone_number:type_name -> livekit.GlobalPhoneNumber 1, // 7: livekit.PurchasedPhoneNumber.status:type_name -> livekit.PhoneNumberStatus - 2, // 8: livekit.PhoneNumberService.ListPhoneNumberInventory:input_type -> livekit.ListPhoneNumberInventoryRequest - 4, // 9: livekit.PhoneNumberService.PurchasePhoneNumber:input_type -> livekit.PurchasePhoneNumberRequest - 6, // 10: livekit.PhoneNumberService.ListPurchasedPhoneNumbers:input_type -> livekit.ListPurchasedPhoneNumbersRequest - 8, // 11: livekit.PhoneNumberService.ReleasePhoneNumber:input_type -> livekit.ReleasePhoneNumberRequest - 3, // 12: livekit.PhoneNumberService.ListPhoneNumberInventory:output_type -> livekit.ListPhoneNumberInventoryResponse - 5, // 13: livekit.PhoneNumberService.PurchasePhoneNumber:output_type -> livekit.PurchasePhoneNumberResponse - 7, // 14: livekit.PhoneNumberService.ListPurchasedPhoneNumbers:output_type -> livekit.ListPurchasedPhoneNumbersResponse - 13, // 15: livekit.PhoneNumberService.ReleasePhoneNumber:output_type -> google.protobuf.Empty - 12, // [12:16] is the sub-list for method output_type - 8, // [8:12] is the sub-list for method input_type - 8, // [8:8] is the sub-list for extension type_name - 8, // [8:8] is the sub-list for extension extendee - 0, // [0:8] is the sub-list for field type_name + 13, // 8: livekit.PurchasedPhoneNumber.sip_dispatch_rule:type_name -> livekit.SIPDispatchRuleInfo + 2, // 9: livekit.PhoneNumberService.ListPhoneNumberInventory:input_type -> livekit.ListPhoneNumberInventoryRequest + 4, // 10: livekit.PhoneNumberService.PurchasePhoneNumber:input_type -> livekit.PurchasePhoneNumberRequest + 6, // 11: livekit.PhoneNumberService.ListPurchasedPhoneNumbers:input_type -> livekit.ListPurchasedPhoneNumbersRequest + 8, // 12: livekit.PhoneNumberService.ReleasePhoneNumber:input_type -> livekit.ReleasePhoneNumberRequest + 3, // 13: livekit.PhoneNumberService.ListPhoneNumberInventory:output_type -> livekit.ListPhoneNumberInventoryResponse + 5, // 14: livekit.PhoneNumberService.PurchasePhoneNumber:output_type -> livekit.PurchasePhoneNumberResponse + 7, // 15: livekit.PhoneNumberService.ListPurchasedPhoneNumbers:output_type -> livekit.ListPurchasedPhoneNumbersResponse + 14, // 16: livekit.PhoneNumberService.ReleasePhoneNumber:output_type -> google.protobuf.Empty + 13, // [13:17] is the sub-list for method output_type + 9, // [9:13] is the sub-list for method input_type + 9, // [9:9] is the sub-list for extension type_name + 9, // [9:9] is the sub-list for extension extendee + 0, // [0:9] is the sub-list for field type_name } func init() { file_livekit_phone_number_proto_init() } @@ -960,6 +971,7 @@ func file_livekit_phone_number_proto_init() { if File_livekit_phone_number_proto != nil { return } + file_livekit_sip_proto_init() type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/livekit/livekit_phone_number.twirp.go b/livekit/livekit_phone_number.twirp.go index 63087b809..abab6a031 100644 --- a/livekit/livekit_phone_number.twirp.go +++ b/livekit/livekit_phone_number.twirp.go @@ -1361,68 +1361,70 @@ func (s *phoneNumberServiceServer) PathPrefix() string { } var twirpFileDescriptor6 = []byte{ - // 994 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0x4f, 0x6f, 0xdb, 0x36, - 0x14, 0x8f, 0xec, 0x38, 0x8d, 0x9f, 0x93, 0xce, 0xe1, 0x8a, 0x40, 0x55, 0xd6, 0xc5, 0x51, 0xda, - 0xc2, 0x0b, 0x06, 0x07, 0x73, 0x87, 0xee, 0xb4, 0x01, 0x8e, 0xa3, 0x76, 0x06, 0x52, 0xdb, 0x90, - 0xe5, 0x0e, 0xdd, 0x45, 0x90, 0x65, 0xd6, 0x21, 0x2a, 0x8b, 0xaa, 0x48, 0x05, 0xf3, 0x79, 0xdf, - 0x61, 0x97, 0xed, 0xb2, 0xf3, 0xce, 0xdb, 0x97, 0xd8, 0x27, 0xda, 0x6d, 0xa0, 0x28, 0xa9, 0x4a, - 0x2c, 0x25, 0x1d, 0x76, 0xe4, 0xef, 0xfd, 0xde, 0xe3, 0xfb, 0xcb, 0x47, 0xd0, 0x3c, 0x72, 0x85, - 0xdf, 0x11, 0x6e, 0x07, 0x97, 0xd4, 0xc7, 0xb6, 0x1f, 0x2d, 0x67, 0x38, 0xec, 0x04, 0x21, 0xe5, - 0x14, 0xdd, 0x4b, 0x64, 0xda, 0xc1, 0x82, 0xd2, 0x85, 0x87, 0x4f, 0x63, 0x78, 0x16, 0xbd, 0x3d, - 0xc5, 0xcb, 0x80, 0xaf, 0x24, 0x4b, 0xff, 0x45, 0x81, 0xc3, 0x0b, 0xc2, 0xf8, 0x58, 0x18, 0x18, - 0xc6, 0xfa, 0x03, 0xff, 0x0a, 0xfb, 0x9c, 0x86, 0x2b, 0x13, 0xbf, 0x8f, 0x30, 0xe3, 0xe8, 0x08, - 0x76, 0x5c, 0x1a, 0xf9, 0x3c, 0x5c, 0xd9, 0x2e, 0x9d, 0x63, 0x55, 0x69, 0x29, 0xed, 0xba, 0xd9, - 0x48, 0xb0, 0x3e, 0x9d, 0x63, 0x74, 0x00, 0x75, 0x27, 0xc4, 0x8e, 0x94, 0x57, 0x62, 0xf9, 0xb6, - 0x00, 0x62, 0xe1, 0x03, 0xa8, 0x79, 0x64, 0x49, 0xb8, 0x5a, 0x6d, 0x29, 0xed, 0x9a, 0x29, 0x0f, - 0xe8, 0x11, 0x40, 0xe0, 0x2c, 0xb0, 0xcd, 0xe9, 0x3b, 0xec, 0xab, 0x9b, 0xb1, 0x4e, 0x5d, 0x20, - 0x96, 0x00, 0xf4, 0x9f, 0x15, 0x68, 0x95, 0x3b, 0xc6, 0x02, 0xea, 0x33, 0x8c, 0xbe, 0x81, 0x1a, - 0xe1, 0x78, 0xc9, 0x54, 0xa5, 0x55, 0x6d, 0x37, 0xba, 0x47, 0x9d, 0x24, 0xe6, 0x4e, 0x91, 0xd6, - 0x80, 0xe3, 0xa5, 0x29, 0xf9, 0xe8, 0x29, 0x7c, 0xe2, 0xe3, 0x9f, 0xb8, 0x9d, 0xf3, 0x40, 0x7a, - 0xbd, 0x2b, 0xe0, 0x71, 0xe6, 0x45, 0x0f, 0xb4, 0x71, 0x14, 0xba, 0x97, 0x0e, 0xc3, 0x39, 0x93, - 0x69, 0x62, 0x8e, 0x61, 0x37, 0x9f, 0x78, 0xe9, 0x46, 0xdd, 0xdc, 0x09, 0x3e, 0x50, 0x99, 0xee, - 0xc0, 0x41, 0xa1, 0x89, 0x24, 0x84, 0xb3, 0x22, 0x1b, 0x8d, 0xee, 0xa3, 0x0f, 0xa1, 0x24, 0xca, - 0xf3, 0xbc, 0xf6, 0xf5, 0x2b, 0x7e, 0x48, 0x52, 0x55, 0xc0, 0x64, 0xa9, 0xaf, 0x59, 0x11, 0x94, - 0xf2, 0x22, 0x54, 0x6e, 0x16, 0xe1, 0x77, 0x05, 0x8e, 0x6e, 0xb1, 0x9c, 0x84, 0xf0, 0xec, 0x7a, - 0x15, 0xee, 0x70, 0xfd, 0xbf, 0x55, 0x00, 0x1d, 0x42, 0x83, 0x53, 0xee, 0x78, 0x76, 0xdc, 0x6e, - 0x49, 0x0b, 0x41, 0x0c, 0xf5, 0x05, 0xa2, 0x7f, 0x07, 0x0f, 0x4d, 0xec, 0xe1, 0xe2, 0x0a, 0x1d, - 0xc1, 0x4e, 0x3e, 0xbb, 0x69, 0xeb, 0xe6, 0xb2, 0xa7, 0xff, 0x55, 0x81, 0xbd, 0x97, 0x1e, 0x9d, - 0x39, 0x5e, 0x4e, 0x1f, 0xdd, 0x87, 0x0a, 0x99, 0x27, 0xf4, 0x0a, 0x99, 0x0b, 0x37, 0xf0, 0x57, - 0xcf, 0xbf, 0xb6, 0xdf, 0xd2, 0x70, 0xe9, 0xf0, 0xc4, 0x55, 0x10, 0xd0, 0x8b, 0x18, 0x59, 0x1b, - 0x92, 0xea, 0x1d, 0x43, 0xb2, 0x79, 0x63, 0x48, 0x0e, 0xa1, 0x21, 0x7d, 0xb4, 0xf9, 0x2a, 0xc0, - 0x6a, 0x4d, 0x5e, 0x20, 0x21, 0x6b, 0x15, 0x60, 0xa4, 0xc1, 0xb6, 0x47, 0x5d, 0xc7, 0x23, 0x7c, - 0xa5, 0x6e, 0x49, 0xe5, 0xf4, 0x8c, 0xf6, 0x61, 0x2b, 0xc4, 0x0b, 0x42, 0x7d, 0xf5, 0x5e, 0x2c, - 0x49, 0x4e, 0xa2, 0xbc, 0x2c, 0x70, 0x96, 0x36, 0x73, 0x69, 0x88, 0xd5, 0xed, 0x96, 0xd2, 0xae, - 0x9a, 0x75, 0x81, 0x4c, 0x04, 0x20, 0xc4, 0x6e, 0x88, 0x1d, 0x8e, 0xe7, 0xb6, 0xc3, 0xd5, 0xba, - 0x14, 0x27, 0x48, 0x2f, 0x6e, 0x8e, 0x28, 0x98, 0xa7, 0x62, 0x90, 0xe2, 0x04, 0xe9, 0x71, 0xfd, - 0x37, 0x05, 0x76, 0x2d, 0xec, 0x61, 0x91, 0xcc, 0x55, 0x9f, 0x32, 0x8e, 0x9e, 0xc3, 0x76, 0x88, - 0x19, 0x8d, 0x42, 0x57, 0x3e, 0x12, 0xf7, 0xbb, 0x5a, 0xd6, 0x0b, 0xd7, 0x98, 0x22, 0x20, 0x33, - 0xe3, 0x8a, 0xd0, 0xdc, 0x28, 0x0c, 0xb1, 0xef, 0xae, 0xd2, 0xc7, 0x23, 0x3d, 0x8b, 0xbe, 0x0d, - 0x42, 0xe2, 0xca, 0x84, 0x2a, 0xa6, 0x3c, 0x88, 0x6c, 0xcf, 0x88, 0xe7, 0x11, 0x7f, 0x61, 0x47, - 0x3e, 0xe1, 0x49, 0x36, 0x1b, 0x09, 0x36, 0xf5, 0x09, 0xd7, 0xff, 0x50, 0x40, 0x2d, 0x7b, 0x06, - 0xd0, 0xb7, 0x05, 0x7d, 0xd1, 0xc8, 0x79, 0xbb, 0xd6, 0x10, 0xd7, 0x7a, 0x06, 0xe9, 0xb0, 0xe3, - 0x3a, 0x81, 0x33, 0x23, 0x1e, 0xe1, 0x04, 0x33, 0xb5, 0x22, 0xe7, 0x3e, 0x8f, 0xa1, 0x2f, 0xa1, - 0xe6, 0x52, 0xc6, 0x99, 0x5a, 0x8d, 0xa7, 0x62, 0xbf, 0x38, 0x13, 0xa6, 0x24, 0xe9, 0x7f, 0x2b, - 0xf0, 0xa0, 0x68, 0x5c, 0xfe, 0xaf, 0xa7, 0x5d, 0xd8, 0x62, 0xdc, 0xe1, 0x11, 0x8b, 0x13, 0x9b, - 0x2f, 0x48, 0x4e, 0x65, 0x12, 0x33, 0xcc, 0x84, 0x29, 0x5a, 0xd1, 0x61, 0x8c, 0x2c, 0x7c, 0x59, - 0xf8, 0x6a, 0x5c, 0x78, 0x48, 0xa1, 0x1e, 0x17, 0x84, 0x50, 0x8e, 0x5c, 0x4c, 0xd8, 0x94, 0x84, - 0x14, 0xea, 0xf1, 0x93, 0x7f, 0x14, 0xd8, 0x5b, 0x2b, 0x38, 0x3a, 0x86, 0x43, 0xcb, 0xb8, 0x30, - 0xc6, 0xdf, 0x8f, 0x86, 0x6f, 0xec, 0xfe, 0x68, 0x62, 0xd9, 0xd6, 0x9b, 0xb1, 0x61, 0x4f, 0x87, - 0x93, 0xb1, 0xd1, 0x1f, 0xbc, 0x18, 0x18, 0xe7, 0xcd, 0x0d, 0xf4, 0x04, 0x8e, 0x8a, 0x48, 0xc3, - 0xe9, 0xab, 0x33, 0xc3, 0xb4, 0x4d, 0x63, 0x68, 0xf5, 0x2e, 0x9a, 0x4a, 0x19, 0xed, 0xf5, 0x68, - 0xd0, 0x37, 0xec, 0xc1, 0xf0, 0x6c, 0x34, 0x1d, 0x9e, 0x37, 0x2b, 0xe8, 0x29, 0xe8, 0xe5, 0xb4, - 0xd1, 0xd4, 0x92, 0xbc, 0x6a, 0x99, 0x6b, 0x93, 0x57, 0x93, 0xcc, 0xd8, 0x26, 0x7a, 0x0c, 0xad, - 0x32, 0x52, 0x66, 0xaa, 0x76, 0xf2, 0xab, 0x02, 0x7b, 0x6b, 0xb9, 0x15, 0x17, 0x08, 0xbd, 0x2c, - 0x90, 0x89, 0xd5, 0xb3, 0xa6, 0x93, 0x1b, 0xb1, 0x7f, 0x0e, 0x5a, 0x11, 0xa9, 0xd7, 0xb7, 0x06, - 0xaf, 0x8d, 0xa6, 0x82, 0x0e, 0xe1, 0xa0, 0x48, 0x3e, 0x36, 0x86, 0xe7, 0x83, 0xe1, 0xcb, 0x66, - 0x05, 0xb5, 0xe0, 0xb3, 0x22, 0x82, 0x69, 0x5c, 0x18, 0xbd, 0x89, 0x71, 0xde, 0xac, 0x76, 0xff, - 0xac, 0x02, 0xca, 0x7b, 0x87, 0xc3, 0x2b, 0x31, 0x4f, 0xef, 0x41, 0x2d, 0x5b, 0xb6, 0xa8, 0x9d, - 0xb5, 0xcc, 0x1d, 0x1f, 0x05, 0xed, 0x8b, 0x8f, 0x60, 0xca, 0x9d, 0xa1, 0x6f, 0xa0, 0x19, 0x7c, - 0x5a, 0xb0, 0x17, 0xd1, 0xf1, 0xda, 0xf6, 0x58, 0x7f, 0xd6, 0xb5, 0xc7, 0xb7, 0x93, 0xb2, 0x3b, - 0x38, 0x3c, 0x2c, 0x5d, 0x5f, 0xe8, 0x86, 0xb7, 0xb7, 0x2c, 0x4f, 0xed, 0xe4, 0x63, 0xa8, 0xd9, - 0xad, 0x26, 0xa0, 0xf5, 0x8d, 0x84, 0xf4, 0xcc, 0x46, 0xe9, 0xba, 0xd2, 0xf6, 0x3b, 0xf2, 0xaf, - 0xd6, 0x49, 0xff, 0x6a, 0x1d, 0x43, 0xfc, 0xd5, 0xf4, 0x8d, 0xb3, 0x27, 0x3f, 0x1e, 0x2f, 0x08, - 0xbf, 0x8c, 0x66, 0x1d, 0x97, 0x2e, 0x4f, 0x13, 0x4b, 0xf2, 0x4b, 0xe7, 0x52, 0x2f, 0x05, 0x66, - 0x5b, 0x31, 0xf2, 0xec, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x20, 0xae, 0x09, 0x76, 0x19, 0x0a, - 0x00, 0x00, + // 1040 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0x4f, 0x6f, 0xdb, 0xc6, + 0x13, 0x35, 0x25, 0xcb, 0xb1, 0x46, 0x76, 0x22, 0xef, 0x2f, 0x30, 0x18, 0x3a, 0xf9, 0x59, 0xa6, + 0x93, 0xc0, 0x35, 0x0a, 0x19, 0x55, 0x8a, 0xf4, 0xd4, 0x02, 0xb2, 0xcc, 0x24, 0x02, 0x1c, 0x49, + 0xa0, 0xa8, 0x14, 0xe9, 0x85, 0xa0, 0xa8, 0xb5, 0xbc, 0x08, 0xc5, 0x65, 0xb8, 0x4b, 0xa3, 0x3a, + 0xf7, 0x33, 0xb4, 0x97, 0xf6, 0xd2, 0x73, 0xcf, 0xed, 0x77, 0xeb, 0xad, 0x58, 0x2e, 0xc9, 0xd0, + 0x16, 0x69, 0xa7, 0xe8, 0x91, 0x6f, 0xde, 0xce, 0xbe, 0xf9, 0xc7, 0x59, 0xd0, 0x3c, 0x72, 0x85, + 0x3f, 0x10, 0x6e, 0x07, 0x97, 0xd4, 0xc7, 0xb6, 0x1f, 0x2d, 0xa6, 0x38, 0x6c, 0x07, 0x21, 0xe5, + 0x14, 0xdd, 0x4b, 0x6c, 0xda, 0xde, 0x9c, 0xd2, 0xb9, 0x87, 0x4f, 0x62, 0x78, 0x1a, 0x5d, 0x9c, + 0xe0, 0x45, 0xc0, 0x97, 0x92, 0xa5, 0xed, 0xa4, 0x1e, 0x18, 0x09, 0x24, 0xa4, 0xff, 0xa2, 0xc0, + 0xfe, 0x39, 0x61, 0x7c, 0x24, 0x7c, 0x0e, 0x62, 0x97, 0x7d, 0xff, 0x0a, 0xfb, 0x9c, 0x86, 0x4b, + 0x13, 0x7f, 0x8c, 0x30, 0xe3, 0xe8, 0x00, 0xb6, 0x5c, 0x1a, 0xf9, 0x3c, 0x5c, 0xda, 0x2e, 0x9d, + 0x61, 0x55, 0x69, 0x29, 0x47, 0x75, 0xb3, 0x91, 0x60, 0x3d, 0x3a, 0xc3, 0x68, 0x0f, 0xea, 0x4e, + 0x88, 0x1d, 0x69, 0xaf, 0xc4, 0xf6, 0x4d, 0x01, 0xc4, 0xc6, 0x87, 0x50, 0xf3, 0xc8, 0x82, 0x70, + 0xb5, 0xda, 0x52, 0x8e, 0x6a, 0xa6, 0xfc, 0x40, 0x4f, 0x00, 0x02, 0x67, 0x8e, 0x6d, 0x4e, 0x3f, + 0x60, 0x5f, 0x5d, 0x8f, 0xcf, 0xd4, 0x05, 0x62, 0x09, 0x40, 0xff, 0x49, 0x81, 0x56, 0xb9, 0x30, + 0x16, 0x50, 0x9f, 0x61, 0xf4, 0x0d, 0xd4, 0x08, 0xc7, 0x0b, 0xa6, 0x2a, 0xad, 0xea, 0x51, 0xa3, + 0x73, 0xd0, 0x4e, 0x02, 0x6c, 0x17, 0x9d, 0xea, 0x73, 0xbc, 0x30, 0x25, 0x1f, 0x3d, 0x87, 0x07, + 0x3e, 0xfe, 0x91, 0xdb, 0x39, 0x05, 0x52, 0xf5, 0xb6, 0x80, 0x47, 0x99, 0x8a, 0x2e, 0x68, 0xa3, + 0x28, 0x74, 0x2f, 0x1d, 0x86, 0x73, 0x2e, 0xd3, 0xc4, 0x1c, 0xc2, 0x76, 0xbe, 0x16, 0x52, 0x46, + 0xdd, 0xdc, 0x0a, 0x3e, 0x51, 0x99, 0xee, 0xc0, 0x5e, 0xa1, 0x8b, 0x24, 0x84, 0xd3, 0x22, 0x1f, + 0x8d, 0xce, 0x93, 0x4f, 0xa1, 0x24, 0x87, 0x67, 0xf9, 0xd3, 0xd7, 0xaf, 0xf8, 0x3e, 0x49, 0x55, + 0x01, 0x93, 0xa5, 0x5a, 0xb3, 0x22, 0x28, 0xe5, 0x45, 0xa8, 0xdc, 0x2c, 0xc2, 0xef, 0x0a, 0x1c, + 0xdc, 0xe2, 0x39, 0x09, 0xe1, 0xc5, 0xf5, 0x2a, 0xdc, 0x21, 0xfd, 0xdf, 0x55, 0x00, 0xed, 0x43, + 0x83, 0x53, 0xee, 0x78, 0x76, 0xdc, 0x6e, 0x49, 0x0b, 0x41, 0x0c, 0xf5, 0x04, 0xa2, 0x7f, 0x07, + 0x8f, 0x4c, 0xec, 0xe1, 0xe2, 0x0a, 0x1d, 0xc0, 0x56, 0x3e, 0xbb, 0x69, 0xeb, 0xe6, 0xb2, 0xa7, + 0xff, 0x55, 0x81, 0x9d, 0xd7, 0x1e, 0x9d, 0x3a, 0x5e, 0xee, 0x3c, 0xba, 0x0f, 0x15, 0x32, 0x4b, + 0xe8, 0x15, 0x32, 0x13, 0x32, 0xf0, 0x57, 0x2f, 0xbf, 0xb6, 0x2f, 0x68, 0xb8, 0x70, 0x78, 0x22, + 0x15, 0x04, 0xf4, 0x2a, 0x46, 0x56, 0x86, 0xa4, 0x7a, 0xc7, 0x90, 0xac, 0xdf, 0x18, 0x92, 0x7d, + 0x68, 0x48, 0x8d, 0x36, 0x5f, 0x06, 0x58, 0xad, 0xc9, 0x0b, 0x24, 0x64, 0x2d, 0x03, 0x8c, 0x34, + 0xd8, 0xf4, 0xa8, 0xeb, 0x78, 0x84, 0x2f, 0xd5, 0x0d, 0x79, 0x38, 0xfd, 0x46, 0xbb, 0xb0, 0x11, + 0xe2, 0x39, 0xa1, 0xbe, 0x7a, 0x2f, 0xb6, 0x24, 0x5f, 0xa2, 0xbc, 0x2c, 0x70, 0x16, 0x36, 0x73, + 0x69, 0x88, 0xd5, 0xcd, 0x96, 0x72, 0x54, 0x35, 0xeb, 0x02, 0x19, 0x0b, 0x40, 0x98, 0xdd, 0x10, + 0x3b, 0x1c, 0xcf, 0x6c, 0x87, 0xab, 0x75, 0x69, 0x4e, 0x90, 0x6e, 0xdc, 0x1c, 0x51, 0x30, 0x4b, + 0xcd, 0x20, 0xcd, 0x09, 0xd2, 0xe5, 0xfa, 0x6f, 0x0a, 0x6c, 0x5b, 0xd8, 0xc3, 0x22, 0x99, 0xcb, + 0x1e, 0x65, 0x1c, 0xbd, 0x84, 0xcd, 0x10, 0x33, 0x1a, 0x85, 0xae, 0xfc, 0x49, 0xdc, 0xef, 0x68, + 0x59, 0x2f, 0x5c, 0x63, 0x8a, 0x80, 0xcc, 0x8c, 0x2b, 0x42, 0x73, 0xa3, 0x30, 0xc4, 0xbe, 0xbb, + 0x4c, 0x7f, 0x1e, 0xe9, 0xb7, 0xe8, 0xdb, 0x20, 0x24, 0xae, 0x4c, 0xa8, 0x62, 0xca, 0x0f, 0x91, + 0xed, 0x29, 0xf1, 0x3c, 0xe2, 0xcf, 0xed, 0xc8, 0x27, 0x3c, 0xc9, 0x66, 0x23, 0xc1, 0x26, 0x3e, + 0xe1, 0xfa, 0x1f, 0x0a, 0xa8, 0x65, 0xbf, 0x01, 0xf4, 0x6d, 0x41, 0x5f, 0x34, 0x72, 0x6a, 0x57, + 0x1a, 0xe2, 0x5a, 0xcf, 0x20, 0x1d, 0xb6, 0x5c, 0x27, 0x70, 0xa6, 0xc4, 0x23, 0x9c, 0x60, 0xa6, + 0x56, 0xe4, 0xdc, 0xe7, 0x31, 0xf4, 0x25, 0xd4, 0x5c, 0xca, 0x38, 0x53, 0xab, 0xf1, 0x54, 0xec, + 0x16, 0x67, 0xc2, 0x94, 0x24, 0xfd, 0xe7, 0x0a, 0x3c, 0x2c, 0x1a, 0x97, 0xff, 0xaa, 0xb4, 0x03, + 0x1b, 0x8c, 0x3b, 0x3c, 0x62, 0x71, 0x62, 0xf3, 0x05, 0xc9, 0x1d, 0x19, 0xc7, 0x0c, 0x33, 0x61, + 0x8a, 0x56, 0x74, 0x18, 0x23, 0x73, 0x5f, 0x16, 0xbe, 0x1a, 0x17, 0x1e, 0x52, 0xa8, 0xcb, 0x05, + 0x21, 0x94, 0x23, 0x17, 0x13, 0xd6, 0x25, 0x21, 0x85, 0xba, 0x1c, 0xbd, 0x81, 0x1d, 0x46, 0x02, + 0x7b, 0x46, 0x58, 0xe0, 0x70, 0xf7, 0xd2, 0x0e, 0x23, 0x4f, 0xb6, 0x74, 0xa3, 0xf3, 0x38, 0x13, + 0x30, 0xee, 0x8f, 0xce, 0x12, 0x82, 0x19, 0x79, 0xb8, 0xef, 0x5f, 0x50, 0xf3, 0x01, 0x23, 0x41, + 0x1e, 0x3c, 0xfe, 0x5b, 0x81, 0x9d, 0x95, 0xd6, 0x41, 0x87, 0xb0, 0x6f, 0x19, 0xe7, 0xc6, 0xe8, + 0xcd, 0x70, 0xf0, 0xde, 0xee, 0x0d, 0xc7, 0x96, 0x6d, 0xbd, 0x1f, 0x19, 0xf6, 0x64, 0x30, 0x1e, + 0x19, 0xbd, 0xfe, 0xab, 0xbe, 0x71, 0xd6, 0x5c, 0x43, 0xcf, 0xe0, 0xa0, 0x88, 0x34, 0x98, 0xbc, + 0x3d, 0x35, 0x4c, 0xdb, 0x34, 0x06, 0x56, 0xf7, 0xbc, 0xa9, 0x94, 0xd1, 0xde, 0x0d, 0xfb, 0x3d, + 0xc3, 0xee, 0x0f, 0x4e, 0x87, 0x93, 0xc1, 0x59, 0xb3, 0x82, 0x9e, 0x83, 0x5e, 0x4e, 0x1b, 0x4e, + 0x2c, 0xc9, 0xab, 0x96, 0x49, 0x1b, 0xbf, 0x1d, 0x67, 0xce, 0xd6, 0xd1, 0x53, 0x68, 0x95, 0x91, + 0x32, 0x57, 0xb5, 0xe3, 0x5f, 0x15, 0xd8, 0x59, 0xa9, 0x92, 0xb8, 0x40, 0x9c, 0xcb, 0x02, 0x19, + 0x5b, 0x5d, 0x6b, 0x32, 0xbe, 0x11, 0xfb, 0xff, 0x41, 0x2b, 0x22, 0x75, 0x7b, 0x56, 0xff, 0x9d, + 0xd1, 0x54, 0xd0, 0x3e, 0xec, 0x15, 0xd9, 0x47, 0xc6, 0xe0, 0xac, 0x3f, 0x78, 0xdd, 0xac, 0xa0, + 0x16, 0x3c, 0x2e, 0x22, 0x98, 0xc6, 0xb9, 0xd1, 0x1d, 0x1b, 0x67, 0xcd, 0x6a, 0xe7, 0xcf, 0x2a, + 0xa0, 0xbc, 0x3a, 0x1c, 0x5e, 0x89, 0xc9, 0xfc, 0x08, 0x6a, 0xd9, 0xda, 0x46, 0x47, 0x59, 0xed, + 0xef, 0x78, 0x72, 0x68, 0x5f, 0x7c, 0x06, 0x53, 0x6e, 0x1f, 0x7d, 0x0d, 0x4d, 0xe1, 0x7f, 0x05, + 0x1b, 0x16, 0x1d, 0xae, 0xec, 0xa1, 0xd5, 0x05, 0xa1, 0x3d, 0xbd, 0x9d, 0x94, 0xdd, 0xc1, 0xe1, + 0x51, 0xe9, 0x22, 0x44, 0x37, 0xd4, 0xde, 0xb2, 0x86, 0xb5, 0xe3, 0xcf, 0xa1, 0x66, 0xb7, 0x9a, + 0x80, 0x56, 0x77, 0x1b, 0xd2, 0x33, 0x1f, 0xa5, 0x8b, 0x4f, 0xdb, 0x6d, 0xcb, 0x87, 0x60, 0x3b, + 0x7d, 0x08, 0xb6, 0x0d, 0xf1, 0x10, 0xd4, 0xd7, 0x4e, 0x9f, 0xfd, 0x70, 0x38, 0x27, 0xfc, 0x32, + 0x9a, 0xb6, 0x5d, 0xba, 0x38, 0x49, 0x3c, 0xc9, 0xf7, 0xa2, 0x4b, 0xbd, 0x14, 0x98, 0x6e, 0xc4, + 0xc8, 0x8b, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0xe5, 0xe4, 0xfb, 0x00, 0x76, 0x0a, 0x00, 0x00, } From 84734f4d07d1755ed2ed43bb91efda9a718bd400 Mon Sep 17 00:00:00 2001 From: Nishad Musthafa Date: Mon, 18 Aug 2025 11:15:23 -0700 Subject: [PATCH 15/20] Using google protobuf timestamp and adding a struct for TokenPagination --- protobufs/livekit_models.proto | 4 ++++ protobufs/livekit_phone_number.proto | 18 ++++++++++-------- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/protobufs/livekit_models.proto b/protobufs/livekit_models.proto index df5e76e51..7f9e5cb36 100644 --- a/protobufs/livekit_models.proto +++ b/protobufs/livekit_models.proto @@ -28,6 +28,10 @@ message Pagination { int32 limit = 2; } +message TokenPagination { + string token = 1; +} + // ListUpdate is used for updated APIs where 'repeated string' field is modified. message ListUpdate { repeated string set = 1; // set the field to a new list diff --git a/protobufs/livekit_phone_number.proto b/protobufs/livekit_phone_number.proto index 3b2615cf0..237873691 100644 --- a/protobufs/livekit_phone_number.proto +++ b/protobufs/livekit_phone_number.proto @@ -5,6 +5,8 @@ package livekit; option go_package = "github.com/livekit/protocol/livekit"; import "google/protobuf/empty.proto"; +import "google/protobuf/timestamp.proto"; +import "livekit_models.proto"; import "livekit_sip.proto"; // Telephony cost type enumeration @@ -49,13 +51,13 @@ message ListPhoneNumberInventoryRequest { string country_code = 1; // Optional: Filter by country code (e.g., "US", "CA") string area_code = 2; // Optional: Filter by area code (e.g., "415") int32 limit = 3; // Optional: Maximum number of results (default: 50) - string page_token = 4; // Optional: Token for pagination (empty for first page) + TokenPagination page_token = 4; // Optional: Token for pagination (empty for first page) } // ListPhoneNumberInventoryResponse - Response containing available phone numbers message ListPhoneNumberInventoryResponse { repeated PhoneNumberInventoryItem items = 1; // List of available phone numbers - string next_page_token = 2; // Token for next page (empty if no more pages) + TokenPagination next_page_token = 2; // Token for next page (empty if no more pages) } // PurchasePhoneNumberRequest - Request to purchase phone numbers @@ -71,13 +73,13 @@ message PurchasePhoneNumberResponse { // ListPurchasedPhoneNumbersRequest - Request to list purchased phone numbers message ListPurchasedPhoneNumbersRequest { int32 limit = 1; // Optional: Maximum number of results (default: 50) - string page_token = 2; // Optional: Token for pagination (empty for first page) + TokenPagination page_token = 2; // Optional: Token for pagination (empty for first page) } // ListPurchasedPhoneNumbersResponse - Response containing purchased phone numbers message ListPurchasedPhoneNumbersResponse { repeated PurchasedPhoneNumber items = 1; // List of purchased phone numbers - string next_page_token = 2; // Token for next page (empty if no more pages) + TokenPagination next_page_token = 2; // Token for next page (empty if no more pages) int32 total_count = 3; // Total number of purchased phone numbers } @@ -96,8 +98,8 @@ message GlobalPhoneNumber { string locality = 6; // City/locality (e.g., "San Francisco") string region = 7; // State/region (e.g., "CA") int64 spam_score = 8; // can be used later for fraud detection - int64 created_at = 9; // timestamp when created - int64 updated_at = 10; // timestamp when updated + google.protobuf.Timestamp created_at = 9; // timestamp when created + google.protobuf.Timestamp updated_at = 10; // timestamp when updated } // TelephonyCost represents the pricing structure for a specific telephony service @@ -121,7 +123,7 @@ message PhoneNumberInventoryItem { message PurchasedPhoneNumber { GlobalPhoneNumber phone_number = 1; // Common phone number fields PhoneNumberStatus status = 2; // Current status of the phone number - int64 assigned_at = 3; // Timestamp when the number was assigned - int64 released_at = 4; // Timestamp when the number was released (if applicable) + google.protobuf.Timestamp assigned_at = 3; // Timestamp when the number was assigned + google.protobuf.Timestamp released_at = 4; // Timestamp when the number was released (if applicable) SIPDispatchRuleInfo sip_dispatch_rule = 5; // Optional: Associated SIP dispatch rule } From 935390e147c014616ad7457776011e9daed93aa5 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 18 Aug 2025 18:16:36 +0000 Subject: [PATCH 16/20] generated protobuf --- livekit/livekit_models.pb.go | 951 +++++++++----------------- livekit/livekit_phone_number.pb.go | 146 ++-- livekit/livekit_phone_number.twirp.go | 136 ++-- 3 files changed, 479 insertions(+), 754 deletions(-) diff --git a/livekit/livekit_models.pb.go b/livekit/livekit_models.pb.go index 3c2a37448..bb82049d2 100644 --- a/livekit/livekit_models.pb.go +++ b/livekit/livekit_models.pb.go @@ -818,7 +818,7 @@ func (x ParticipantInfo_State) Number() protoreflect.EnumNumber { // Deprecated: Use ParticipantInfo_State.Descriptor instead. func (ParticipantInfo_State) EnumDescriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{6, 0} + return file_livekit_models_proto_rawDescGZIP(), []int{7, 0} } type ParticipantInfo_Kind int32 @@ -878,7 +878,7 @@ func (x ParticipantInfo_Kind) Number() protoreflect.EnumNumber { // Deprecated: Use ParticipantInfo_Kind.Descriptor instead. func (ParticipantInfo_Kind) EnumDescriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{6, 1} + return file_livekit_models_proto_rawDescGZIP(), []int{7, 1} } type ParticipantInfo_KindDetail int32 @@ -924,7 +924,7 @@ func (x ParticipantInfo_KindDetail) Number() protoreflect.EnumNumber { // Deprecated: Use ParticipantInfo_KindDetail.Descriptor instead. func (ParticipantInfo_KindDetail) EnumDescriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{6, 2} + return file_livekit_models_proto_rawDescGZIP(), []int{7, 2} } type Encryption_Type int32 @@ -973,7 +973,7 @@ func (x Encryption_Type) Number() protoreflect.EnumNumber { // Deprecated: Use Encryption_Type.Descriptor instead. func (Encryption_Type) EnumDescriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{7, 0} + return file_livekit_models_proto_rawDescGZIP(), []int{8, 0} } type VideoLayer_Mode int32 @@ -1022,7 +1022,7 @@ func (x VideoLayer_Mode) Number() protoreflect.EnumNumber { // Deprecated: Use VideoLayer_Mode.Descriptor instead. func (VideoLayer_Mode) EnumDescriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{10, 0} + return file_livekit_models_proto_rawDescGZIP(), []int{11, 0} } type DataPacket_Kind int32 @@ -1068,7 +1068,7 @@ func (x DataPacket_Kind) Number() protoreflect.EnumNumber { // Deprecated: Use DataPacket_Kind.Descriptor instead. func (DataPacket_Kind) EnumDescriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{11, 0} + return file_livekit_models_proto_rawDescGZIP(), []int{12, 0} } type ServerInfo_Edition int32 @@ -1114,7 +1114,7 @@ func (x ServerInfo_Edition) Number() protoreflect.EnumNumber { // Deprecated: Use ServerInfo_Edition.Descriptor instead. func (ServerInfo_Edition) EnumDescriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{26, 0} + return file_livekit_models_proto_rawDescGZIP(), []int{25, 0} } type ClientInfo_SDK int32 @@ -1199,7 +1199,7 @@ func (x ClientInfo_SDK) Number() protoreflect.EnumNumber { // Deprecated: Use ClientInfo_SDK.Descriptor instead. func (ClientInfo_SDK) EnumDescriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{27, 0} + return file_livekit_models_proto_rawDescGZIP(), []int{26, 0} } // enum for operation types (specific to TextHeader) @@ -1252,7 +1252,7 @@ func (x DataStream_OperationType) Number() protoreflect.EnumNumber { // Deprecated: Use DataStream_OperationType.Descriptor instead. func (DataStream_OperationType) EnumDescriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{38, 0} + return file_livekit_models_proto_rawDescGZIP(), []int{37, 0} } type Pagination struct { @@ -1307,6 +1307,50 @@ func (x *Pagination) GetLimit() int32 { return 0 } +type TokenPagination struct { + state protoimpl.MessageState `protogen:"open.v1"` + Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TokenPagination) Reset() { + *x = TokenPagination{} + mi := &file_livekit_models_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TokenPagination) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TokenPagination) ProtoMessage() {} + +func (x *TokenPagination) ProtoReflect() protoreflect.Message { + mi := &file_livekit_models_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TokenPagination.ProtoReflect.Descriptor instead. +func (*TokenPagination) Descriptor() ([]byte, []int) { + return file_livekit_models_proto_rawDescGZIP(), []int{1} +} + +func (x *TokenPagination) GetToken() string { + if x != nil { + return x.Token + } + return "" +} + // ListUpdate is used for updated APIs where 'repeated string' field is modified. type ListUpdate struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -1320,7 +1364,7 @@ type ListUpdate struct { func (x *ListUpdate) Reset() { *x = ListUpdate{} - mi := &file_livekit_models_proto_msgTypes[1] + mi := &file_livekit_models_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1332,7 +1376,7 @@ func (x *ListUpdate) String() string { func (*ListUpdate) ProtoMessage() {} func (x *ListUpdate) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[1] + mi := &file_livekit_models_proto_msgTypes[2] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1345,7 +1389,7 @@ func (x *ListUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use ListUpdate.ProtoReflect.Descriptor instead. func (*ListUpdate) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{1} + return file_livekit_models_proto_rawDescGZIP(), []int{2} } func (x *ListUpdate) GetSet() []string { @@ -1398,7 +1442,7 @@ type Room struct { func (x *Room) Reset() { *x = Room{} - mi := &file_livekit_models_proto_msgTypes[2] + mi := &file_livekit_models_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1410,7 +1454,7 @@ func (x *Room) String() string { func (*Room) ProtoMessage() {} func (x *Room) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[2] + mi := &file_livekit_models_proto_msgTypes[3] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1423,7 +1467,7 @@ func (x *Room) ProtoReflect() protoreflect.Message { // Deprecated: Use Room.ProtoReflect.Descriptor instead. func (*Room) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{2} + return file_livekit_models_proto_rawDescGZIP(), []int{3} } func (x *Room) GetSid() string { @@ -1534,7 +1578,7 @@ type Codec struct { func (x *Codec) Reset() { *x = Codec{} - mi := &file_livekit_models_proto_msgTypes[3] + mi := &file_livekit_models_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1546,7 +1590,7 @@ func (x *Codec) String() string { func (*Codec) ProtoMessage() {} func (x *Codec) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[3] + mi := &file_livekit_models_proto_msgTypes[4] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1559,7 +1603,7 @@ func (x *Codec) ProtoReflect() protoreflect.Message { // Deprecated: Use Codec.ProtoReflect.Descriptor instead. func (*Codec) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{3} + return file_livekit_models_proto_rawDescGZIP(), []int{4} } func (x *Codec) GetMime() string { @@ -1587,7 +1631,7 @@ type PlayoutDelay struct { func (x *PlayoutDelay) Reset() { *x = PlayoutDelay{} - mi := &file_livekit_models_proto_msgTypes[4] + mi := &file_livekit_models_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1599,7 +1643,7 @@ func (x *PlayoutDelay) String() string { func (*PlayoutDelay) ProtoMessage() {} func (x *PlayoutDelay) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[4] + mi := &file_livekit_models_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1612,7 +1656,7 @@ func (x *PlayoutDelay) ProtoReflect() protoreflect.Message { // Deprecated: Use PlayoutDelay.ProtoReflect.Descriptor instead. func (*PlayoutDelay) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{4} + return file_livekit_models_proto_rawDescGZIP(), []int{5} } func (x *PlayoutDelay) GetEnabled() bool { @@ -1668,7 +1712,7 @@ type ParticipantPermission struct { func (x *ParticipantPermission) Reset() { *x = ParticipantPermission{} - mi := &file_livekit_models_proto_msgTypes[5] + mi := &file_livekit_models_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1680,7 +1724,7 @@ func (x *ParticipantPermission) String() string { func (*ParticipantPermission) ProtoMessage() {} func (x *ParticipantPermission) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[5] + mi := &file_livekit_models_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1693,7 +1737,7 @@ func (x *ParticipantPermission) ProtoReflect() protoreflect.Message { // Deprecated: Use ParticipantPermission.ProtoReflect.Descriptor instead. func (*ParticipantPermission) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{5} + return file_livekit_models_proto_rawDescGZIP(), []int{6} } func (x *ParticipantPermission) GetCanSubscribe() bool { @@ -1789,7 +1833,7 @@ type ParticipantInfo struct { func (x *ParticipantInfo) Reset() { *x = ParticipantInfo{} - mi := &file_livekit_models_proto_msgTypes[6] + mi := &file_livekit_models_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1801,7 +1845,7 @@ func (x *ParticipantInfo) String() string { func (*ParticipantInfo) ProtoMessage() {} func (x *ParticipantInfo) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[6] + mi := &file_livekit_models_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1814,7 +1858,7 @@ func (x *ParticipantInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ParticipantInfo.ProtoReflect.Descriptor instead. func (*ParticipantInfo) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{6} + return file_livekit_models_proto_rawDescGZIP(), []int{7} } func (x *ParticipantInfo) GetSid() string { @@ -1937,7 +1981,7 @@ type Encryption struct { func (x *Encryption) Reset() { *x = Encryption{} - mi := &file_livekit_models_proto_msgTypes[7] + mi := &file_livekit_models_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1949,7 +1993,7 @@ func (x *Encryption) String() string { func (*Encryption) ProtoMessage() {} func (x *Encryption) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[7] + mi := &file_livekit_models_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1962,7 +2006,7 @@ func (x *Encryption) ProtoReflect() protoreflect.Message { // Deprecated: Use Encryption.ProtoReflect.Descriptor instead. func (*Encryption) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{7} + return file_livekit_models_proto_rawDescGZIP(), []int{8} } type SimulcastCodecInfo struct { @@ -1972,18 +2016,13 @@ type SimulcastCodecInfo struct { Cid string `protobuf:"bytes,3,opt,name=cid,proto3" json:"cid,omitempty"` Layers []*VideoLayer `protobuf:"bytes,4,rep,name=layers,proto3" json:"layers,omitempty"` VideoLayerMode VideoLayer_Mode `protobuf:"varint,5,opt,name=video_layer_mode,json=videoLayerMode,proto3,enum=livekit.VideoLayer_Mode" json:"video_layer_mode,omitempty"` - // cid (client side id for track) could be different between - // signalling (AddTrackRequest) and SDP offer. This field - // will be populated only if it is different to avoid - // duplication and keep the representation concise. - SdpCid string `protobuf:"bytes,6,opt,name=sdp_cid,json=sdpCid,proto3" json:"sdp_cid,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SimulcastCodecInfo) Reset() { *x = SimulcastCodecInfo{} - mi := &file_livekit_models_proto_msgTypes[8] + mi := &file_livekit_models_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1995,7 +2034,7 @@ func (x *SimulcastCodecInfo) String() string { func (*SimulcastCodecInfo) ProtoMessage() {} func (x *SimulcastCodecInfo) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[8] + mi := &file_livekit_models_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2008,7 +2047,7 @@ func (x *SimulcastCodecInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use SimulcastCodecInfo.ProtoReflect.Descriptor instead. func (*SimulcastCodecInfo) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{8} + return file_livekit_models_proto_rawDescGZIP(), []int{9} } func (x *SimulcastCodecInfo) GetMimeType() string { @@ -2046,13 +2085,6 @@ func (x *SimulcastCodecInfo) GetVideoLayerMode() VideoLayer_Mode { return VideoLayer_MODE_UNUSED } -func (x *SimulcastCodecInfo) GetSdpCid() string { - if x != nil { - return x.SdpCid - } - return "" -} - type TrackInfo struct { state protoimpl.MessageState `protogen:"open.v1"` Sid string `protobuf:"bytes,1,opt,name=sid,proto3" json:"sid,omitempty"` @@ -2099,7 +2131,7 @@ type TrackInfo struct { func (x *TrackInfo) Reset() { *x = TrackInfo{} - mi := &file_livekit_models_proto_msgTypes[9] + mi := &file_livekit_models_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2111,7 +2143,7 @@ func (x *TrackInfo) String() string { func (*TrackInfo) ProtoMessage() {} func (x *TrackInfo) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[9] + mi := &file_livekit_models_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2124,7 +2156,7 @@ func (x *TrackInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use TrackInfo.ProtoReflect.Descriptor instead. func (*TrackInfo) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{9} + return file_livekit_models_proto_rawDescGZIP(), []int{10} } func (x *TrackInfo) GetSid() string { @@ -2291,7 +2323,7 @@ type VideoLayer struct { func (x *VideoLayer) Reset() { *x = VideoLayer{} - mi := &file_livekit_models_proto_msgTypes[10] + mi := &file_livekit_models_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2303,7 +2335,7 @@ func (x *VideoLayer) String() string { func (*VideoLayer) ProtoMessage() {} func (x *VideoLayer) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[10] + mi := &file_livekit_models_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2316,7 +2348,7 @@ func (x *VideoLayer) ProtoReflect() protoreflect.Message { // Deprecated: Use VideoLayer.ProtoReflect.Descriptor instead. func (*VideoLayer) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{10} + return file_livekit_models_proto_rawDescGZIP(), []int{11} } func (x *VideoLayer) GetQuality() VideoQuality { @@ -2391,7 +2423,6 @@ type DataPacket struct { // *DataPacket_StreamHeader // *DataPacket_StreamChunk // *DataPacket_StreamTrailer - // *DataPacket_EncryptedPacket Value isDataPacket_Value `protobuf_oneof:"value"` // sequence number of reliable packet Sequence uint32 `protobuf:"varint,16,opt,name=sequence,proto3" json:"sequence,omitempty"` @@ -2403,7 +2434,7 @@ type DataPacket struct { func (x *DataPacket) Reset() { *x = DataPacket{} - mi := &file_livekit_models_proto_msgTypes[11] + mi := &file_livekit_models_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2415,7 +2446,7 @@ func (x *DataPacket) String() string { func (*DataPacket) ProtoMessage() {} func (x *DataPacket) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[11] + mi := &file_livekit_models_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2428,7 +2459,7 @@ func (x *DataPacket) ProtoReflect() protoreflect.Message { // Deprecated: Use DataPacket.ProtoReflect.Descriptor instead. func (*DataPacket) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{11} + return file_livekit_models_proto_rawDescGZIP(), []int{12} } // Deprecated: Marked as deprecated in livekit_models.proto. @@ -2569,15 +2600,6 @@ func (x *DataPacket) GetStreamTrailer() *DataStream_Trailer { return nil } -func (x *DataPacket) GetEncryptedPacket() *EncryptedPacket { - if x != nil { - if x, ok := x.Value.(*DataPacket_EncryptedPacket); ok { - return x.EncryptedPacket - } - } - return nil -} - func (x *DataPacket) GetSequence() uint32 { if x != nil { return x.Sequence @@ -2645,10 +2667,6 @@ type DataPacket_StreamTrailer struct { StreamTrailer *DataStream_Trailer `protobuf:"bytes,15,opt,name=stream_trailer,json=streamTrailer,proto3,oneof"` } -type DataPacket_EncryptedPacket struct { - EncryptedPacket *EncryptedPacket `protobuf:"bytes,18,opt,name=encrypted_packet,json=encryptedPacket,proto3,oneof"` -} - func (*DataPacket_User) isDataPacket_Value() {} func (*DataPacket_Speaker) isDataPacket_Value() {} @@ -2673,270 +2691,6 @@ func (*DataPacket_StreamChunk) isDataPacket_Value() {} func (*DataPacket_StreamTrailer) isDataPacket_Value() {} -func (*DataPacket_EncryptedPacket) isDataPacket_Value() {} - -type EncryptedPacket struct { - state protoimpl.MessageState `protogen:"open.v1"` - EncryptionType Encryption_Type `protobuf:"varint,1,opt,name=encryption_type,json=encryptionType,proto3,enum=livekit.Encryption_Type" json:"encryption_type,omitempty"` - Iv []byte `protobuf:"bytes,2,opt,name=iv,proto3" json:"iv,omitempty"` - KeyIndex uint32 `protobuf:"varint,3,opt,name=key_index,json=keyIndex,proto3" json:"key_index,omitempty"` - EncryptedValue []byte `protobuf:"bytes,4,opt,name=encrypted_value,json=encryptedValue,proto3" json:"encrypted_value,omitempty"` // This is an encrypted EncryptedPacketPayload message representation - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *EncryptedPacket) Reset() { - *x = EncryptedPacket{} - mi := &file_livekit_models_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *EncryptedPacket) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*EncryptedPacket) ProtoMessage() {} - -func (x *EncryptedPacket) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[12] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use EncryptedPacket.ProtoReflect.Descriptor instead. -func (*EncryptedPacket) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{12} -} - -func (x *EncryptedPacket) GetEncryptionType() Encryption_Type { - if x != nil { - return x.EncryptionType - } - return Encryption_NONE -} - -func (x *EncryptedPacket) GetIv() []byte { - if x != nil { - return x.Iv - } - return nil -} - -func (x *EncryptedPacket) GetKeyIndex() uint32 { - if x != nil { - return x.KeyIndex - } - return 0 -} - -func (x *EncryptedPacket) GetEncryptedValue() []byte { - if x != nil { - return x.EncryptedValue - } - return nil -} - -type EncryptedPacketPayload struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Types that are valid to be assigned to Value: - // - // *EncryptedPacketPayload_User - // *EncryptedPacketPayload_Metrics - // *EncryptedPacketPayload_ChatMessage - // *EncryptedPacketPayload_RpcRequest - // *EncryptedPacketPayload_RpcAck - // *EncryptedPacketPayload_RpcResponse - // *EncryptedPacketPayload_StreamHeader - // *EncryptedPacketPayload_StreamChunk - // *EncryptedPacketPayload_StreamTrailer - Value isEncryptedPacketPayload_Value `protobuf_oneof:"value"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *EncryptedPacketPayload) Reset() { - *x = EncryptedPacketPayload{} - mi := &file_livekit_models_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *EncryptedPacketPayload) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*EncryptedPacketPayload) ProtoMessage() {} - -func (x *EncryptedPacketPayload) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[13] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use EncryptedPacketPayload.ProtoReflect.Descriptor instead. -func (*EncryptedPacketPayload) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{13} -} - -func (x *EncryptedPacketPayload) GetValue() isEncryptedPacketPayload_Value { - if x != nil { - return x.Value - } - return nil -} - -func (x *EncryptedPacketPayload) GetUser() *UserPacket { - if x != nil { - if x, ok := x.Value.(*EncryptedPacketPayload_User); ok { - return x.User - } - } - return nil -} - -func (x *EncryptedPacketPayload) GetMetrics() *MetricsBatch { - if x != nil { - if x, ok := x.Value.(*EncryptedPacketPayload_Metrics); ok { - return x.Metrics - } - } - return nil -} - -func (x *EncryptedPacketPayload) GetChatMessage() *ChatMessage { - if x != nil { - if x, ok := x.Value.(*EncryptedPacketPayload_ChatMessage); ok { - return x.ChatMessage - } - } - return nil -} - -func (x *EncryptedPacketPayload) GetRpcRequest() *RpcRequest { - if x != nil { - if x, ok := x.Value.(*EncryptedPacketPayload_RpcRequest); ok { - return x.RpcRequest - } - } - return nil -} - -func (x *EncryptedPacketPayload) GetRpcAck() *RpcAck { - if x != nil { - if x, ok := x.Value.(*EncryptedPacketPayload_RpcAck); ok { - return x.RpcAck - } - } - return nil -} - -func (x *EncryptedPacketPayload) GetRpcResponse() *RpcResponse { - if x != nil { - if x, ok := x.Value.(*EncryptedPacketPayload_RpcResponse); ok { - return x.RpcResponse - } - } - return nil -} - -func (x *EncryptedPacketPayload) GetStreamHeader() *DataStream_Header { - if x != nil { - if x, ok := x.Value.(*EncryptedPacketPayload_StreamHeader); ok { - return x.StreamHeader - } - } - return nil -} - -func (x *EncryptedPacketPayload) GetStreamChunk() *DataStream_Chunk { - if x != nil { - if x, ok := x.Value.(*EncryptedPacketPayload_StreamChunk); ok { - return x.StreamChunk - } - } - return nil -} - -func (x *EncryptedPacketPayload) GetStreamTrailer() *DataStream_Trailer { - if x != nil { - if x, ok := x.Value.(*EncryptedPacketPayload_StreamTrailer); ok { - return x.StreamTrailer - } - } - return nil -} - -type isEncryptedPacketPayload_Value interface { - isEncryptedPacketPayload_Value() -} - -type EncryptedPacketPayload_User struct { - User *UserPacket `protobuf:"bytes,1,opt,name=user,proto3,oneof"` -} - -type EncryptedPacketPayload_Metrics struct { - Metrics *MetricsBatch `protobuf:"bytes,2,opt,name=metrics,proto3,oneof"` -} - -type EncryptedPacketPayload_ChatMessage struct { - ChatMessage *ChatMessage `protobuf:"bytes,3,opt,name=chat_message,json=chatMessage,proto3,oneof"` -} - -type EncryptedPacketPayload_RpcRequest struct { - RpcRequest *RpcRequest `protobuf:"bytes,4,opt,name=rpc_request,json=rpcRequest,proto3,oneof"` -} - -type EncryptedPacketPayload_RpcAck struct { - RpcAck *RpcAck `protobuf:"bytes,5,opt,name=rpc_ack,json=rpcAck,proto3,oneof"` -} - -type EncryptedPacketPayload_RpcResponse struct { - RpcResponse *RpcResponse `protobuf:"bytes,6,opt,name=rpc_response,json=rpcResponse,proto3,oneof"` -} - -type EncryptedPacketPayload_StreamHeader struct { - StreamHeader *DataStream_Header `protobuf:"bytes,7,opt,name=stream_header,json=streamHeader,proto3,oneof"` -} - -type EncryptedPacketPayload_StreamChunk struct { - StreamChunk *DataStream_Chunk `protobuf:"bytes,8,opt,name=stream_chunk,json=streamChunk,proto3,oneof"` -} - -type EncryptedPacketPayload_StreamTrailer struct { - StreamTrailer *DataStream_Trailer `protobuf:"bytes,9,opt,name=stream_trailer,json=streamTrailer,proto3,oneof"` -} - -func (*EncryptedPacketPayload_User) isEncryptedPacketPayload_Value() {} - -func (*EncryptedPacketPayload_Metrics) isEncryptedPacketPayload_Value() {} - -func (*EncryptedPacketPayload_ChatMessage) isEncryptedPacketPayload_Value() {} - -func (*EncryptedPacketPayload_RpcRequest) isEncryptedPacketPayload_Value() {} - -func (*EncryptedPacketPayload_RpcAck) isEncryptedPacketPayload_Value() {} - -func (*EncryptedPacketPayload_RpcResponse) isEncryptedPacketPayload_Value() {} - -func (*EncryptedPacketPayload_StreamHeader) isEncryptedPacketPayload_Value() {} - -func (*EncryptedPacketPayload_StreamChunk) isEncryptedPacketPayload_Value() {} - -func (*EncryptedPacketPayload_StreamTrailer) isEncryptedPacketPayload_Value() {} - // Deprecated: Marked as deprecated in livekit_models.proto. type ActiveSpeakerUpdate struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -2947,7 +2701,7 @@ type ActiveSpeakerUpdate struct { func (x *ActiveSpeakerUpdate) Reset() { *x = ActiveSpeakerUpdate{} - mi := &file_livekit_models_proto_msgTypes[14] + mi := &file_livekit_models_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2959,7 +2713,7 @@ func (x *ActiveSpeakerUpdate) String() string { func (*ActiveSpeakerUpdate) ProtoMessage() {} func (x *ActiveSpeakerUpdate) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[14] + mi := &file_livekit_models_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2972,7 +2726,7 @@ func (x *ActiveSpeakerUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use ActiveSpeakerUpdate.ProtoReflect.Descriptor instead. func (*ActiveSpeakerUpdate) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{14} + return file_livekit_models_proto_rawDescGZIP(), []int{13} } func (x *ActiveSpeakerUpdate) GetSpeakers() []*SpeakerInfo { @@ -2995,7 +2749,7 @@ type SpeakerInfo struct { func (x *SpeakerInfo) Reset() { *x = SpeakerInfo{} - mi := &file_livekit_models_proto_msgTypes[15] + mi := &file_livekit_models_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3007,7 +2761,7 @@ func (x *SpeakerInfo) String() string { func (*SpeakerInfo) ProtoMessage() {} func (x *SpeakerInfo) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[15] + mi := &file_livekit_models_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3020,7 +2774,7 @@ func (x *SpeakerInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use SpeakerInfo.ProtoReflect.Descriptor instead. func (*SpeakerInfo) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{15} + return file_livekit_models_proto_rawDescGZIP(), []int{14} } func (x *SpeakerInfo) GetSid() string { @@ -3064,7 +2818,7 @@ type UserPacket struct { DestinationIdentities []string `protobuf:"bytes,6,rep,name=destination_identities,json=destinationIdentities,proto3" json:"destination_identities,omitempty"` // topic under which the message was published Topic *string `protobuf:"bytes,4,opt,name=topic,proto3,oneof" json:"topic,omitempty"` - // Unique ID to identify the message + // Unique ID to indentify the message Id *string `protobuf:"bytes,8,opt,name=id,proto3,oneof" json:"id,omitempty"` // start and end time allow relating the message to specific media time StartTime *uint64 `protobuf:"varint,9,opt,name=start_time,json=startTime,proto3,oneof" json:"start_time,omitempty"` @@ -3077,7 +2831,7 @@ type UserPacket struct { func (x *UserPacket) Reset() { *x = UserPacket{} - mi := &file_livekit_models_proto_msgTypes[16] + mi := &file_livekit_models_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3089,7 +2843,7 @@ func (x *UserPacket) String() string { func (*UserPacket) ProtoMessage() {} func (x *UserPacket) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[16] + mi := &file_livekit_models_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3102,7 +2856,7 @@ func (x *UserPacket) ProtoReflect() protoreflect.Message { // Deprecated: Use UserPacket.ProtoReflect.Descriptor instead. func (*UserPacket) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{16} + return file_livekit_models_proto_rawDescGZIP(), []int{15} } // Deprecated: Marked as deprecated in livekit_models.proto. @@ -3189,7 +2943,7 @@ type SipDTMF struct { func (x *SipDTMF) Reset() { *x = SipDTMF{} - mi := &file_livekit_models_proto_msgTypes[17] + mi := &file_livekit_models_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3201,7 +2955,7 @@ func (x *SipDTMF) String() string { func (*SipDTMF) ProtoMessage() {} func (x *SipDTMF) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[17] + mi := &file_livekit_models_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3214,7 +2968,7 @@ func (x *SipDTMF) ProtoReflect() protoreflect.Message { // Deprecated: Use SipDTMF.ProtoReflect.Descriptor instead. func (*SipDTMF) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{17} + return file_livekit_models_proto_rawDescGZIP(), []int{16} } func (x *SipDTMF) GetCode() uint32 { @@ -3243,7 +2997,7 @@ type Transcription struct { func (x *Transcription) Reset() { *x = Transcription{} - mi := &file_livekit_models_proto_msgTypes[18] + mi := &file_livekit_models_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3255,7 +3009,7 @@ func (x *Transcription) String() string { func (*Transcription) ProtoMessage() {} func (x *Transcription) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[18] + mi := &file_livekit_models_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3268,7 +3022,7 @@ func (x *Transcription) ProtoReflect() protoreflect.Message { // Deprecated: Use Transcription.ProtoReflect.Descriptor instead. func (*Transcription) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{18} + return file_livekit_models_proto_rawDescGZIP(), []int{17} } func (x *Transcription) GetTranscribedParticipantIdentity() string { @@ -3306,7 +3060,7 @@ type TranscriptionSegment struct { func (x *TranscriptionSegment) Reset() { *x = TranscriptionSegment{} - mi := &file_livekit_models_proto_msgTypes[19] + mi := &file_livekit_models_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3318,7 +3072,7 @@ func (x *TranscriptionSegment) String() string { func (*TranscriptionSegment) ProtoMessage() {} func (x *TranscriptionSegment) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[19] + mi := &file_livekit_models_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3331,7 +3085,7 @@ func (x *TranscriptionSegment) ProtoReflect() protoreflect.Message { // Deprecated: Use TranscriptionSegment.ProtoReflect.Descriptor instead. func (*TranscriptionSegment) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{19} + return file_livekit_models_proto_rawDescGZIP(), []int{18} } func (x *TranscriptionSegment) GetId() string { @@ -3390,7 +3144,7 @@ type ChatMessage struct { func (x *ChatMessage) Reset() { *x = ChatMessage{} - mi := &file_livekit_models_proto_msgTypes[20] + mi := &file_livekit_models_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3402,7 +3156,7 @@ func (x *ChatMessage) String() string { func (*ChatMessage) ProtoMessage() {} func (x *ChatMessage) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[20] + mi := &file_livekit_models_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3415,7 +3169,7 @@ func (x *ChatMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use ChatMessage.ProtoReflect.Descriptor instead. func (*ChatMessage) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{20} + return file_livekit_models_proto_rawDescGZIP(), []int{19} } func (x *ChatMessage) GetId() string { @@ -3473,7 +3227,7 @@ type RpcRequest struct { func (x *RpcRequest) Reset() { *x = RpcRequest{} - mi := &file_livekit_models_proto_msgTypes[21] + mi := &file_livekit_models_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3485,7 +3239,7 @@ func (x *RpcRequest) String() string { func (*RpcRequest) ProtoMessage() {} func (x *RpcRequest) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[21] + mi := &file_livekit_models_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3498,7 +3252,7 @@ func (x *RpcRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RpcRequest.ProtoReflect.Descriptor instead. func (*RpcRequest) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{21} + return file_livekit_models_proto_rawDescGZIP(), []int{20} } func (x *RpcRequest) GetId() string { @@ -3545,7 +3299,7 @@ type RpcAck struct { func (x *RpcAck) Reset() { *x = RpcAck{} - mi := &file_livekit_models_proto_msgTypes[22] + mi := &file_livekit_models_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3557,7 +3311,7 @@ func (x *RpcAck) String() string { func (*RpcAck) ProtoMessage() {} func (x *RpcAck) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[22] + mi := &file_livekit_models_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3570,7 +3324,7 @@ func (x *RpcAck) ProtoReflect() protoreflect.Message { // Deprecated: Use RpcAck.ProtoReflect.Descriptor instead. func (*RpcAck) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{22} + return file_livekit_models_proto_rawDescGZIP(), []int{21} } func (x *RpcAck) GetRequestId() string { @@ -3594,7 +3348,7 @@ type RpcResponse struct { func (x *RpcResponse) Reset() { *x = RpcResponse{} - mi := &file_livekit_models_proto_msgTypes[23] + mi := &file_livekit_models_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3606,7 +3360,7 @@ func (x *RpcResponse) String() string { func (*RpcResponse) ProtoMessage() {} func (x *RpcResponse) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[23] + mi := &file_livekit_models_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3619,7 +3373,7 @@ func (x *RpcResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RpcResponse.ProtoReflect.Descriptor instead. func (*RpcResponse) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{23} + return file_livekit_models_proto_rawDescGZIP(), []int{22} } func (x *RpcResponse) GetRequestId() string { @@ -3681,7 +3435,7 @@ type RpcError struct { func (x *RpcError) Reset() { *x = RpcError{} - mi := &file_livekit_models_proto_msgTypes[24] + mi := &file_livekit_models_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3693,7 +3447,7 @@ func (x *RpcError) String() string { func (*RpcError) ProtoMessage() {} func (x *RpcError) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[24] + mi := &file_livekit_models_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3706,7 +3460,7 @@ func (x *RpcError) ProtoReflect() protoreflect.Message { // Deprecated: Use RpcError.ProtoReflect.Descriptor instead. func (*RpcError) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{24} + return file_livekit_models_proto_rawDescGZIP(), []int{23} } func (x *RpcError) GetCode() uint32 { @@ -3741,7 +3495,7 @@ type ParticipantTracks struct { func (x *ParticipantTracks) Reset() { *x = ParticipantTracks{} - mi := &file_livekit_models_proto_msgTypes[25] + mi := &file_livekit_models_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3753,7 +3507,7 @@ func (x *ParticipantTracks) String() string { func (*ParticipantTracks) ProtoMessage() {} func (x *ParticipantTracks) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[25] + mi := &file_livekit_models_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3766,7 +3520,7 @@ func (x *ParticipantTracks) ProtoReflect() protoreflect.Message { // Deprecated: Use ParticipantTracks.ProtoReflect.Descriptor instead. func (*ParticipantTracks) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{25} + return file_livekit_models_proto_rawDescGZIP(), []int{24} } func (x *ParticipantTracks) GetParticipantSid() string { @@ -3800,7 +3554,7 @@ type ServerInfo struct { func (x *ServerInfo) Reset() { *x = ServerInfo{} - mi := &file_livekit_models_proto_msgTypes[26] + mi := &file_livekit_models_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3812,7 +3566,7 @@ func (x *ServerInfo) String() string { func (*ServerInfo) ProtoMessage() {} func (x *ServerInfo) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[26] + mi := &file_livekit_models_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3825,7 +3579,7 @@ func (x *ServerInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ServerInfo.ProtoReflect.Descriptor instead. func (*ServerInfo) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{26} + return file_livekit_models_proto_rawDescGZIP(), []int{25} } func (x *ServerInfo) GetEdition() ServerInfo_Edition { @@ -3900,7 +3654,7 @@ type ClientInfo struct { func (x *ClientInfo) Reset() { *x = ClientInfo{} - mi := &file_livekit_models_proto_msgTypes[27] + mi := &file_livekit_models_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3912,7 +3666,7 @@ func (x *ClientInfo) String() string { func (*ClientInfo) ProtoMessage() {} func (x *ClientInfo) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[27] + mi := &file_livekit_models_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3925,7 +3679,7 @@ func (x *ClientInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ClientInfo.ProtoReflect.Descriptor instead. func (*ClientInfo) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{27} + return file_livekit_models_proto_rawDescGZIP(), []int{26} } func (x *ClientInfo) GetSdk() ClientInfo_SDK { @@ -4019,7 +3773,7 @@ type ClientConfiguration struct { func (x *ClientConfiguration) Reset() { *x = ClientConfiguration{} - mi := &file_livekit_models_proto_msgTypes[28] + mi := &file_livekit_models_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4031,7 +3785,7 @@ func (x *ClientConfiguration) String() string { func (*ClientConfiguration) ProtoMessage() {} func (x *ClientConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[28] + mi := &file_livekit_models_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4044,7 +3798,7 @@ func (x *ClientConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use ClientConfiguration.ProtoReflect.Descriptor instead. func (*ClientConfiguration) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{28} + return file_livekit_models_proto_rawDescGZIP(), []int{27} } func (x *ClientConfiguration) GetVideo() *VideoConfiguration { @@ -4091,7 +3845,7 @@ type VideoConfiguration struct { func (x *VideoConfiguration) Reset() { *x = VideoConfiguration{} - mi := &file_livekit_models_proto_msgTypes[29] + mi := &file_livekit_models_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4103,7 +3857,7 @@ func (x *VideoConfiguration) String() string { func (*VideoConfiguration) ProtoMessage() {} func (x *VideoConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[29] + mi := &file_livekit_models_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4116,7 +3870,7 @@ func (x *VideoConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use VideoConfiguration.ProtoReflect.Descriptor instead. func (*VideoConfiguration) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{29} + return file_livekit_models_proto_rawDescGZIP(), []int{28} } func (x *VideoConfiguration) GetHardwareEncoder() ClientConfigSetting { @@ -4138,7 +3892,7 @@ type DisabledCodecs struct { func (x *DisabledCodecs) Reset() { *x = DisabledCodecs{} - mi := &file_livekit_models_proto_msgTypes[30] + mi := &file_livekit_models_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4150,7 +3904,7 @@ func (x *DisabledCodecs) String() string { func (*DisabledCodecs) ProtoMessage() {} func (x *DisabledCodecs) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[30] + mi := &file_livekit_models_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4163,7 +3917,7 @@ func (x *DisabledCodecs) ProtoReflect() protoreflect.Message { // Deprecated: Use DisabledCodecs.ProtoReflect.Descriptor instead. func (*DisabledCodecs) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{30} + return file_livekit_models_proto_rawDescGZIP(), []int{29} } func (x *DisabledCodecs) GetCodecs() []*Codec { @@ -4197,7 +3951,7 @@ type RTPDrift struct { func (x *RTPDrift) Reset() { *x = RTPDrift{} - mi := &file_livekit_models_proto_msgTypes[31] + mi := &file_livekit_models_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4209,7 +3963,7 @@ func (x *RTPDrift) String() string { func (*RTPDrift) ProtoMessage() {} func (x *RTPDrift) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[31] + mi := &file_livekit_models_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4222,7 +3976,7 @@ func (x *RTPDrift) ProtoReflect() protoreflect.Message { // Deprecated: Use RTPDrift.ProtoReflect.Descriptor instead. func (*RTPDrift) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{31} + return file_livekit_models_proto_rawDescGZIP(), []int{30} } func (x *RTPDrift) GetStartTime() *timestamppb.Timestamp { @@ -4341,7 +4095,7 @@ type RTPStats struct { func (x *RTPStats) Reset() { *x = RTPStats{} - mi := &file_livekit_models_proto_msgTypes[32] + mi := &file_livekit_models_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4353,7 +4107,7 @@ func (x *RTPStats) String() string { func (*RTPStats) ProtoMessage() {} func (x *RTPStats) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[32] + mi := &file_livekit_models_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4366,7 +4120,7 @@ func (x *RTPStats) ProtoReflect() protoreflect.Message { // Deprecated: Use RTPStats.ProtoReflect.Descriptor instead. func (*RTPStats) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{32} + return file_livekit_models_proto_rawDescGZIP(), []int{31} } func (x *RTPStats) GetStartTime() *timestamppb.Timestamp { @@ -4699,7 +4453,7 @@ type RTCPSenderReportState struct { func (x *RTCPSenderReportState) Reset() { *x = RTCPSenderReportState{} - mi := &file_livekit_models_proto_msgTypes[33] + mi := &file_livekit_models_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4711,7 +4465,7 @@ func (x *RTCPSenderReportState) String() string { func (*RTCPSenderReportState) ProtoMessage() {} func (x *RTCPSenderReportState) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[33] + mi := &file_livekit_models_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4724,7 +4478,7 @@ func (x *RTCPSenderReportState) ProtoReflect() protoreflect.Message { // Deprecated: Use RTCPSenderReportState.ProtoReflect.Descriptor instead. func (*RTCPSenderReportState) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{33} + return file_livekit_models_proto_rawDescGZIP(), []int{32} } func (x *RTCPSenderReportState) GetRtpTimestamp() uint32 { @@ -4795,7 +4549,7 @@ type RTPForwarderState struct { func (x *RTPForwarderState) Reset() { *x = RTPForwarderState{} - mi := &file_livekit_models_proto_msgTypes[34] + mi := &file_livekit_models_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4807,7 +4561,7 @@ func (x *RTPForwarderState) String() string { func (*RTPForwarderState) ProtoMessage() {} func (x *RTPForwarderState) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[34] + mi := &file_livekit_models_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4820,7 +4574,7 @@ func (x *RTPForwarderState) ProtoReflect() protoreflect.Message { // Deprecated: Use RTPForwarderState.ProtoReflect.Descriptor instead. func (*RTPForwarderState) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{34} + return file_livekit_models_proto_rawDescGZIP(), []int{33} } func (x *RTPForwarderState) GetStarted() bool { @@ -4912,7 +4666,7 @@ type RTPMungerState struct { func (x *RTPMungerState) Reset() { *x = RTPMungerState{} - mi := &file_livekit_models_proto_msgTypes[35] + mi := &file_livekit_models_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4924,7 +4678,7 @@ func (x *RTPMungerState) String() string { func (*RTPMungerState) ProtoMessage() {} func (x *RTPMungerState) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[35] + mi := &file_livekit_models_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4937,7 +4691,7 @@ func (x *RTPMungerState) ProtoReflect() protoreflect.Message { // Deprecated: Use RTPMungerState.ProtoReflect.Descriptor instead. func (*RTPMungerState) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{35} + return file_livekit_models_proto_rawDescGZIP(), []int{34} } func (x *RTPMungerState) GetExtLastSequenceNumber() uint64 { @@ -4997,7 +4751,7 @@ type VP8MungerState struct { func (x *VP8MungerState) Reset() { *x = VP8MungerState{} - mi := &file_livekit_models_proto_msgTypes[36] + mi := &file_livekit_models_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5009,7 +4763,7 @@ func (x *VP8MungerState) String() string { func (*VP8MungerState) ProtoMessage() {} func (x *VP8MungerState) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[36] + mi := &file_livekit_models_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5022,7 +4776,7 @@ func (x *VP8MungerState) ProtoReflect() protoreflect.Message { // Deprecated: Use VP8MungerState.ProtoReflect.Descriptor instead. func (*VP8MungerState) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{36} + return file_livekit_models_proto_rawDescGZIP(), []int{35} } func (x *VP8MungerState) GetExtLastPictureId() int32 { @@ -5084,7 +4838,7 @@ type TimedVersion struct { func (x *TimedVersion) Reset() { *x = TimedVersion{} - mi := &file_livekit_models_proto_msgTypes[37] + mi := &file_livekit_models_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5096,7 +4850,7 @@ func (x *TimedVersion) String() string { func (*TimedVersion) ProtoMessage() {} func (x *TimedVersion) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[37] + mi := &file_livekit_models_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5109,7 +4863,7 @@ func (x *TimedVersion) ProtoReflect() protoreflect.Message { // Deprecated: Use TimedVersion.ProtoReflect.Descriptor instead. func (*TimedVersion) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{37} + return file_livekit_models_proto_rawDescGZIP(), []int{36} } func (x *TimedVersion) GetUnixMicro() int64 { @@ -5134,7 +4888,7 @@ type DataStream struct { func (x *DataStream) Reset() { *x = DataStream{} - mi := &file_livekit_models_proto_msgTypes[38] + mi := &file_livekit_models_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5146,7 +4900,7 @@ func (x *DataStream) String() string { func (*DataStream) ProtoMessage() {} func (x *DataStream) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[38] + mi := &file_livekit_models_proto_msgTypes[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5159,7 +4913,7 @@ func (x *DataStream) ProtoReflect() protoreflect.Message { // Deprecated: Use DataStream.ProtoReflect.Descriptor instead. func (*DataStream) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{38} + return file_livekit_models_proto_rawDescGZIP(), []int{37} } type WebhookConfig struct { @@ -5172,7 +4926,7 @@ type WebhookConfig struct { func (x *WebhookConfig) Reset() { *x = WebhookConfig{} - mi := &file_livekit_models_proto_msgTypes[39] + mi := &file_livekit_models_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5184,7 +4938,7 @@ func (x *WebhookConfig) String() string { func (*WebhookConfig) ProtoMessage() {} func (x *WebhookConfig) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[39] + mi := &file_livekit_models_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5197,7 +4951,7 @@ func (x *WebhookConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use WebhookConfig.ProtoReflect.Descriptor instead. func (*WebhookConfig) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{39} + return file_livekit_models_proto_rawDescGZIP(), []int{38} } func (x *WebhookConfig) GetUrl() string { @@ -5228,7 +4982,7 @@ type DataStream_TextHeader struct { func (x *DataStream_TextHeader) Reset() { *x = DataStream_TextHeader{} - mi := &file_livekit_models_proto_msgTypes[42] + mi := &file_livekit_models_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5240,7 +4994,7 @@ func (x *DataStream_TextHeader) String() string { func (*DataStream_TextHeader) ProtoMessage() {} func (x *DataStream_TextHeader) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[42] + mi := &file_livekit_models_proto_msgTypes[41] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5253,7 +5007,7 @@ func (x *DataStream_TextHeader) ProtoReflect() protoreflect.Message { // Deprecated: Use DataStream_TextHeader.ProtoReflect.Descriptor instead. func (*DataStream_TextHeader) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{38, 0} + return file_livekit_models_proto_rawDescGZIP(), []int{37, 0} } func (x *DataStream_TextHeader) GetOperationType() DataStream_OperationType { @@ -5301,7 +5055,7 @@ type DataStream_ByteHeader struct { func (x *DataStream_ByteHeader) Reset() { *x = DataStream_ByteHeader{} - mi := &file_livekit_models_proto_msgTypes[43] + mi := &file_livekit_models_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5313,7 +5067,7 @@ func (x *DataStream_ByteHeader) String() string { func (*DataStream_ByteHeader) ProtoMessage() {} func (x *DataStream_ByteHeader) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[43] + mi := &file_livekit_models_proto_msgTypes[42] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5326,7 +5080,7 @@ func (x *DataStream_ByteHeader) ProtoReflect() protoreflect.Message { // Deprecated: Use DataStream_ByteHeader.ProtoReflect.Descriptor instead. func (*DataStream_ByteHeader) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{38, 1} + return file_livekit_models_proto_rawDescGZIP(), []int{37, 1} } func (x *DataStream_ByteHeader) GetName() string { @@ -5338,15 +5092,14 @@ func (x *DataStream_ByteHeader) GetName() string { // main DataStream.Header that contains a oneof for specific headers type DataStream_Header struct { - state protoimpl.MessageState `protogen:"open.v1"` - StreamId string `protobuf:"bytes,1,opt,name=stream_id,json=streamId,proto3" json:"stream_id,omitempty"` // unique identifier for this data stream - Timestamp int64 `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // using int64 for Unix timestamp - Topic string `protobuf:"bytes,3,opt,name=topic,proto3" json:"topic,omitempty"` - MimeType string `protobuf:"bytes,4,opt,name=mime_type,json=mimeType,proto3" json:"mime_type,omitempty"` - TotalLength *uint64 `protobuf:"varint,5,opt,name=total_length,json=totalLength,proto3,oneof" json:"total_length,omitempty"` // only populated for finite streams, if it's a stream of unknown size this stays empty - // Deprecated: Marked as deprecated in livekit_models.proto. - EncryptionType Encryption_Type `protobuf:"varint,7,opt,name=encryption_type,json=encryptionType,proto3,enum=livekit.Encryption_Type" json:"encryption_type,omitempty"` // this is set on the DataPacket - Attributes map[string]string `protobuf:"bytes,8,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // user defined attributes map that can carry additional info + state protoimpl.MessageState `protogen:"open.v1"` + StreamId string `protobuf:"bytes,1,opt,name=stream_id,json=streamId,proto3" json:"stream_id,omitempty"` // unique identifier for this data stream + Timestamp int64 `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // using int64 for Unix timestamp + Topic string `protobuf:"bytes,3,opt,name=topic,proto3" json:"topic,omitempty"` + MimeType string `protobuf:"bytes,4,opt,name=mime_type,json=mimeType,proto3" json:"mime_type,omitempty"` + TotalLength *uint64 `protobuf:"varint,5,opt,name=total_length,json=totalLength,proto3,oneof" json:"total_length,omitempty"` // only populated for finite streams, if it's a stream of unknown size this stays empty + EncryptionType Encryption_Type `protobuf:"varint,7,opt,name=encryption_type,json=encryptionType,proto3,enum=livekit.Encryption_Type" json:"encryption_type,omitempty"` // defaults to NONE + Attributes map[string]string `protobuf:"bytes,8,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // user defined attributes map that can carry additional info // oneof to choose between specific header types // // Types that are valid to be assigned to ContentHeader: @@ -5360,7 +5113,7 @@ type DataStream_Header struct { func (x *DataStream_Header) Reset() { *x = DataStream_Header{} - mi := &file_livekit_models_proto_msgTypes[44] + mi := &file_livekit_models_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5372,7 +5125,7 @@ func (x *DataStream_Header) String() string { func (*DataStream_Header) ProtoMessage() {} func (x *DataStream_Header) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[44] + mi := &file_livekit_models_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5385,7 +5138,7 @@ func (x *DataStream_Header) ProtoReflect() protoreflect.Message { // Deprecated: Use DataStream_Header.ProtoReflect.Descriptor instead. func (*DataStream_Header) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{38, 2} + return file_livekit_models_proto_rawDescGZIP(), []int{37, 2} } func (x *DataStream_Header) GetStreamId() string { @@ -5423,7 +5176,6 @@ func (x *DataStream_Header) GetTotalLength() uint64 { return 0 } -// Deprecated: Marked as deprecated in livekit_models.proto. func (x *DataStream_Header) GetEncryptionType() Encryption_Type { if x != nil { return x.EncryptionType @@ -5480,20 +5232,19 @@ func (*DataStream_Header_TextHeader) isDataStream_Header_ContentHeader() {} func (*DataStream_Header_ByteHeader) isDataStream_Header_ContentHeader() {} type DataStream_Chunk struct { - state protoimpl.MessageState `protogen:"open.v1"` - StreamId string `protobuf:"bytes,1,opt,name=stream_id,json=streamId,proto3" json:"stream_id,omitempty"` // unique identifier for this data stream to map it to the correct header - ChunkIndex uint64 `protobuf:"varint,2,opt,name=chunk_index,json=chunkIndex,proto3" json:"chunk_index,omitempty"` - Content []byte `protobuf:"bytes,3,opt,name=content,proto3" json:"content,omitempty"` // content as binary (bytes) - Version int32 `protobuf:"varint,4,opt,name=version,proto3" json:"version,omitempty"` // a version indicating that this chunk_index has been retroactively modified and the original one needs to be replaced - // Deprecated: Marked as deprecated in livekit_models.proto. - Iv []byte `protobuf:"bytes,5,opt,name=iv,proto3,oneof" json:"iv,omitempty"` // this is set on the DataPacket + state protoimpl.MessageState `protogen:"open.v1"` + StreamId string `protobuf:"bytes,1,opt,name=stream_id,json=streamId,proto3" json:"stream_id,omitempty"` // unique identifier for this data stream to map it to the correct header + ChunkIndex uint64 `protobuf:"varint,2,opt,name=chunk_index,json=chunkIndex,proto3" json:"chunk_index,omitempty"` + Content []byte `protobuf:"bytes,3,opt,name=content,proto3" json:"content,omitempty"` // content as binary (bytes) + Version int32 `protobuf:"varint,4,opt,name=version,proto3" json:"version,omitempty"` // a version indicating that this chunk_index has been retroactively modified and the original one needs to be replaced + Iv []byte `protobuf:"bytes,5,opt,name=iv,proto3,oneof" json:"iv,omitempty"` // optional, initialization vector for AES-GCM encryption unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *DataStream_Chunk) Reset() { *x = DataStream_Chunk{} - mi := &file_livekit_models_proto_msgTypes[45] + mi := &file_livekit_models_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5505,7 +5256,7 @@ func (x *DataStream_Chunk) String() string { func (*DataStream_Chunk) ProtoMessage() {} func (x *DataStream_Chunk) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[45] + mi := &file_livekit_models_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5518,7 +5269,7 @@ func (x *DataStream_Chunk) ProtoReflect() protoreflect.Message { // Deprecated: Use DataStream_Chunk.ProtoReflect.Descriptor instead. func (*DataStream_Chunk) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{38, 3} + return file_livekit_models_proto_rawDescGZIP(), []int{37, 3} } func (x *DataStream_Chunk) GetStreamId() string { @@ -5549,7 +5300,6 @@ func (x *DataStream_Chunk) GetVersion() int32 { return 0 } -// Deprecated: Marked as deprecated in livekit_models.proto. func (x *DataStream_Chunk) GetIv() []byte { if x != nil { return x.Iv @@ -5568,7 +5318,7 @@ type DataStream_Trailer struct { func (x *DataStream_Trailer) Reset() { *x = DataStream_Trailer{} - mi := &file_livekit_models_proto_msgTypes[46] + mi := &file_livekit_models_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5580,7 +5330,7 @@ func (x *DataStream_Trailer) String() string { func (*DataStream_Trailer) ProtoMessage() {} func (x *DataStream_Trailer) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[46] + mi := &file_livekit_models_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5593,7 +5343,7 @@ func (x *DataStream_Trailer) ProtoReflect() protoreflect.Message { // Deprecated: Use DataStream_Trailer.ProtoReflect.Descriptor instead. func (*DataStream_Trailer) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{38, 4} + return file_livekit_models_proto_rawDescGZIP(), []int{37, 4} } func (x *DataStream_Trailer) GetStreamId() string { @@ -5625,7 +5375,9 @@ const file_livekit_models_proto_rawDesc = "" + "\n" + "Pagination\x12\x19\n" + "\bafter_id\x18\x01 \x01(\tR\aafterId\x12\x14\n" + - "\x05limit\x18\x02 \x01(\x05R\x05limit\"X\n" + + "\x05limit\x18\x02 \x01(\x05R\x05limit\"'\n" + + "\x0fTokenPagination\x12\x14\n" + + "\x05token\x18\x01 \x01(\tR\x05token\"X\n" + "\n" + "ListUpdate\x12\x10\n" + "\x03set\x18\x01 \x03(\tR\x03set\x12\x10\n" + @@ -5717,14 +5469,13 @@ const file_livekit_models_proto_rawDesc = "" + "\x04NONE\x10\x00\x12\a\n" + "\x03GCM\x10\x01\x12\n" + "\n" + - "\x06CUSTOM\x10\x02\"\xdf\x01\n" + + "\x06CUSTOM\x10\x02\"\xc6\x01\n" + "\x12SimulcastCodecInfo\x12\x1b\n" + "\tmime_type\x18\x01 \x01(\tR\bmimeType\x12\x10\n" + "\x03mid\x18\x02 \x01(\tR\x03mid\x12\x10\n" + "\x03cid\x18\x03 \x01(\tR\x03cid\x12+\n" + "\x06layers\x18\x04 \x03(\v2\x13.livekit.VideoLayerR\x06layers\x12B\n" + - "\x10video_layer_mode\x18\x05 \x01(\x0e2\x18.livekit.VideoLayer.ModeR\x0evideoLayerMode\x12\x17\n" + - "\asdp_cid\x18\x06 \x01(\tR\x06sdpCid\"\xfe\x05\n" + + "\x10video_layer_mode\x18\x05 \x01(\x0e2\x18.livekit.VideoLayer.ModeR\x0evideoLayerMode\"\xfe\x05\n" + "\tTrackInfo\x12\x10\n" + "\x03sid\x18\x01 \x01(\tR\x03sid\x12&\n" + "\x04type\x18\x02 \x01(\x0e2\x12.livekit.TrackTypeR\x04type\x12\x12\n" + @@ -5763,7 +5514,7 @@ const file_livekit_models_proto_rawDesc = "" + "\x04Mode\x12\x0f\n" + "\vMODE_UNUSED\x10\x00\x12 \n" + "\x1cONE_SPATIAL_LAYER_PER_STREAM\x10\x01\x12&\n" + - "\"MULTIPLE_SPATIAL_LAYERS_PER_STREAM\x10\x02\"\x8c\b\n" + + "\"MULTIPLE_SPATIAL_LAYERS_PER_STREAM\x10\x02\"\xc5\a\n" + "\n" + "DataPacket\x120\n" + "\x04kind\x18\x01 \x01(\x0e2\x18.livekit.DataPacket.KindB\x02\x18\x01R\x04kind\x121\n" + @@ -5782,30 +5533,12 @@ const file_livekit_models_proto_rawDesc = "" + "\frpc_response\x18\f \x01(\v2\x14.livekit.RpcResponseH\x00R\vrpcResponse\x12A\n" + "\rstream_header\x18\r \x01(\v2\x1a.livekit.DataStream.HeaderH\x00R\fstreamHeader\x12>\n" + "\fstream_chunk\x18\x0e \x01(\v2\x19.livekit.DataStream.ChunkH\x00R\vstreamChunk\x12D\n" + - "\x0estream_trailer\x18\x0f \x01(\v2\x1b.livekit.DataStream.TrailerH\x00R\rstreamTrailer\x12E\n" + - "\x10encrypted_packet\x18\x12 \x01(\v2\x18.livekit.EncryptedPacketH\x00R\x0fencryptedPacket\x12\x1a\n" + + "\x0estream_trailer\x18\x0f \x01(\v2\x1b.livekit.DataStream.TrailerH\x00R\rstreamTrailer\x12\x1a\n" + "\bsequence\x18\x10 \x01(\rR\bsequence\x12'\n" + "\x0fparticipant_sid\x18\x11 \x01(\tR\x0eparticipantSid\"\x1f\n" + "\x04Kind\x12\f\n" + "\bRELIABLE\x10\x00\x12\t\n" + "\x05LOSSY\x10\x01B\a\n" + - "\x05value\"\xaa\x01\n" + - "\x0fEncryptedPacket\x12A\n" + - "\x0fencryption_type\x18\x01 \x01(\x0e2\x18.livekit.Encryption.TypeR\x0eencryptionType\x12\x0e\n" + - "\x02iv\x18\x02 \x01(\fR\x02iv\x12\x1b\n" + - "\tkey_index\x18\x03 \x01(\rR\bkeyIndex\x12'\n" + - "\x0fencrypted_value\x18\x04 \x01(\fR\x0eencryptedValue\"\xa2\x04\n" + - "\x16EncryptedPacketPayload\x12)\n" + - "\x04user\x18\x01 \x01(\v2\x13.livekit.UserPacketH\x00R\x04user\x121\n" + - "\ametrics\x18\x02 \x01(\v2\x15.livekit.MetricsBatchH\x00R\ametrics\x129\n" + - "\fchat_message\x18\x03 \x01(\v2\x14.livekit.ChatMessageH\x00R\vchatMessage\x126\n" + - "\vrpc_request\x18\x04 \x01(\v2\x13.livekit.RpcRequestH\x00R\n" + - "rpcRequest\x12*\n" + - "\arpc_ack\x18\x05 \x01(\v2\x0f.livekit.RpcAckH\x00R\x06rpcAck\x129\n" + - "\frpc_response\x18\x06 \x01(\v2\x14.livekit.RpcResponseH\x00R\vrpcResponse\x12A\n" + - "\rstream_header\x18\a \x01(\v2\x1a.livekit.DataStream.HeaderH\x00R\fstreamHeader\x12>\n" + - "\fstream_chunk\x18\b \x01(\v2\x19.livekit.DataStream.ChunkH\x00R\vstreamChunk\x12D\n" + - "\x0estream_trailer\x18\t \x01(\v2\x1b.livekit.DataStream.TrailerH\x00R\rstreamTrailerB\a\n" + "\x05value\"K\n" + "\x13ActiveSpeakerUpdate\x120\n" + "\bspeakers\x18\x01 \x03(\v2\x14.livekit.SpeakerInfoR\bspeakers:\x02\x18\x01\"M\n" + @@ -6049,7 +5782,7 @@ const file_livekit_models_proto_rawDesc = "" + "\fTimedVersion\x12\x1d\n" + "\n" + "unix_micro\x18\x01 \x01(\x03R\tunixMicro\x12\x14\n" + - "\x05ticks\x18\x02 \x01(\x05R\x05ticks\"\xe4\t\n" + + "\x05ticks\x18\x02 \x01(\x05R\x05ticks\"\xdc\t\n" + "\n" + "DataStream\x1a\xeb\x01\n" + "\n" + @@ -6061,14 +5794,14 @@ const file_livekit_models_proto_rawDesc = "" + "\tgenerated\x18\x05 \x01(\bR\tgenerated\x1a \n" + "\n" + "ByteHeader\x12\x12\n" + - "\x04name\x18\x01 \x01(\tR\x04name\x1a\x99\x04\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x1a\x95\x04\n" + "\x06Header\x12\x1b\n" + "\tstream_id\x18\x01 \x01(\tR\bstreamId\x12\x1c\n" + "\ttimestamp\x18\x02 \x01(\x03R\ttimestamp\x12\x14\n" + "\x05topic\x18\x03 \x01(\tR\x05topic\x12\x1b\n" + "\tmime_type\x18\x04 \x01(\tR\bmimeType\x12&\n" + - "\ftotal_length\x18\x05 \x01(\x04H\x01R\vtotalLength\x88\x01\x01\x12E\n" + - "\x0fencryption_type\x18\a \x01(\x0e2\x18.livekit.Encryption.TypeB\x02\x18\x01R\x0eencryptionType\x12J\n" + + "\ftotal_length\x18\x05 \x01(\x04H\x01R\vtotalLength\x88\x01\x01\x12A\n" + + "\x0fencryption_type\x18\a \x01(\x0e2\x18.livekit.Encryption.TypeR\x0eencryptionType\x12J\n" + "\n" + "attributes\x18\b \x03(\v2*.livekit.DataStream.Header.AttributesEntryR\n" + "attributes\x12A\n" + @@ -6081,14 +5814,14 @@ const file_livekit_models_proto_rawDesc = "" + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\x10\n" + "\x0econtent_headerB\x0f\n" + - "\r_total_length\x1a\x99\x01\n" + + "\r_total_length\x1a\x95\x01\n" + "\x05Chunk\x12\x1b\n" + "\tstream_id\x18\x01 \x01(\tR\bstreamId\x12\x1f\n" + "\vchunk_index\x18\x02 \x01(\x04R\n" + "chunkIndex\x12\x18\n" + "\acontent\x18\x03 \x01(\fR\acontent\x12\x18\n" + - "\aversion\x18\x04 \x01(\x05R\aversion\x12\x17\n" + - "\x02iv\x18\x05 \x01(\fB\x02\x18\x01H\x00R\x02iv\x88\x01\x01B\x05\n" + + "\aversion\x18\x04 \x01(\x05R\aversion\x12\x13\n" + + "\x02iv\x18\x05 \x01(\fH\x00R\x02iv\x88\x01\x01B\x05\n" + "\x03_iv\x1a\xca\x01\n" + "\aTrailer\x12\x1b\n" + "\tstream_id\x18\x01 \x01(\tR\bstreamId\x12\x16\n" + @@ -6214,7 +5947,7 @@ func file_livekit_models_proto_rawDescGZIP() []byte { } var file_livekit_models_proto_enumTypes = make([]protoimpl.EnumInfo, 22) -var file_livekit_models_proto_msgTypes = make([]protoimpl.MessageInfo, 49) +var file_livekit_models_proto_msgTypes = make([]protoimpl.MessageInfo, 48) var file_livekit_models_proto_goTypes = []any{ (AudioCodec)(0), // 0: livekit.AudioCodec (VideoCodec)(0), // 1: livekit.VideoCodec @@ -6239,143 +5972,131 @@ var file_livekit_models_proto_goTypes = []any{ (ClientInfo_SDK)(0), // 20: livekit.ClientInfo.SDK (DataStream_OperationType)(0), // 21: livekit.DataStream.OperationType (*Pagination)(nil), // 22: livekit.Pagination - (*ListUpdate)(nil), // 23: livekit.ListUpdate - (*Room)(nil), // 24: livekit.Room - (*Codec)(nil), // 25: livekit.Codec - (*PlayoutDelay)(nil), // 26: livekit.PlayoutDelay - (*ParticipantPermission)(nil), // 27: livekit.ParticipantPermission - (*ParticipantInfo)(nil), // 28: livekit.ParticipantInfo - (*Encryption)(nil), // 29: livekit.Encryption - (*SimulcastCodecInfo)(nil), // 30: livekit.SimulcastCodecInfo - (*TrackInfo)(nil), // 31: livekit.TrackInfo - (*VideoLayer)(nil), // 32: livekit.VideoLayer - (*DataPacket)(nil), // 33: livekit.DataPacket - (*EncryptedPacket)(nil), // 34: livekit.EncryptedPacket - (*EncryptedPacketPayload)(nil), // 35: livekit.EncryptedPacketPayload - (*ActiveSpeakerUpdate)(nil), // 36: livekit.ActiveSpeakerUpdate - (*SpeakerInfo)(nil), // 37: livekit.SpeakerInfo - (*UserPacket)(nil), // 38: livekit.UserPacket - (*SipDTMF)(nil), // 39: livekit.SipDTMF - (*Transcription)(nil), // 40: livekit.Transcription - (*TranscriptionSegment)(nil), // 41: livekit.TranscriptionSegment - (*ChatMessage)(nil), // 42: livekit.ChatMessage - (*RpcRequest)(nil), // 43: livekit.RpcRequest - (*RpcAck)(nil), // 44: livekit.RpcAck - (*RpcResponse)(nil), // 45: livekit.RpcResponse - (*RpcError)(nil), // 46: livekit.RpcError - (*ParticipantTracks)(nil), // 47: livekit.ParticipantTracks - (*ServerInfo)(nil), // 48: livekit.ServerInfo - (*ClientInfo)(nil), // 49: livekit.ClientInfo - (*ClientConfiguration)(nil), // 50: livekit.ClientConfiguration - (*VideoConfiguration)(nil), // 51: livekit.VideoConfiguration - (*DisabledCodecs)(nil), // 52: livekit.DisabledCodecs - (*RTPDrift)(nil), // 53: livekit.RTPDrift - (*RTPStats)(nil), // 54: livekit.RTPStats - (*RTCPSenderReportState)(nil), // 55: livekit.RTCPSenderReportState - (*RTPForwarderState)(nil), // 56: livekit.RTPForwarderState - (*RTPMungerState)(nil), // 57: livekit.RTPMungerState - (*VP8MungerState)(nil), // 58: livekit.VP8MungerState - (*TimedVersion)(nil), // 59: livekit.TimedVersion - (*DataStream)(nil), // 60: livekit.DataStream - (*WebhookConfig)(nil), // 61: livekit.WebhookConfig - nil, // 62: livekit.ParticipantInfo.AttributesEntry - nil, // 63: livekit.RTPStats.GapHistogramEntry - (*DataStream_TextHeader)(nil), // 64: livekit.DataStream.TextHeader - (*DataStream_ByteHeader)(nil), // 65: livekit.DataStream.ByteHeader - (*DataStream_Header)(nil), // 66: livekit.DataStream.Header - (*DataStream_Chunk)(nil), // 67: livekit.DataStream.Chunk - (*DataStream_Trailer)(nil), // 68: livekit.DataStream.Trailer - nil, // 69: livekit.DataStream.Header.AttributesEntry - nil, // 70: livekit.DataStream.Trailer.AttributesEntry - (*MetricsBatch)(nil), // 71: livekit.MetricsBatch - (*timestamppb.Timestamp)(nil), // 72: google.protobuf.Timestamp + (*TokenPagination)(nil), // 23: livekit.TokenPagination + (*ListUpdate)(nil), // 24: livekit.ListUpdate + (*Room)(nil), // 25: livekit.Room + (*Codec)(nil), // 26: livekit.Codec + (*PlayoutDelay)(nil), // 27: livekit.PlayoutDelay + (*ParticipantPermission)(nil), // 28: livekit.ParticipantPermission + (*ParticipantInfo)(nil), // 29: livekit.ParticipantInfo + (*Encryption)(nil), // 30: livekit.Encryption + (*SimulcastCodecInfo)(nil), // 31: livekit.SimulcastCodecInfo + (*TrackInfo)(nil), // 32: livekit.TrackInfo + (*VideoLayer)(nil), // 33: livekit.VideoLayer + (*DataPacket)(nil), // 34: livekit.DataPacket + (*ActiveSpeakerUpdate)(nil), // 35: livekit.ActiveSpeakerUpdate + (*SpeakerInfo)(nil), // 36: livekit.SpeakerInfo + (*UserPacket)(nil), // 37: livekit.UserPacket + (*SipDTMF)(nil), // 38: livekit.SipDTMF + (*Transcription)(nil), // 39: livekit.Transcription + (*TranscriptionSegment)(nil), // 40: livekit.TranscriptionSegment + (*ChatMessage)(nil), // 41: livekit.ChatMessage + (*RpcRequest)(nil), // 42: livekit.RpcRequest + (*RpcAck)(nil), // 43: livekit.RpcAck + (*RpcResponse)(nil), // 44: livekit.RpcResponse + (*RpcError)(nil), // 45: livekit.RpcError + (*ParticipantTracks)(nil), // 46: livekit.ParticipantTracks + (*ServerInfo)(nil), // 47: livekit.ServerInfo + (*ClientInfo)(nil), // 48: livekit.ClientInfo + (*ClientConfiguration)(nil), // 49: livekit.ClientConfiguration + (*VideoConfiguration)(nil), // 50: livekit.VideoConfiguration + (*DisabledCodecs)(nil), // 51: livekit.DisabledCodecs + (*RTPDrift)(nil), // 52: livekit.RTPDrift + (*RTPStats)(nil), // 53: livekit.RTPStats + (*RTCPSenderReportState)(nil), // 54: livekit.RTCPSenderReportState + (*RTPForwarderState)(nil), // 55: livekit.RTPForwarderState + (*RTPMungerState)(nil), // 56: livekit.RTPMungerState + (*VP8MungerState)(nil), // 57: livekit.VP8MungerState + (*TimedVersion)(nil), // 58: livekit.TimedVersion + (*DataStream)(nil), // 59: livekit.DataStream + (*WebhookConfig)(nil), // 60: livekit.WebhookConfig + nil, // 61: livekit.ParticipantInfo.AttributesEntry + nil, // 62: livekit.RTPStats.GapHistogramEntry + (*DataStream_TextHeader)(nil), // 63: livekit.DataStream.TextHeader + (*DataStream_ByteHeader)(nil), // 64: livekit.DataStream.ByteHeader + (*DataStream_Header)(nil), // 65: livekit.DataStream.Header + (*DataStream_Chunk)(nil), // 66: livekit.DataStream.Chunk + (*DataStream_Trailer)(nil), // 67: livekit.DataStream.Trailer + nil, // 68: livekit.DataStream.Header.AttributesEntry + nil, // 69: livekit.DataStream.Trailer.AttributesEntry + (*MetricsBatch)(nil), // 70: livekit.MetricsBatch + (*timestamppb.Timestamp)(nil), // 71: google.protobuf.Timestamp } var file_livekit_models_proto_depIdxs = []int32{ - 25, // 0: livekit.Room.enabled_codecs:type_name -> livekit.Codec - 59, // 1: livekit.Room.version:type_name -> livekit.TimedVersion + 26, // 0: livekit.Room.enabled_codecs:type_name -> livekit.Codec + 58, // 1: livekit.Room.version:type_name -> livekit.TimedVersion 5, // 2: livekit.ParticipantPermission.can_publish_sources:type_name -> livekit.TrackSource 13, // 3: livekit.ParticipantInfo.state:type_name -> livekit.ParticipantInfo.State - 31, // 4: livekit.ParticipantInfo.tracks:type_name -> livekit.TrackInfo - 27, // 5: livekit.ParticipantInfo.permission:type_name -> livekit.ParticipantPermission + 32, // 4: livekit.ParticipantInfo.tracks:type_name -> livekit.TrackInfo + 28, // 5: livekit.ParticipantInfo.permission:type_name -> livekit.ParticipantPermission 14, // 6: livekit.ParticipantInfo.kind:type_name -> livekit.ParticipantInfo.Kind - 62, // 7: livekit.ParticipantInfo.attributes:type_name -> livekit.ParticipantInfo.AttributesEntry + 61, // 7: livekit.ParticipantInfo.attributes:type_name -> livekit.ParticipantInfo.AttributesEntry 9, // 8: livekit.ParticipantInfo.disconnect_reason:type_name -> livekit.DisconnectReason 15, // 9: livekit.ParticipantInfo.kind_details:type_name -> livekit.ParticipantInfo.KindDetail - 32, // 10: livekit.SimulcastCodecInfo.layers:type_name -> livekit.VideoLayer + 33, // 10: livekit.SimulcastCodecInfo.layers:type_name -> livekit.VideoLayer 17, // 11: livekit.SimulcastCodecInfo.video_layer_mode:type_name -> livekit.VideoLayer.Mode 4, // 12: livekit.TrackInfo.type:type_name -> livekit.TrackType 5, // 13: livekit.TrackInfo.source:type_name -> livekit.TrackSource - 32, // 14: livekit.TrackInfo.layers:type_name -> livekit.VideoLayer - 30, // 15: livekit.TrackInfo.codecs:type_name -> livekit.SimulcastCodecInfo + 33, // 14: livekit.TrackInfo.layers:type_name -> livekit.VideoLayer + 31, // 15: livekit.TrackInfo.codecs:type_name -> livekit.SimulcastCodecInfo 16, // 16: livekit.TrackInfo.encryption:type_name -> livekit.Encryption.Type - 59, // 17: livekit.TrackInfo.version:type_name -> livekit.TimedVersion + 58, // 17: livekit.TrackInfo.version:type_name -> livekit.TimedVersion 12, // 18: livekit.TrackInfo.audio_features:type_name -> livekit.AudioTrackFeature 3, // 19: livekit.TrackInfo.backup_codec_policy:type_name -> livekit.BackupCodecPolicy 6, // 20: livekit.VideoLayer.quality:type_name -> livekit.VideoQuality 18, // 21: livekit.DataPacket.kind:type_name -> livekit.DataPacket.Kind - 38, // 22: livekit.DataPacket.user:type_name -> livekit.UserPacket - 36, // 23: livekit.DataPacket.speaker:type_name -> livekit.ActiveSpeakerUpdate - 39, // 24: livekit.DataPacket.sip_dtmf:type_name -> livekit.SipDTMF - 40, // 25: livekit.DataPacket.transcription:type_name -> livekit.Transcription - 71, // 26: livekit.DataPacket.metrics:type_name -> livekit.MetricsBatch - 42, // 27: livekit.DataPacket.chat_message:type_name -> livekit.ChatMessage - 43, // 28: livekit.DataPacket.rpc_request:type_name -> livekit.RpcRequest - 44, // 29: livekit.DataPacket.rpc_ack:type_name -> livekit.RpcAck - 45, // 30: livekit.DataPacket.rpc_response:type_name -> livekit.RpcResponse - 66, // 31: livekit.DataPacket.stream_header:type_name -> livekit.DataStream.Header - 67, // 32: livekit.DataPacket.stream_chunk:type_name -> livekit.DataStream.Chunk - 68, // 33: livekit.DataPacket.stream_trailer:type_name -> livekit.DataStream.Trailer - 34, // 34: livekit.DataPacket.encrypted_packet:type_name -> livekit.EncryptedPacket - 16, // 35: livekit.EncryptedPacket.encryption_type:type_name -> livekit.Encryption.Type - 38, // 36: livekit.EncryptedPacketPayload.user:type_name -> livekit.UserPacket - 71, // 37: livekit.EncryptedPacketPayload.metrics:type_name -> livekit.MetricsBatch - 42, // 38: livekit.EncryptedPacketPayload.chat_message:type_name -> livekit.ChatMessage - 43, // 39: livekit.EncryptedPacketPayload.rpc_request:type_name -> livekit.RpcRequest - 44, // 40: livekit.EncryptedPacketPayload.rpc_ack:type_name -> livekit.RpcAck - 45, // 41: livekit.EncryptedPacketPayload.rpc_response:type_name -> livekit.RpcResponse - 66, // 42: livekit.EncryptedPacketPayload.stream_header:type_name -> livekit.DataStream.Header - 67, // 43: livekit.EncryptedPacketPayload.stream_chunk:type_name -> livekit.DataStream.Chunk - 68, // 44: livekit.EncryptedPacketPayload.stream_trailer:type_name -> livekit.DataStream.Trailer - 37, // 45: livekit.ActiveSpeakerUpdate.speakers:type_name -> livekit.SpeakerInfo - 41, // 46: livekit.Transcription.segments:type_name -> livekit.TranscriptionSegment - 46, // 47: livekit.RpcResponse.error:type_name -> livekit.RpcError - 19, // 48: livekit.ServerInfo.edition:type_name -> livekit.ServerInfo.Edition - 20, // 49: livekit.ClientInfo.sdk:type_name -> livekit.ClientInfo.SDK - 51, // 50: livekit.ClientConfiguration.video:type_name -> livekit.VideoConfiguration - 51, // 51: livekit.ClientConfiguration.screen:type_name -> livekit.VideoConfiguration - 8, // 52: livekit.ClientConfiguration.resume_connection:type_name -> livekit.ClientConfigSetting - 52, // 53: livekit.ClientConfiguration.disabled_codecs:type_name -> livekit.DisabledCodecs - 8, // 54: livekit.ClientConfiguration.force_relay:type_name -> livekit.ClientConfigSetting - 8, // 55: livekit.VideoConfiguration.hardware_encoder:type_name -> livekit.ClientConfigSetting - 25, // 56: livekit.DisabledCodecs.codecs:type_name -> livekit.Codec - 25, // 57: livekit.DisabledCodecs.publish:type_name -> livekit.Codec - 72, // 58: livekit.RTPDrift.start_time:type_name -> google.protobuf.Timestamp - 72, // 59: livekit.RTPDrift.end_time:type_name -> google.protobuf.Timestamp - 72, // 60: livekit.RTPStats.start_time:type_name -> google.protobuf.Timestamp - 72, // 61: livekit.RTPStats.end_time:type_name -> google.protobuf.Timestamp - 63, // 62: livekit.RTPStats.gap_histogram:type_name -> livekit.RTPStats.GapHistogramEntry - 72, // 63: livekit.RTPStats.last_pli:type_name -> google.protobuf.Timestamp - 72, // 64: livekit.RTPStats.last_fir:type_name -> google.protobuf.Timestamp - 72, // 65: livekit.RTPStats.last_key_frame:type_name -> google.protobuf.Timestamp - 72, // 66: livekit.RTPStats.last_layer_lock_pli:type_name -> google.protobuf.Timestamp - 53, // 67: livekit.RTPStats.packet_drift:type_name -> livekit.RTPDrift - 53, // 68: livekit.RTPStats.ntp_report_drift:type_name -> livekit.RTPDrift - 53, // 69: livekit.RTPStats.rebased_report_drift:type_name -> livekit.RTPDrift - 53, // 70: livekit.RTPStats.received_report_drift:type_name -> livekit.RTPDrift - 57, // 71: livekit.RTPForwarderState.rtp_munger:type_name -> livekit.RTPMungerState - 58, // 72: livekit.RTPForwarderState.vp8_munger:type_name -> livekit.VP8MungerState - 55, // 73: livekit.RTPForwarderState.sender_report_state:type_name -> livekit.RTCPSenderReportState - 21, // 74: livekit.DataStream.TextHeader.operation_type:type_name -> livekit.DataStream.OperationType - 16, // 75: livekit.DataStream.Header.encryption_type:type_name -> livekit.Encryption.Type - 69, // 76: livekit.DataStream.Header.attributes:type_name -> livekit.DataStream.Header.AttributesEntry - 64, // 77: livekit.DataStream.Header.text_header:type_name -> livekit.DataStream.TextHeader - 65, // 78: livekit.DataStream.Header.byte_header:type_name -> livekit.DataStream.ByteHeader - 70, // 79: livekit.DataStream.Trailer.attributes:type_name -> livekit.DataStream.Trailer.AttributesEntry - 80, // [80:80] is the sub-list for method output_type - 80, // [80:80] is the sub-list for method input_type - 80, // [80:80] is the sub-list for extension type_name - 80, // [80:80] is the sub-list for extension extendee - 0, // [0:80] is the sub-list for field type_name + 37, // 22: livekit.DataPacket.user:type_name -> livekit.UserPacket + 35, // 23: livekit.DataPacket.speaker:type_name -> livekit.ActiveSpeakerUpdate + 38, // 24: livekit.DataPacket.sip_dtmf:type_name -> livekit.SipDTMF + 39, // 25: livekit.DataPacket.transcription:type_name -> livekit.Transcription + 70, // 26: livekit.DataPacket.metrics:type_name -> livekit.MetricsBatch + 41, // 27: livekit.DataPacket.chat_message:type_name -> livekit.ChatMessage + 42, // 28: livekit.DataPacket.rpc_request:type_name -> livekit.RpcRequest + 43, // 29: livekit.DataPacket.rpc_ack:type_name -> livekit.RpcAck + 44, // 30: livekit.DataPacket.rpc_response:type_name -> livekit.RpcResponse + 65, // 31: livekit.DataPacket.stream_header:type_name -> livekit.DataStream.Header + 66, // 32: livekit.DataPacket.stream_chunk:type_name -> livekit.DataStream.Chunk + 67, // 33: livekit.DataPacket.stream_trailer:type_name -> livekit.DataStream.Trailer + 36, // 34: livekit.ActiveSpeakerUpdate.speakers:type_name -> livekit.SpeakerInfo + 40, // 35: livekit.Transcription.segments:type_name -> livekit.TranscriptionSegment + 45, // 36: livekit.RpcResponse.error:type_name -> livekit.RpcError + 19, // 37: livekit.ServerInfo.edition:type_name -> livekit.ServerInfo.Edition + 20, // 38: livekit.ClientInfo.sdk:type_name -> livekit.ClientInfo.SDK + 50, // 39: livekit.ClientConfiguration.video:type_name -> livekit.VideoConfiguration + 50, // 40: livekit.ClientConfiguration.screen:type_name -> livekit.VideoConfiguration + 8, // 41: livekit.ClientConfiguration.resume_connection:type_name -> livekit.ClientConfigSetting + 51, // 42: livekit.ClientConfiguration.disabled_codecs:type_name -> livekit.DisabledCodecs + 8, // 43: livekit.ClientConfiguration.force_relay:type_name -> livekit.ClientConfigSetting + 8, // 44: livekit.VideoConfiguration.hardware_encoder:type_name -> livekit.ClientConfigSetting + 26, // 45: livekit.DisabledCodecs.codecs:type_name -> livekit.Codec + 26, // 46: livekit.DisabledCodecs.publish:type_name -> livekit.Codec + 71, // 47: livekit.RTPDrift.start_time:type_name -> google.protobuf.Timestamp + 71, // 48: livekit.RTPDrift.end_time:type_name -> google.protobuf.Timestamp + 71, // 49: livekit.RTPStats.start_time:type_name -> google.protobuf.Timestamp + 71, // 50: livekit.RTPStats.end_time:type_name -> google.protobuf.Timestamp + 62, // 51: livekit.RTPStats.gap_histogram:type_name -> livekit.RTPStats.GapHistogramEntry + 71, // 52: livekit.RTPStats.last_pli:type_name -> google.protobuf.Timestamp + 71, // 53: livekit.RTPStats.last_fir:type_name -> google.protobuf.Timestamp + 71, // 54: livekit.RTPStats.last_key_frame:type_name -> google.protobuf.Timestamp + 71, // 55: livekit.RTPStats.last_layer_lock_pli:type_name -> google.protobuf.Timestamp + 52, // 56: livekit.RTPStats.packet_drift:type_name -> livekit.RTPDrift + 52, // 57: livekit.RTPStats.ntp_report_drift:type_name -> livekit.RTPDrift + 52, // 58: livekit.RTPStats.rebased_report_drift:type_name -> livekit.RTPDrift + 52, // 59: livekit.RTPStats.received_report_drift:type_name -> livekit.RTPDrift + 56, // 60: livekit.RTPForwarderState.rtp_munger:type_name -> livekit.RTPMungerState + 57, // 61: livekit.RTPForwarderState.vp8_munger:type_name -> livekit.VP8MungerState + 54, // 62: livekit.RTPForwarderState.sender_report_state:type_name -> livekit.RTCPSenderReportState + 21, // 63: livekit.DataStream.TextHeader.operation_type:type_name -> livekit.DataStream.OperationType + 16, // 64: livekit.DataStream.Header.encryption_type:type_name -> livekit.Encryption.Type + 68, // 65: livekit.DataStream.Header.attributes:type_name -> livekit.DataStream.Header.AttributesEntry + 63, // 66: livekit.DataStream.Header.text_header:type_name -> livekit.DataStream.TextHeader + 64, // 67: livekit.DataStream.Header.byte_header:type_name -> livekit.DataStream.ByteHeader + 69, // 68: livekit.DataStream.Trailer.attributes:type_name -> livekit.DataStream.Trailer.AttributesEntry + 69, // [69:69] is the sub-list for method output_type + 69, // [69:69] is the sub-list for method input_type + 69, // [69:69] is the sub-list for extension type_name + 69, // [69:69] is the sub-list for extension extendee + 0, // [0:69] is the sub-list for field type_name } func init() { file_livekit_models_proto_init() } @@ -6384,7 +6105,7 @@ func file_livekit_models_proto_init() { return } file_livekit_metrics_proto_init() - file_livekit_models_proto_msgTypes[11].OneofWrappers = []any{ + file_livekit_models_proto_msgTypes[12].OneofWrappers = []any{ (*DataPacket_User)(nil), (*DataPacket_Speaker)(nil), (*DataPacket_SipDtmf)(nil), @@ -6397,40 +6118,28 @@ func file_livekit_models_proto_init() { (*DataPacket_StreamHeader)(nil), (*DataPacket_StreamChunk)(nil), (*DataPacket_StreamTrailer)(nil), - (*DataPacket_EncryptedPacket)(nil), - } - file_livekit_models_proto_msgTypes[13].OneofWrappers = []any{ - (*EncryptedPacketPayload_User)(nil), - (*EncryptedPacketPayload_Metrics)(nil), - (*EncryptedPacketPayload_ChatMessage)(nil), - (*EncryptedPacketPayload_RpcRequest)(nil), - (*EncryptedPacketPayload_RpcAck)(nil), - (*EncryptedPacketPayload_RpcResponse)(nil), - (*EncryptedPacketPayload_StreamHeader)(nil), - (*EncryptedPacketPayload_StreamChunk)(nil), - (*EncryptedPacketPayload_StreamTrailer)(nil), - } - file_livekit_models_proto_msgTypes[16].OneofWrappers = []any{} - file_livekit_models_proto_msgTypes[20].OneofWrappers = []any{} - file_livekit_models_proto_msgTypes[23].OneofWrappers = []any{ + } + file_livekit_models_proto_msgTypes[15].OneofWrappers = []any{} + file_livekit_models_proto_msgTypes[19].OneofWrappers = []any{} + file_livekit_models_proto_msgTypes[22].OneofWrappers = []any{ (*RpcResponse_Payload)(nil), (*RpcResponse_Error)(nil), } - file_livekit_models_proto_msgTypes[34].OneofWrappers = []any{ + file_livekit_models_proto_msgTypes[33].OneofWrappers = []any{ (*RTPForwarderState_Vp8Munger)(nil), } - file_livekit_models_proto_msgTypes[44].OneofWrappers = []any{ + file_livekit_models_proto_msgTypes[43].OneofWrappers = []any{ (*DataStream_Header_TextHeader)(nil), (*DataStream_Header_ByteHeader)(nil), } - file_livekit_models_proto_msgTypes[45].OneofWrappers = []any{} + file_livekit_models_proto_msgTypes[44].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_livekit_models_proto_rawDesc), len(file_livekit_models_proto_rawDesc)), NumEnums: 22, - NumMessages: 49, + NumMessages: 48, NumExtensions: 0, NumServices: 0, }, diff --git a/livekit/livekit_phone_number.pb.go b/livekit/livekit_phone_number.pb.go index ad2ce5743..e6af83116 100644 --- a/livekit/livekit_phone_number.pb.go +++ b/livekit/livekit_phone_number.pb.go @@ -10,6 +10,7 @@ import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" emptypb "google.golang.org/protobuf/types/known/emptypb" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" reflect "reflect" sync "sync" unsafe "unsafe" @@ -140,7 +141,7 @@ type ListPhoneNumberInventoryRequest struct { CountryCode string `protobuf:"bytes,1,opt,name=country_code,json=countryCode,proto3" json:"country_code,omitempty"` // Optional: Filter by country code (e.g., "US", "CA") AreaCode string `protobuf:"bytes,2,opt,name=area_code,json=areaCode,proto3" json:"area_code,omitempty"` // Optional: Filter by area code (e.g., "415") Limit int32 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit,omitempty"` // Optional: Maximum number of results (default: 50) - PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` // Optional: Token for pagination (empty for first page) + PageToken *TokenPagination `protobuf:"bytes,4,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` // Optional: Token for pagination (empty for first page) unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -196,18 +197,18 @@ func (x *ListPhoneNumberInventoryRequest) GetLimit() int32 { return 0 } -func (x *ListPhoneNumberInventoryRequest) GetPageToken() string { +func (x *ListPhoneNumberInventoryRequest) GetPageToken() *TokenPagination { if x != nil { return x.PageToken } - return "" + return nil } // ListPhoneNumberInventoryResponse - Response containing available phone numbers type ListPhoneNumberInventoryResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Items []*PhoneNumberInventoryItem `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` // List of available phone numbers - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` // Token for next page (empty if no more pages) + NextPageToken *TokenPagination `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` // Token for next page (empty if no more pages) unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -249,11 +250,11 @@ func (x *ListPhoneNumberInventoryResponse) GetItems() []*PhoneNumberInventoryIte return nil } -func (x *ListPhoneNumberInventoryResponse) GetNextPageToken() string { +func (x *ListPhoneNumberInventoryResponse) GetNextPageToken() *TokenPagination { if x != nil { return x.NextPageToken } - return "" + return nil } // PurchasePhoneNumberRequest - Request to purchase phone numbers @@ -350,7 +351,7 @@ func (x *PurchasePhoneNumberResponse) GetPhoneNumbers() []*PurchasedPhoneNumber type ListPurchasedPhoneNumbersRequest struct { state protoimpl.MessageState `protogen:"open.v1"` Limit int32 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"` // Optional: Maximum number of results (default: 50) - PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` // Optional: Token for pagination (empty for first page) + PageToken *TokenPagination `protobuf:"bytes,2,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` // Optional: Token for pagination (empty for first page) unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -392,18 +393,18 @@ func (x *ListPurchasedPhoneNumbersRequest) GetLimit() int32 { return 0 } -func (x *ListPurchasedPhoneNumbersRequest) GetPageToken() string { +func (x *ListPurchasedPhoneNumbersRequest) GetPageToken() *TokenPagination { if x != nil { return x.PageToken } - return "" + return nil } // ListPurchasedPhoneNumbersResponse - Response containing purchased phone numbers type ListPurchasedPhoneNumbersResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Items []*PurchasedPhoneNumber `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` // List of purchased phone numbers - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` // Token for next page (empty if no more pages) + NextPageToken *TokenPagination `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` // Token for next page (empty if no more pages) TotalCount int32 `protobuf:"varint,3,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty"` // Total number of purchased phone numbers unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache @@ -446,11 +447,11 @@ func (x *ListPurchasedPhoneNumbersResponse) GetItems() []*PurchasedPhoneNumber { return nil } -func (x *ListPurchasedPhoneNumbersResponse) GetNextPageToken() string { +func (x *ListPurchasedPhoneNumbersResponse) GetNextPageToken() *TokenPagination { if x != nil { return x.NextPageToken } - return "" + return nil } func (x *ListPurchasedPhoneNumbersResponse) GetTotalCount() int32 { @@ -516,8 +517,8 @@ type GlobalPhoneNumber struct { Locality string `protobuf:"bytes,6,opt,name=locality,proto3" json:"locality,omitempty"` // City/locality (e.g., "San Francisco") Region string `protobuf:"bytes,7,opt,name=region,proto3" json:"region,omitempty"` // State/region (e.g., "CA") SpamScore int64 `protobuf:"varint,8,opt,name=spam_score,json=spamScore,proto3" json:"spam_score,omitempty"` // can be used later for fraud detection - CreatedAt int64 `protobuf:"varint,9,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` // timestamp when created - UpdatedAt int64 `protobuf:"varint,10,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` // timestamp when updated + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` // timestamp when created + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` // timestamp when updated unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -608,18 +609,18 @@ func (x *GlobalPhoneNumber) GetSpamScore() int64 { return 0 } -func (x *GlobalPhoneNumber) GetCreatedAt() int64 { +func (x *GlobalPhoneNumber) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt } - return 0 + return nil } -func (x *GlobalPhoneNumber) GetUpdatedAt() int64 { +func (x *GlobalPhoneNumber) GetUpdatedAt() *timestamppb.Timestamp { if x != nil { return x.UpdatedAt } - return 0 + return nil } // TelephonyCost represents the pricing structure for a specific telephony service @@ -757,8 +758,8 @@ type PurchasedPhoneNumber struct { state protoimpl.MessageState `protogen:"open.v1"` PhoneNumber *GlobalPhoneNumber `protobuf:"bytes,1,opt,name=phone_number,json=phoneNumber,proto3" json:"phone_number,omitempty"` // Common phone number fields Status PhoneNumberStatus `protobuf:"varint,2,opt,name=status,proto3,enum=livekit.PhoneNumberStatus" json:"status,omitempty"` // Current status of the phone number - AssignedAt int64 `protobuf:"varint,3,opt,name=assigned_at,json=assignedAt,proto3" json:"assigned_at,omitempty"` // Timestamp when the number was assigned - ReleasedAt int64 `protobuf:"varint,4,opt,name=released_at,json=releasedAt,proto3" json:"released_at,omitempty"` // Timestamp when the number was released (if applicable) + AssignedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=assigned_at,json=assignedAt,proto3" json:"assigned_at,omitempty"` // Timestamp when the number was assigned + ReleasedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=released_at,json=releasedAt,proto3" json:"released_at,omitempty"` // Timestamp when the number was released (if applicable) SipDispatchRule *SIPDispatchRuleInfo `protobuf:"bytes,5,opt,name=sip_dispatch_rule,json=sipDispatchRule,proto3" json:"sip_dispatch_rule,omitempty"` // Optional: Associated SIP dispatch rule unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache @@ -808,18 +809,18 @@ func (x *PurchasedPhoneNumber) GetStatus() PhoneNumberStatus { return PhoneNumberStatus_PHONE_NUMBER_STATUS_UNSPECIFIED } -func (x *PurchasedPhoneNumber) GetAssignedAt() int64 { +func (x *PurchasedPhoneNumber) GetAssignedAt() *timestamppb.Timestamp { if x != nil { return x.AssignedAt } - return 0 + return nil } -func (x *PurchasedPhoneNumber) GetReleasedAt() int64 { +func (x *PurchasedPhoneNumber) GetReleasedAt() *timestamppb.Timestamp { if x != nil { return x.ReleasedAt } - return 0 + return nil } func (x *PurchasedPhoneNumber) GetSipDispatchRule() *SIPDispatchRuleInfo { @@ -833,31 +834,31 @@ var File_livekit_phone_number_proto protoreflect.FileDescriptor const file_livekit_phone_number_proto_rawDesc = "" + "\n" + - "\x1alivekit_phone_number.proto\x12\alivekit\x1a\x1bgoogle/protobuf/empty.proto\x1a\x11livekit_sip.proto\"\x96\x01\n" + + "\x1alivekit_phone_number.proto\x12\alivekit\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x14livekit_models.proto\x1a\x11livekit_sip.proto\"\xb0\x01\n" + "\x1fListPhoneNumberInventoryRequest\x12!\n" + "\fcountry_code\x18\x01 \x01(\tR\vcountryCode\x12\x1b\n" + "\tarea_code\x18\x02 \x01(\tR\bareaCode\x12\x14\n" + - "\x05limit\x18\x03 \x01(\x05R\x05limit\x12\x1d\n" + + "\x05limit\x18\x03 \x01(\x05R\x05limit\x127\n" + "\n" + - "page_token\x18\x04 \x01(\tR\tpageToken\"\x83\x01\n" + + "page_token\x18\x04 \x01(\v2\x18.livekit.TokenPaginationR\tpageToken\"\x9d\x01\n" + " ListPhoneNumberInventoryResponse\x127\n" + - "\x05items\x18\x01 \x03(\v2!.livekit.PhoneNumberInventoryItemR\x05items\x12&\n" + - "\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\"A\n" + + "\x05items\x18\x01 \x03(\v2!.livekit.PhoneNumberInventoryItemR\x05items\x12@\n" + + "\x0fnext_page_token\x18\x02 \x01(\v2\x18.livekit.TokenPaginationR\rnextPageToken\"A\n" + "\x1aPurchasePhoneNumberRequest\x12#\n" + "\rphone_numbers\x18\x01 \x03(\tR\fphoneNumbers\"a\n" + "\x1bPurchasePhoneNumberResponse\x12B\n" + - "\rphone_numbers\x18\x01 \x03(\v2\x1d.livekit.PurchasedPhoneNumberR\fphoneNumbers\"W\n" + + "\rphone_numbers\x18\x01 \x03(\v2\x1d.livekit.PurchasedPhoneNumberR\fphoneNumbers\"q\n" + " ListPurchasedPhoneNumbersRequest\x12\x14\n" + - "\x05limit\x18\x01 \x01(\x05R\x05limit\x12\x1d\n" + + "\x05limit\x18\x01 \x01(\x05R\x05limit\x127\n" + "\n" + - "page_token\x18\x02 \x01(\tR\tpageToken\"\xa1\x01\n" + + "page_token\x18\x02 \x01(\v2\x18.livekit.TokenPaginationR\tpageToken\"\xbb\x01\n" + "!ListPurchasedPhoneNumbersResponse\x123\n" + - "\x05items\x18\x01 \x03(\v2\x1d.livekit.PurchasedPhoneNumberR\x05items\x12&\n" + - "\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\x12\x1f\n" + + "\x05items\x18\x01 \x03(\v2\x1d.livekit.PurchasedPhoneNumberR\x05items\x12@\n" + + "\x0fnext_page_token\x18\x02 \x01(\v2\x18.livekit.TokenPaginationR\rnextPageToken\x12\x1f\n" + "\vtotal_count\x18\x03 \x01(\x05R\n" + "totalCount\">\n" + "\x19ReleasePhoneNumberRequest\x12!\n" + - "\fphone_number\x18\x01 \x01(\tR\vphoneNumber\"\xb6\x02\n" + + "\fphone_number\x18\x01 \x01(\tR\vphoneNumber\"\xee\x02\n" + "\x11GlobalPhoneNumber\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\x12\x1f\n" + "\ve164_format\x18\x02 \x01(\tR\n" + @@ -869,12 +870,12 @@ const file_livekit_phone_number_proto_rawDesc = "" + "\blocality\x18\x06 \x01(\tR\blocality\x12\x16\n" + "\x06region\x18\a \x01(\tR\x06region\x12\x1d\n" + "\n" + - "spam_score\x18\b \x01(\x03R\tspamScore\x12\x1d\n" + + "spam_score\x18\b \x01(\x03R\tspamScore\x129\n" + "\n" + - "created_at\x18\t \x01(\x03R\tcreatedAt\x12\x1d\n" + + "created_at\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" + "\n" + "updated_at\x18\n" + - " \x01(\x03R\tupdatedAt\"\x9c\x01\n" + + " \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAt\"\x9c\x01\n" + "\rTelephonyCost\x126\n" + "\bresource\x18\x01 \x01(\x0e2\x1a.livekit.TelephonyCostTypeR\bresource\x12\x1a\n" + "\bcurrency\x18\x02 \x01(\tR\bcurrency\x12\x14\n" + @@ -883,13 +884,13 @@ const file_livekit_phone_number_proto_rawDesc = "" + "\x18PhoneNumberInventoryItem\x12=\n" + "\fphone_number\x18\x01 \x01(\v2\x1a.livekit.GlobalPhoneNumberR\vphoneNumber\x12\"\n" + "\fcapabilities\x18\x02 \x03(\tR\fcapabilities\x12,\n" + - "\x05costs\x18\x03 \x03(\v2\x16.livekit.TelephonyCostR\x05costs\"\x95\x02\n" + + "\x05costs\x18\x03 \x03(\v2\x16.livekit.TelephonyCostR\x05costs\"\xcd\x02\n" + "\x14PurchasedPhoneNumber\x12=\n" + "\fphone_number\x18\x01 \x01(\v2\x1a.livekit.GlobalPhoneNumberR\vphoneNumber\x122\n" + - "\x06status\x18\x02 \x01(\x0e2\x1a.livekit.PhoneNumberStatusR\x06status\x12\x1f\n" + - "\vassigned_at\x18\x03 \x01(\x03R\n" + - "assignedAt\x12\x1f\n" + - "\vreleased_at\x18\x04 \x01(\x03R\n" + + "\x06status\x18\x02 \x01(\x0e2\x1a.livekit.PhoneNumberStatusR\x06status\x12;\n" + + "\vassigned_at\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\n" + + "assignedAt\x12;\n" + + "\vreleased_at\x18\x04 \x01(\v2\x1a.google.protobuf.TimestampR\n" + "releasedAt\x12H\n" + "\x11sip_dispatch_rule\x18\x05 \x01(\v2\x1c.livekit.SIPDispatchRuleInfoR\x0fsipDispatchRule*\xf9\x01\n" + "\x11TelephonyCostType\x12#\n" + @@ -938,32 +939,42 @@ var file_livekit_phone_number_proto_goTypes = []any{ (*TelephonyCost)(nil), // 10: livekit.TelephonyCost (*PhoneNumberInventoryItem)(nil), // 11: livekit.PhoneNumberInventoryItem (*PurchasedPhoneNumber)(nil), // 12: livekit.PurchasedPhoneNumber - (*SIPDispatchRuleInfo)(nil), // 13: livekit.SIPDispatchRuleInfo - (*emptypb.Empty)(nil), // 14: google.protobuf.Empty + (*TokenPagination)(nil), // 13: livekit.TokenPagination + (*timestamppb.Timestamp)(nil), // 14: google.protobuf.Timestamp + (*SIPDispatchRuleInfo)(nil), // 15: livekit.SIPDispatchRuleInfo + (*emptypb.Empty)(nil), // 16: google.protobuf.Empty } var file_livekit_phone_number_proto_depIdxs = []int32{ - 11, // 0: livekit.ListPhoneNumberInventoryResponse.items:type_name -> livekit.PhoneNumberInventoryItem - 12, // 1: livekit.PurchasePhoneNumberResponse.phone_numbers:type_name -> livekit.PurchasedPhoneNumber - 12, // 2: livekit.ListPurchasedPhoneNumbersResponse.items:type_name -> livekit.PurchasedPhoneNumber - 0, // 3: livekit.TelephonyCost.resource:type_name -> livekit.TelephonyCostType - 9, // 4: livekit.PhoneNumberInventoryItem.phone_number:type_name -> livekit.GlobalPhoneNumber - 10, // 5: livekit.PhoneNumberInventoryItem.costs:type_name -> livekit.TelephonyCost - 9, // 6: livekit.PurchasedPhoneNumber.phone_number:type_name -> livekit.GlobalPhoneNumber - 1, // 7: livekit.PurchasedPhoneNumber.status:type_name -> livekit.PhoneNumberStatus - 13, // 8: livekit.PurchasedPhoneNumber.sip_dispatch_rule:type_name -> livekit.SIPDispatchRuleInfo - 2, // 9: livekit.PhoneNumberService.ListPhoneNumberInventory:input_type -> livekit.ListPhoneNumberInventoryRequest - 4, // 10: livekit.PhoneNumberService.PurchasePhoneNumber:input_type -> livekit.PurchasePhoneNumberRequest - 6, // 11: livekit.PhoneNumberService.ListPurchasedPhoneNumbers:input_type -> livekit.ListPurchasedPhoneNumbersRequest - 8, // 12: livekit.PhoneNumberService.ReleasePhoneNumber:input_type -> livekit.ReleasePhoneNumberRequest - 3, // 13: livekit.PhoneNumberService.ListPhoneNumberInventory:output_type -> livekit.ListPhoneNumberInventoryResponse - 5, // 14: livekit.PhoneNumberService.PurchasePhoneNumber:output_type -> livekit.PurchasePhoneNumberResponse - 7, // 15: livekit.PhoneNumberService.ListPurchasedPhoneNumbers:output_type -> livekit.ListPurchasedPhoneNumbersResponse - 14, // 16: livekit.PhoneNumberService.ReleasePhoneNumber:output_type -> google.protobuf.Empty - 13, // [13:17] is the sub-list for method output_type - 9, // [9:13] is the sub-list for method input_type - 9, // [9:9] is the sub-list for extension type_name - 9, // [9:9] is the sub-list for extension extendee - 0, // [0:9] is the sub-list for field type_name + 13, // 0: livekit.ListPhoneNumberInventoryRequest.page_token:type_name -> livekit.TokenPagination + 11, // 1: livekit.ListPhoneNumberInventoryResponse.items:type_name -> livekit.PhoneNumberInventoryItem + 13, // 2: livekit.ListPhoneNumberInventoryResponse.next_page_token:type_name -> livekit.TokenPagination + 12, // 3: livekit.PurchasePhoneNumberResponse.phone_numbers:type_name -> livekit.PurchasedPhoneNumber + 13, // 4: livekit.ListPurchasedPhoneNumbersRequest.page_token:type_name -> livekit.TokenPagination + 12, // 5: livekit.ListPurchasedPhoneNumbersResponse.items:type_name -> livekit.PurchasedPhoneNumber + 13, // 6: livekit.ListPurchasedPhoneNumbersResponse.next_page_token:type_name -> livekit.TokenPagination + 14, // 7: livekit.GlobalPhoneNumber.created_at:type_name -> google.protobuf.Timestamp + 14, // 8: livekit.GlobalPhoneNumber.updated_at:type_name -> google.protobuf.Timestamp + 0, // 9: livekit.TelephonyCost.resource:type_name -> livekit.TelephonyCostType + 9, // 10: livekit.PhoneNumberInventoryItem.phone_number:type_name -> livekit.GlobalPhoneNumber + 10, // 11: livekit.PhoneNumberInventoryItem.costs:type_name -> livekit.TelephonyCost + 9, // 12: livekit.PurchasedPhoneNumber.phone_number:type_name -> livekit.GlobalPhoneNumber + 1, // 13: livekit.PurchasedPhoneNumber.status:type_name -> livekit.PhoneNumberStatus + 14, // 14: livekit.PurchasedPhoneNumber.assigned_at:type_name -> google.protobuf.Timestamp + 14, // 15: livekit.PurchasedPhoneNumber.released_at:type_name -> google.protobuf.Timestamp + 15, // 16: livekit.PurchasedPhoneNumber.sip_dispatch_rule:type_name -> livekit.SIPDispatchRuleInfo + 2, // 17: livekit.PhoneNumberService.ListPhoneNumberInventory:input_type -> livekit.ListPhoneNumberInventoryRequest + 4, // 18: livekit.PhoneNumberService.PurchasePhoneNumber:input_type -> livekit.PurchasePhoneNumberRequest + 6, // 19: livekit.PhoneNumberService.ListPurchasedPhoneNumbers:input_type -> livekit.ListPurchasedPhoneNumbersRequest + 8, // 20: livekit.PhoneNumberService.ReleasePhoneNumber:input_type -> livekit.ReleasePhoneNumberRequest + 3, // 21: livekit.PhoneNumberService.ListPhoneNumberInventory:output_type -> livekit.ListPhoneNumberInventoryResponse + 5, // 22: livekit.PhoneNumberService.PurchasePhoneNumber:output_type -> livekit.PurchasePhoneNumberResponse + 7, // 23: livekit.PhoneNumberService.ListPurchasedPhoneNumbers:output_type -> livekit.ListPurchasedPhoneNumbersResponse + 16, // 24: livekit.PhoneNumberService.ReleasePhoneNumber:output_type -> google.protobuf.Empty + 21, // [21:25] is the sub-list for method output_type + 17, // [17:21] is the sub-list for method input_type + 17, // [17:17] is the sub-list for extension type_name + 17, // [17:17] is the sub-list for extension extendee + 0, // [0:17] is the sub-list for field type_name } func init() { file_livekit_phone_number_proto_init() } @@ -971,6 +982,7 @@ func file_livekit_phone_number_proto_init() { if File_livekit_phone_number_proto != nil { return } + file_livekit_models_proto_init() file_livekit_sip_proto_init() type x struct{} out := protoimpl.TypeBuilder{ diff --git a/livekit/livekit_phone_number.twirp.go b/livekit/livekit_phone_number.twirp.go index abab6a031..7f7d8f22a 100644 --- a/livekit/livekit_phone_number.twirp.go +++ b/livekit/livekit_phone_number.twirp.go @@ -1361,70 +1361,74 @@ func (s *phoneNumberServiceServer) PathPrefix() string { } var twirpFileDescriptor6 = []byte{ - // 1040 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0x4f, 0x6f, 0xdb, 0xc6, - 0x13, 0x35, 0x25, 0xcb, 0xb1, 0x46, 0x76, 0x22, 0xef, 0x2f, 0x30, 0x18, 0x3a, 0xf9, 0x59, 0xa6, - 0x93, 0xc0, 0x35, 0x0a, 0x19, 0x55, 0x8a, 0xf4, 0xd4, 0x02, 0xb2, 0xcc, 0x24, 0x02, 0x1c, 0x49, - 0xa0, 0xa8, 0x14, 0xe9, 0x85, 0xa0, 0xa8, 0xb5, 0xbc, 0x08, 0xc5, 0x65, 0xb8, 0x4b, 0xa3, 0x3a, - 0xf7, 0x33, 0xb4, 0x97, 0xf6, 0xd2, 0x73, 0xcf, 0xed, 0x77, 0xeb, 0xad, 0x58, 0x2e, 0xc9, 0xd0, - 0x16, 0x69, 0xa7, 0xe8, 0x91, 0x6f, 0xde, 0xce, 0xbe, 0xf9, 0xc7, 0x59, 0xd0, 0x3c, 0x72, 0x85, - 0x3f, 0x10, 0x6e, 0x07, 0x97, 0xd4, 0xc7, 0xb6, 0x1f, 0x2d, 0xa6, 0x38, 0x6c, 0x07, 0x21, 0xe5, - 0x14, 0xdd, 0x4b, 0x6c, 0xda, 0xde, 0x9c, 0xd2, 0xb9, 0x87, 0x4f, 0x62, 0x78, 0x1a, 0x5d, 0x9c, - 0xe0, 0x45, 0xc0, 0x97, 0x92, 0xa5, 0xed, 0xa4, 0x1e, 0x18, 0x09, 0x24, 0xa4, 0xff, 0xa2, 0xc0, - 0xfe, 0x39, 0x61, 0x7c, 0x24, 0x7c, 0x0e, 0x62, 0x97, 0x7d, 0xff, 0x0a, 0xfb, 0x9c, 0x86, 0x4b, - 0x13, 0x7f, 0x8c, 0x30, 0xe3, 0xe8, 0x00, 0xb6, 0x5c, 0x1a, 0xf9, 0x3c, 0x5c, 0xda, 0x2e, 0x9d, - 0x61, 0x55, 0x69, 0x29, 0x47, 0x75, 0xb3, 0x91, 0x60, 0x3d, 0x3a, 0xc3, 0x68, 0x0f, 0xea, 0x4e, - 0x88, 0x1d, 0x69, 0xaf, 0xc4, 0xf6, 0x4d, 0x01, 0xc4, 0xc6, 0x87, 0x50, 0xf3, 0xc8, 0x82, 0x70, - 0xb5, 0xda, 0x52, 0x8e, 0x6a, 0xa6, 0xfc, 0x40, 0x4f, 0x00, 0x02, 0x67, 0x8e, 0x6d, 0x4e, 0x3f, - 0x60, 0x5f, 0x5d, 0x8f, 0xcf, 0xd4, 0x05, 0x62, 0x09, 0x40, 0xff, 0x49, 0x81, 0x56, 0xb9, 0x30, - 0x16, 0x50, 0x9f, 0x61, 0xf4, 0x0d, 0xd4, 0x08, 0xc7, 0x0b, 0xa6, 0x2a, 0xad, 0xea, 0x51, 0xa3, - 0x73, 0xd0, 0x4e, 0x02, 0x6c, 0x17, 0x9d, 0xea, 0x73, 0xbc, 0x30, 0x25, 0x1f, 0x3d, 0x87, 0x07, - 0x3e, 0xfe, 0x91, 0xdb, 0x39, 0x05, 0x52, 0xf5, 0xb6, 0x80, 0x47, 0x99, 0x8a, 0x2e, 0x68, 0xa3, - 0x28, 0x74, 0x2f, 0x1d, 0x86, 0x73, 0x2e, 0xd3, 0xc4, 0x1c, 0xc2, 0x76, 0xbe, 0x16, 0x52, 0x46, - 0xdd, 0xdc, 0x0a, 0x3e, 0x51, 0x99, 0xee, 0xc0, 0x5e, 0xa1, 0x8b, 0x24, 0x84, 0xd3, 0x22, 0x1f, - 0x8d, 0xce, 0x93, 0x4f, 0xa1, 0x24, 0x87, 0x67, 0xf9, 0xd3, 0xd7, 0xaf, 0xf8, 0x3e, 0x49, 0x55, - 0x01, 0x93, 0xa5, 0x5a, 0xb3, 0x22, 0x28, 0xe5, 0x45, 0xa8, 0xdc, 0x2c, 0xc2, 0xef, 0x0a, 0x1c, - 0xdc, 0xe2, 0x39, 0x09, 0xe1, 0xc5, 0xf5, 0x2a, 0xdc, 0x21, 0xfd, 0xdf, 0x55, 0x00, 0xed, 0x43, - 0x83, 0x53, 0xee, 0x78, 0x76, 0xdc, 0x6e, 0x49, 0x0b, 0x41, 0x0c, 0xf5, 0x04, 0xa2, 0x7f, 0x07, - 0x8f, 0x4c, 0xec, 0xe1, 0xe2, 0x0a, 0x1d, 0xc0, 0x56, 0x3e, 0xbb, 0x69, 0xeb, 0xe6, 0xb2, 0xa7, - 0xff, 0x55, 0x81, 0x9d, 0xd7, 0x1e, 0x9d, 0x3a, 0x5e, 0xee, 0x3c, 0xba, 0x0f, 0x15, 0x32, 0x4b, - 0xe8, 0x15, 0x32, 0x13, 0x32, 0xf0, 0x57, 0x2f, 0xbf, 0xb6, 0x2f, 0x68, 0xb8, 0x70, 0x78, 0x22, - 0x15, 0x04, 0xf4, 0x2a, 0x46, 0x56, 0x86, 0xa4, 0x7a, 0xc7, 0x90, 0xac, 0xdf, 0x18, 0x92, 0x7d, - 0x68, 0x48, 0x8d, 0x36, 0x5f, 0x06, 0x58, 0xad, 0xc9, 0x0b, 0x24, 0x64, 0x2d, 0x03, 0x8c, 0x34, - 0xd8, 0xf4, 0xa8, 0xeb, 0x78, 0x84, 0x2f, 0xd5, 0x0d, 0x79, 0x38, 0xfd, 0x46, 0xbb, 0xb0, 0x11, - 0xe2, 0x39, 0xa1, 0xbe, 0x7a, 0x2f, 0xb6, 0x24, 0x5f, 0xa2, 0xbc, 0x2c, 0x70, 0x16, 0x36, 0x73, - 0x69, 0x88, 0xd5, 0xcd, 0x96, 0x72, 0x54, 0x35, 0xeb, 0x02, 0x19, 0x0b, 0x40, 0x98, 0xdd, 0x10, - 0x3b, 0x1c, 0xcf, 0x6c, 0x87, 0xab, 0x75, 0x69, 0x4e, 0x90, 0x6e, 0xdc, 0x1c, 0x51, 0x30, 0x4b, - 0xcd, 0x20, 0xcd, 0x09, 0xd2, 0xe5, 0xfa, 0x6f, 0x0a, 0x6c, 0x5b, 0xd8, 0xc3, 0x22, 0x99, 0xcb, - 0x1e, 0x65, 0x1c, 0xbd, 0x84, 0xcd, 0x10, 0x33, 0x1a, 0x85, 0xae, 0xfc, 0x49, 0xdc, 0xef, 0x68, - 0x59, 0x2f, 0x5c, 0x63, 0x8a, 0x80, 0xcc, 0x8c, 0x2b, 0x42, 0x73, 0xa3, 0x30, 0xc4, 0xbe, 0xbb, - 0x4c, 0x7f, 0x1e, 0xe9, 0xb7, 0xe8, 0xdb, 0x20, 0x24, 0xae, 0x4c, 0xa8, 0x62, 0xca, 0x0f, 0x91, - 0xed, 0x29, 0xf1, 0x3c, 0xe2, 0xcf, 0xed, 0xc8, 0x27, 0x3c, 0xc9, 0x66, 0x23, 0xc1, 0x26, 0x3e, - 0xe1, 0xfa, 0x1f, 0x0a, 0xa8, 0x65, 0xbf, 0x01, 0xf4, 0x6d, 0x41, 0x5f, 0x34, 0x72, 0x6a, 0x57, - 0x1a, 0xe2, 0x5a, 0xcf, 0x20, 0x1d, 0xb6, 0x5c, 0x27, 0x70, 0xa6, 0xc4, 0x23, 0x9c, 0x60, 0xa6, - 0x56, 0xe4, 0xdc, 0xe7, 0x31, 0xf4, 0x25, 0xd4, 0x5c, 0xca, 0x38, 0x53, 0xab, 0xf1, 0x54, 0xec, - 0x16, 0x67, 0xc2, 0x94, 0x24, 0xfd, 0xe7, 0x0a, 0x3c, 0x2c, 0x1a, 0x97, 0xff, 0xaa, 0xb4, 0x03, - 0x1b, 0x8c, 0x3b, 0x3c, 0x62, 0x71, 0x62, 0xf3, 0x05, 0xc9, 0x1d, 0x19, 0xc7, 0x0c, 0x33, 0x61, - 0x8a, 0x56, 0x74, 0x18, 0x23, 0x73, 0x5f, 0x16, 0xbe, 0x1a, 0x17, 0x1e, 0x52, 0xa8, 0xcb, 0x05, - 0x21, 0x94, 0x23, 0x17, 0x13, 0xd6, 0x25, 0x21, 0x85, 0xba, 0x1c, 0xbd, 0x81, 0x1d, 0x46, 0x02, - 0x7b, 0x46, 0x58, 0xe0, 0x70, 0xf7, 0xd2, 0x0e, 0x23, 0x4f, 0xb6, 0x74, 0xa3, 0xf3, 0x38, 0x13, - 0x30, 0xee, 0x8f, 0xce, 0x12, 0x82, 0x19, 0x79, 0xb8, 0xef, 0x5f, 0x50, 0xf3, 0x01, 0x23, 0x41, - 0x1e, 0x3c, 0xfe, 0x5b, 0x81, 0x9d, 0x95, 0xd6, 0x41, 0x87, 0xb0, 0x6f, 0x19, 0xe7, 0xc6, 0xe8, - 0xcd, 0x70, 0xf0, 0xde, 0xee, 0x0d, 0xc7, 0x96, 0x6d, 0xbd, 0x1f, 0x19, 0xf6, 0x64, 0x30, 0x1e, - 0x19, 0xbd, 0xfe, 0xab, 0xbe, 0x71, 0xd6, 0x5c, 0x43, 0xcf, 0xe0, 0xa0, 0x88, 0x34, 0x98, 0xbc, - 0x3d, 0x35, 0x4c, 0xdb, 0x34, 0x06, 0x56, 0xf7, 0xbc, 0xa9, 0x94, 0xd1, 0xde, 0x0d, 0xfb, 0x3d, - 0xc3, 0xee, 0x0f, 0x4e, 0x87, 0x93, 0xc1, 0x59, 0xb3, 0x82, 0x9e, 0x83, 0x5e, 0x4e, 0x1b, 0x4e, - 0x2c, 0xc9, 0xab, 0x96, 0x49, 0x1b, 0xbf, 0x1d, 0x67, 0xce, 0xd6, 0xd1, 0x53, 0x68, 0x95, 0x91, - 0x32, 0x57, 0xb5, 0xe3, 0x5f, 0x15, 0xd8, 0x59, 0xa9, 0x92, 0xb8, 0x40, 0x9c, 0xcb, 0x02, 0x19, - 0x5b, 0x5d, 0x6b, 0x32, 0xbe, 0x11, 0xfb, 0xff, 0x41, 0x2b, 0x22, 0x75, 0x7b, 0x56, 0xff, 0x9d, - 0xd1, 0x54, 0xd0, 0x3e, 0xec, 0x15, 0xd9, 0x47, 0xc6, 0xe0, 0xac, 0x3f, 0x78, 0xdd, 0xac, 0xa0, - 0x16, 0x3c, 0x2e, 0x22, 0x98, 0xc6, 0xb9, 0xd1, 0x1d, 0x1b, 0x67, 0xcd, 0x6a, 0xe7, 0xcf, 0x2a, - 0xa0, 0xbc, 0x3a, 0x1c, 0x5e, 0x89, 0xc9, 0xfc, 0x08, 0x6a, 0xd9, 0xda, 0x46, 0x47, 0x59, 0xed, - 0xef, 0x78, 0x72, 0x68, 0x5f, 0x7c, 0x06, 0x53, 0x6e, 0x1f, 0x7d, 0x0d, 0x4d, 0xe1, 0x7f, 0x05, - 0x1b, 0x16, 0x1d, 0xae, 0xec, 0xa1, 0xd5, 0x05, 0xa1, 0x3d, 0xbd, 0x9d, 0x94, 0xdd, 0xc1, 0xe1, - 0x51, 0xe9, 0x22, 0x44, 0x37, 0xd4, 0xde, 0xb2, 0x86, 0xb5, 0xe3, 0xcf, 0xa1, 0x66, 0xb7, 0x9a, - 0x80, 0x56, 0x77, 0x1b, 0xd2, 0x33, 0x1f, 0xa5, 0x8b, 0x4f, 0xdb, 0x6d, 0xcb, 0x87, 0x60, 0x3b, - 0x7d, 0x08, 0xb6, 0x0d, 0xf1, 0x10, 0xd4, 0xd7, 0x4e, 0x9f, 0xfd, 0x70, 0x38, 0x27, 0xfc, 0x32, - 0x9a, 0xb6, 0x5d, 0xba, 0x38, 0x49, 0x3c, 0xc9, 0xf7, 0xa2, 0x4b, 0xbd, 0x14, 0x98, 0x6e, 0xc4, - 0xc8, 0x8b, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0xe5, 0xe4, 0xfb, 0x00, 0x76, 0x0a, 0x00, 0x00, + // 1096 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xd1, 0x6e, 0xdb, 0x36, + 0x17, 0xae, 0xec, 0x38, 0x8d, 0x8f, 0x93, 0xd6, 0xe1, 0x1f, 0x04, 0xaa, 0xd2, 0xfe, 0x76, 0x94, + 0x76, 0xf0, 0x82, 0xc1, 0xc1, 0xdc, 0xa1, 0xc5, 0x30, 0x6c, 0x98, 0xe3, 0xa8, 0xad, 0x81, 0xd4, + 0x31, 0x64, 0xb9, 0x40, 0x77, 0x23, 0xc8, 0x32, 0xe3, 0x10, 0x95, 0x44, 0x45, 0xa4, 0x82, 0xf9, + 0x59, 0xb6, 0x3d, 0xc1, 0x6e, 0x76, 0xb3, 0xab, 0x3d, 0xc3, 0x5e, 0x65, 0xf7, 0xbb, 0x1b, 0x24, + 0x51, 0x8a, 0x12, 0xcb, 0x71, 0x80, 0xed, 0x92, 0x1f, 0xbf, 0xc3, 0xf3, 0x91, 0xdf, 0x39, 0x24, + 0x41, 0x71, 0xc8, 0x15, 0xfe, 0x44, 0xb8, 0xe9, 0x5f, 0x50, 0x0f, 0x9b, 0x5e, 0xe8, 0x4e, 0x70, + 0xd0, 0xf6, 0x03, 0xca, 0x29, 0x7a, 0x28, 0xe6, 0x94, 0xbd, 0x19, 0xa5, 0x33, 0x07, 0x1f, 0xc5, + 0xf0, 0x24, 0x3c, 0x3f, 0xc2, 0xae, 0xcf, 0xe7, 0x09, 0x4b, 0x69, 0xdc, 0x9e, 0xe4, 0xc4, 0xc5, + 0x8c, 0x5b, 0xae, 0x2f, 0x08, 0x3b, 0x69, 0x0a, 0x97, 0x4e, 0xb1, 0xc3, 0x04, 0xba, 0x9d, 0xa2, + 0x8c, 0x08, 0xa2, 0xfa, 0x9b, 0x04, 0x8d, 0x53, 0xc2, 0xf8, 0x30, 0x92, 0x32, 0x88, 0x95, 0xf4, + 0xbd, 0x2b, 0xec, 0x71, 0x1a, 0xcc, 0x75, 0x7c, 0x19, 0x62, 0xc6, 0xd1, 0x3e, 0x6c, 0xda, 0x34, + 0xf4, 0x78, 0x30, 0x37, 0x6d, 0x3a, 0xc5, 0xb2, 0xd4, 0x94, 0x5a, 0x55, 0xbd, 0x26, 0xb0, 0x1e, + 0x9d, 0x62, 0xb4, 0x07, 0x55, 0x2b, 0xc0, 0x56, 0x32, 0x5f, 0x8a, 0xe7, 0x37, 0x22, 0x20, 0x9e, + 0xdc, 0x81, 0x8a, 0x43, 0x5c, 0xc2, 0xe5, 0x72, 0x53, 0x6a, 0x55, 0xf4, 0x64, 0x80, 0x5e, 0x03, + 0xf8, 0xd6, 0x0c, 0x9b, 0x9c, 0x7e, 0xc2, 0x9e, 0xbc, 0xd6, 0x94, 0x5a, 0xb5, 0x8e, 0xdc, 0x16, + 0x0a, 0xdb, 0x46, 0x84, 0x0e, 0xad, 0x19, 0xf1, 0x2c, 0x4e, 0xa8, 0xa7, 0x57, 0x23, 0x6e, 0x0c, + 0xaa, 0xbf, 0x48, 0xd0, 0x5c, 0x2e, 0x99, 0xf9, 0xd4, 0x63, 0x18, 0xbd, 0x86, 0x0a, 0xe1, 0xd8, + 0x65, 0xb2, 0xd4, 0x2c, 0xb7, 0x6a, 0x9d, 0xfd, 0x6c, 0xe1, 0xa2, 0xa8, 0x3e, 0xc7, 0xae, 0x9e, + 0xf0, 0xd1, 0xf7, 0xf0, 0xd8, 0xc3, 0x3f, 0x72, 0x33, 0xa7, 0xad, 0xb4, 0x42, 0xdb, 0x56, 0x14, + 0x30, 0xcc, 0xf4, 0x75, 0x41, 0x19, 0x86, 0x81, 0x7d, 0x61, 0x31, 0x9c, 0x4b, 0x96, 0x1e, 0xe6, + 0x01, 0x6c, 0xe5, 0x6d, 0x4f, 0x04, 0x56, 0xf5, 0x4d, 0xff, 0x9a, 0xca, 0x54, 0x0b, 0xf6, 0x0a, + 0x97, 0x10, 0x9b, 0x3b, 0x2e, 0x5a, 0xa3, 0xd6, 0x79, 0x76, 0xbd, 0x49, 0x11, 0x3c, 0xcd, 0x47, + 0xdf, 0x4c, 0x71, 0x29, 0x0e, 0xb1, 0x80, 0xc9, 0x52, 0xad, 0x99, 0x71, 0xd2, 0x72, 0xe3, 0x4a, + 0xf7, 0x37, 0xee, 0x0f, 0x09, 0xf6, 0xef, 0xc8, 0x29, 0x36, 0xf7, 0xf2, 0xa6, 0x73, 0x2b, 0x36, + 0xf5, 0x5f, 0xb9, 0x86, 0x1a, 0x50, 0xe3, 0x94, 0x5b, 0x8e, 0x19, 0x97, 0xb5, 0x28, 0x55, 0x88, + 0xa1, 0x5e, 0x84, 0xa8, 0xdf, 0xc1, 0x13, 0x1d, 0x3b, 0xb8, 0xd8, 0xd5, 0x7d, 0xd8, 0xcc, 0x3b, + 0x92, 0xb6, 0x48, 0xee, 0xc4, 0xd5, 0xbf, 0x4a, 0xb0, 0xfd, 0xd6, 0xa1, 0x13, 0xcb, 0xc9, 0xc5, + 0xa3, 0x47, 0x50, 0x22, 0x53, 0x41, 0x2f, 0x91, 0x69, 0x24, 0x03, 0x7f, 0xf9, 0xea, 0x2b, 0xf3, + 0x9c, 0x06, 0xae, 0xc5, 0x45, 0x2b, 0x41, 0x04, 0xbd, 0x89, 0x91, 0x85, 0x66, 0x2c, 0xaf, 0x68, + 0xc6, 0xb5, 0x5b, 0xcd, 0xd8, 0x80, 0x5a, 0xa2, 0xd1, 0xe4, 0x73, 0x1f, 0xcb, 0x95, 0x24, 0x41, + 0x02, 0x19, 0x73, 0x1f, 0x23, 0x05, 0x36, 0x1c, 0x6a, 0x5b, 0x0e, 0xe1, 0x73, 0x79, 0x3d, 0x09, + 0x4e, 0xc7, 0x68, 0x17, 0xd6, 0x03, 0x3c, 0x23, 0xd4, 0x93, 0x1f, 0xc6, 0x33, 0x62, 0x84, 0x9e, + 0x01, 0x30, 0xdf, 0x72, 0x4d, 0x66, 0xd3, 0x00, 0xcb, 0x1b, 0x4d, 0xa9, 0x55, 0xd6, 0xab, 0x11, + 0x32, 0x8a, 0x00, 0xf4, 0x35, 0x80, 0x1d, 0x60, 0x8b, 0xe3, 0xa9, 0x69, 0x71, 0xb9, 0x1a, 0x1b, + 0xa3, 0xb4, 0x93, 0x3b, 0xac, 0x9d, 0xde, 0x61, 0x6d, 0x23, 0xbd, 0xc3, 0xf4, 0xaa, 0x60, 0x77, + 0x79, 0x14, 0x1a, 0xfa, 0xd3, 0x34, 0x14, 0x56, 0x87, 0x0a, 0x76, 0x97, 0xab, 0x3f, 0x4b, 0xb0, + 0x65, 0x60, 0x07, 0x47, 0x26, 0xcc, 0x7b, 0x94, 0x71, 0xf4, 0x0a, 0x36, 0x02, 0xcc, 0x68, 0x18, + 0xd8, 0xc9, 0x25, 0xf6, 0xa8, 0xa3, 0x5c, 0x97, 0x47, 0x9e, 0x19, 0x1d, 0x84, 0x9e, 0x71, 0xa3, + 0x23, 0xb1, 0xc3, 0x20, 0xc0, 0x9e, 0x3d, 0x4f, 0x2f, 0xb7, 0x74, 0x1c, 0xf5, 0x88, 0x1f, 0x10, + 0x3b, 0x31, 0x42, 0xd2, 0x93, 0x41, 0xe4, 0xd2, 0x84, 0x38, 0x0e, 0xf1, 0x66, 0x66, 0xe8, 0x11, + 0x2e, 0x5c, 0xa8, 0x09, 0x6c, 0xec, 0x11, 0xae, 0xfe, 0x2a, 0x81, 0xbc, 0xec, 0x32, 0x42, 0xdf, + 0x16, 0xd4, 0x53, 0x2d, 0xa7, 0x76, 0xa1, 0x90, 0x6e, 0xd4, 0x1a, 0x52, 0x61, 0xd3, 0xb6, 0x7c, + 0x6b, 0x42, 0x1c, 0xc2, 0x09, 0x66, 0x72, 0x29, 0xb9, 0x63, 0xf2, 0x18, 0xfa, 0x02, 0x2a, 0x36, + 0x65, 0x9c, 0xc9, 0xe5, 0xb8, 0xcf, 0x76, 0x8b, 0x4f, 0x42, 0x4f, 0x48, 0xea, 0x9f, 0x25, 0xd8, + 0x29, 0x6a, 0xc0, 0x7f, 0xab, 0xb4, 0x03, 0xeb, 0x8c, 0x5b, 0x3c, 0x64, 0xf1, 0xc1, 0xe6, 0x0d, + 0xc9, 0x85, 0x8c, 0x62, 0x86, 0x2e, 0x98, 0xe8, 0x1b, 0xa8, 0x59, 0x8c, 0x91, 0x99, 0x97, 0x14, + 0x45, 0x79, 0x65, 0x51, 0x40, 0x4a, 0xef, 0xf2, 0x28, 0x38, 0x48, 0xda, 0x38, 0x0e, 0x5e, 0x5b, + 0x1d, 0x9c, 0xd2, 0xbb, 0x1c, 0xbd, 0x83, 0x6d, 0x46, 0x7c, 0x73, 0x4a, 0x98, 0x6f, 0x71, 0xfb, + 0xc2, 0x0c, 0x42, 0x27, 0x69, 0xa1, 0x5a, 0xe7, 0x69, 0x26, 0x7c, 0xd4, 0x1f, 0x9e, 0x08, 0x82, + 0x1e, 0x3a, 0xb8, 0xef, 0x9d, 0x53, 0xfd, 0x31, 0x23, 0x7e, 0x1e, 0x3c, 0xfc, 0x5b, 0x82, 0xed, + 0x85, 0x92, 0x43, 0x07, 0xd0, 0x30, 0xb4, 0x53, 0x6d, 0xf8, 0xee, 0x6c, 0xf0, 0xd1, 0xec, 0x9d, + 0x8d, 0x0c, 0xd3, 0xf8, 0x38, 0xd4, 0xcc, 0xf1, 0x60, 0x34, 0xd4, 0x7a, 0xfd, 0x37, 0x7d, 0xed, + 0xa4, 0xfe, 0x00, 0xbd, 0x80, 0xfd, 0x22, 0xd2, 0x60, 0xfc, 0xfe, 0x58, 0xd3, 0x4d, 0x5d, 0x1b, + 0x18, 0xdd, 0xd3, 0xba, 0xb4, 0x8c, 0xf6, 0xe1, 0xac, 0xdf, 0xd3, 0xcc, 0xfe, 0xe0, 0xf8, 0x6c, + 0x3c, 0x38, 0xa9, 0x97, 0xd0, 0x67, 0xa0, 0x2e, 0xa7, 0x9d, 0x8d, 0x8d, 0x84, 0x57, 0x5e, 0x26, + 0x6d, 0xf4, 0x7e, 0x94, 0x2d, 0xb6, 0x86, 0x9e, 0x43, 0x73, 0x19, 0x29, 0x5b, 0xaa, 0x72, 0xf8, + 0x93, 0x04, 0xdb, 0x0b, 0xee, 0x46, 0x09, 0xa2, 0xb8, 0x6c, 0x23, 0x23, 0xa3, 0x6b, 0x8c, 0x47, + 0xb7, 0xf6, 0xfe, 0x7f, 0x50, 0x8a, 0x48, 0xdd, 0x9e, 0xd1, 0xff, 0xa0, 0xd5, 0x25, 0xd4, 0x80, + 0xbd, 0xa2, 0xf9, 0xa1, 0x36, 0x38, 0xe9, 0x0f, 0xde, 0xd6, 0x4b, 0xa8, 0x09, 0x4f, 0x8b, 0x08, + 0xba, 0x76, 0xaa, 0x75, 0x47, 0xda, 0x49, 0xbd, 0xdc, 0xf9, 0xbd, 0x0c, 0x28, 0xaf, 0x0e, 0x07, + 0x57, 0x51, 0x47, 0x5f, 0x82, 0xbc, 0xec, 0xd3, 0x81, 0x5a, 0x99, 0xf7, 0x2b, 0xbe, 0x52, 0xca, + 0xe7, 0xf7, 0x60, 0x26, 0xef, 0xa0, 0xfa, 0x00, 0x4d, 0xe0, 0x7f, 0x05, 0xbf, 0x00, 0x74, 0xb0, + 0xf0, 0x22, 0x2e, 0x3e, 0x48, 0xca, 0xf3, 0xbb, 0x49, 0x59, 0x0e, 0x0e, 0x4f, 0x96, 0x3e, 0xc9, + 0xe8, 0x96, 0xda, 0x3b, 0xbe, 0x0a, 0xca, 0xe1, 0x7d, 0xa8, 0x59, 0x56, 0x1d, 0xd0, 0xe2, 0x5b, + 0x8a, 0xd4, 0x6c, 0x8d, 0xa5, 0x0f, 0xad, 0xb2, 0xbb, 0xd0, 0xa9, 0x5a, 0xf4, 0x2f, 0x56, 0x1f, + 0x1c, 0xbf, 0xf8, 0xe1, 0x60, 0x46, 0xf8, 0x45, 0x38, 0x69, 0xdb, 0xd4, 0x3d, 0x12, 0x2b, 0x25, + 0x3f, 0x64, 0x9b, 0x3a, 0x29, 0x30, 0x59, 0x8f, 0x91, 0x97, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, + 0x22, 0xaf, 0x34, 0x8a, 0x85, 0x0b, 0x00, 0x00, } From 033a33b790d579603793d2324c74515efc9522fc Mon Sep 17 00:00:00 2001 From: Nishad Musthafa Date: Mon, 18 Aug 2025 20:01:47 -0700 Subject: [PATCH 17/20] Using an array of numbers for the release phone number api as well --- protobufs/livekit_phone_number.proto | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/protobufs/livekit_phone_number.proto b/protobufs/livekit_phone_number.proto index 237873691..054198a68 100644 --- a/protobufs/livekit_phone_number.proto +++ b/protobufs/livekit_phone_number.proto @@ -83,9 +83,9 @@ message ListPurchasedPhoneNumbersResponse { int32 total_count = 3; // Total number of purchased phone numbers } -// ReleasePhoneNumberRequest - Request to release a purchased phone number +// ReleasePhoneNumberRequest - Request to release purchased phone numbers message ReleasePhoneNumberRequest { - string phone_number = 1; // Phone number to release (e.g., "+1234567890") + repeated string phone_numbers = 1; // Phone numbers to release (e.g., ["+1234567890", "+1234567891"]) } // GlobalPhoneNumber represents a phone number with standardized format From 08299307053f9838f4472a147c734c258d320129 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 19 Aug 2025 03:02:42 +0000 Subject: [PATCH 18/20] generated protobuf --- livekit/livekit_phone_number.pb.go | 16 +-- livekit/livekit_phone_number.twirp.go | 138 +++++++++++++------------- 2 files changed, 77 insertions(+), 77 deletions(-) diff --git a/livekit/livekit_phone_number.pb.go b/livekit/livekit_phone_number.pb.go index e6af83116..2f595c1cc 100644 --- a/livekit/livekit_phone_number.pb.go +++ b/livekit/livekit_phone_number.pb.go @@ -461,10 +461,10 @@ func (x *ListPurchasedPhoneNumbersResponse) GetTotalCount() int32 { return 0 } -// ReleasePhoneNumberRequest - Request to release a purchased phone number +// ReleasePhoneNumberRequest - Request to release purchased phone numbers type ReleasePhoneNumberRequest struct { state protoimpl.MessageState `protogen:"open.v1"` - PhoneNumber string `protobuf:"bytes,1,opt,name=phone_number,json=phoneNumber,proto3" json:"phone_number,omitempty"` // Phone number to release (e.g., "+1234567890") + PhoneNumbers []string `protobuf:"bytes,1,rep,name=phone_numbers,json=phoneNumbers,proto3" json:"phone_numbers,omitempty"` // Phone numbers to release (e.g., ["+1234567890", "+1234567891"]) unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -499,11 +499,11 @@ func (*ReleasePhoneNumberRequest) Descriptor() ([]byte, []int) { return file_livekit_phone_number_proto_rawDescGZIP(), []int{6} } -func (x *ReleasePhoneNumberRequest) GetPhoneNumber() string { +func (x *ReleasePhoneNumberRequest) GetPhoneNumbers() []string { if x != nil { - return x.PhoneNumber + return x.PhoneNumbers } - return "" + return nil } // GlobalPhoneNumber represents a phone number with standardized format @@ -856,9 +856,9 @@ const file_livekit_phone_number_proto_rawDesc = "" + "\x05items\x18\x01 \x03(\v2\x1d.livekit.PurchasedPhoneNumberR\x05items\x12@\n" + "\x0fnext_page_token\x18\x02 \x01(\v2\x18.livekit.TokenPaginationR\rnextPageToken\x12\x1f\n" + "\vtotal_count\x18\x03 \x01(\x05R\n" + - "totalCount\">\n" + - "\x19ReleasePhoneNumberRequest\x12!\n" + - "\fphone_number\x18\x01 \x01(\tR\vphoneNumber\"\xee\x02\n" + + "totalCount\"@\n" + + "\x19ReleasePhoneNumberRequest\x12#\n" + + "\rphone_numbers\x18\x01 \x03(\tR\fphoneNumbers\"\xee\x02\n" + "\x11GlobalPhoneNumber\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\x12\x1f\n" + "\ve164_format\x18\x02 \x01(\tR\n" + diff --git a/livekit/livekit_phone_number.twirp.go b/livekit/livekit_phone_number.twirp.go index 7f7d8f22a..8aab28527 100644 --- a/livekit/livekit_phone_number.twirp.go +++ b/livekit/livekit_phone_number.twirp.go @@ -1361,74 +1361,74 @@ func (s *phoneNumberServiceServer) PathPrefix() string { } var twirpFileDescriptor6 = []byte{ - // 1096 bytes of a gzipped FileDescriptorProto + // 1090 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xd1, 0x6e, 0xdb, 0x36, - 0x17, 0xae, 0xec, 0x38, 0x8d, 0x8f, 0x93, 0xd6, 0xe1, 0x1f, 0x04, 0xaa, 0xd2, 0xfe, 0x76, 0x94, - 0x76, 0xf0, 0x82, 0xc1, 0xc1, 0xdc, 0xa1, 0xc5, 0x30, 0x6c, 0x98, 0xe3, 0xa8, 0xad, 0x81, 0xd4, - 0x31, 0x64, 0xb9, 0x40, 0x77, 0x23, 0xc8, 0x32, 0xe3, 0x10, 0x95, 0x44, 0x45, 0xa4, 0x82, 0xf9, - 0x59, 0xb6, 0x3d, 0xc1, 0x6e, 0x76, 0xb3, 0xab, 0x3d, 0xc3, 0x5e, 0x65, 0xf7, 0xbb, 0x1b, 0x24, - 0x51, 0x8a, 0x12, 0xcb, 0x71, 0x80, 0xed, 0x92, 0x1f, 0xbf, 0xc3, 0xf3, 0x91, 0xdf, 0x39, 0x24, - 0x41, 0x71, 0xc8, 0x15, 0xfe, 0x44, 0xb8, 0xe9, 0x5f, 0x50, 0x0f, 0x9b, 0x5e, 0xe8, 0x4e, 0x70, - 0xd0, 0xf6, 0x03, 0xca, 0x29, 0x7a, 0x28, 0xe6, 0x94, 0xbd, 0x19, 0xa5, 0x33, 0x07, 0x1f, 0xc5, - 0xf0, 0x24, 0x3c, 0x3f, 0xc2, 0xae, 0xcf, 0xe7, 0x09, 0x4b, 0x69, 0xdc, 0x9e, 0xe4, 0xc4, 0xc5, - 0x8c, 0x5b, 0xae, 0x2f, 0x08, 0x3b, 0x69, 0x0a, 0x97, 0x4e, 0xb1, 0xc3, 0x04, 0xba, 0x9d, 0xa2, - 0x8c, 0x08, 0xa2, 0xfa, 0x9b, 0x04, 0x8d, 0x53, 0xc2, 0xf8, 0x30, 0x92, 0x32, 0x88, 0x95, 0xf4, - 0xbd, 0x2b, 0xec, 0x71, 0x1a, 0xcc, 0x75, 0x7c, 0x19, 0x62, 0xc6, 0xd1, 0x3e, 0x6c, 0xda, 0x34, - 0xf4, 0x78, 0x30, 0x37, 0x6d, 0x3a, 0xc5, 0xb2, 0xd4, 0x94, 0x5a, 0x55, 0xbd, 0x26, 0xb0, 0x1e, - 0x9d, 0x62, 0xb4, 0x07, 0x55, 0x2b, 0xc0, 0x56, 0x32, 0x5f, 0x8a, 0xe7, 0x37, 0x22, 0x20, 0x9e, - 0xdc, 0x81, 0x8a, 0x43, 0x5c, 0xc2, 0xe5, 0x72, 0x53, 0x6a, 0x55, 0xf4, 0x64, 0x80, 0x5e, 0x03, - 0xf8, 0xd6, 0x0c, 0x9b, 0x9c, 0x7e, 0xc2, 0x9e, 0xbc, 0xd6, 0x94, 0x5a, 0xb5, 0x8e, 0xdc, 0x16, - 0x0a, 0xdb, 0x46, 0x84, 0x0e, 0xad, 0x19, 0xf1, 0x2c, 0x4e, 0xa8, 0xa7, 0x57, 0x23, 0x6e, 0x0c, - 0xaa, 0xbf, 0x48, 0xd0, 0x5c, 0x2e, 0x99, 0xf9, 0xd4, 0x63, 0x18, 0xbd, 0x86, 0x0a, 0xe1, 0xd8, - 0x65, 0xb2, 0xd4, 0x2c, 0xb7, 0x6a, 0x9d, 0xfd, 0x6c, 0xe1, 0xa2, 0xa8, 0x3e, 0xc7, 0xae, 0x9e, - 0xf0, 0xd1, 0xf7, 0xf0, 0xd8, 0xc3, 0x3f, 0x72, 0x33, 0xa7, 0xad, 0xb4, 0x42, 0xdb, 0x56, 0x14, - 0x30, 0xcc, 0xf4, 0x75, 0x41, 0x19, 0x86, 0x81, 0x7d, 0x61, 0x31, 0x9c, 0x4b, 0x96, 0x1e, 0xe6, - 0x01, 0x6c, 0xe5, 0x6d, 0x4f, 0x04, 0x56, 0xf5, 0x4d, 0xff, 0x9a, 0xca, 0x54, 0x0b, 0xf6, 0x0a, - 0x97, 0x10, 0x9b, 0x3b, 0x2e, 0x5a, 0xa3, 0xd6, 0x79, 0x76, 0xbd, 0x49, 0x11, 0x3c, 0xcd, 0x47, - 0xdf, 0x4c, 0x71, 0x29, 0x0e, 0xb1, 0x80, 0xc9, 0x52, 0xad, 0x99, 0x71, 0xd2, 0x72, 0xe3, 0x4a, - 0xf7, 0x37, 0xee, 0x0f, 0x09, 0xf6, 0xef, 0xc8, 0x29, 0x36, 0xf7, 0xf2, 0xa6, 0x73, 0x2b, 0x36, - 0xf5, 0x5f, 0xb9, 0x86, 0x1a, 0x50, 0xe3, 0x94, 0x5b, 0x8e, 0x19, 0x97, 0xb5, 0x28, 0x55, 0x88, - 0xa1, 0x5e, 0x84, 0xa8, 0xdf, 0xc1, 0x13, 0x1d, 0x3b, 0xb8, 0xd8, 0xd5, 0x7d, 0xd8, 0xcc, 0x3b, - 0x92, 0xb6, 0x48, 0xee, 0xc4, 0xd5, 0xbf, 0x4a, 0xb0, 0xfd, 0xd6, 0xa1, 0x13, 0xcb, 0xc9, 0xc5, - 0xa3, 0x47, 0x50, 0x22, 0x53, 0x41, 0x2f, 0x91, 0x69, 0x24, 0x03, 0x7f, 0xf9, 0xea, 0x2b, 0xf3, - 0x9c, 0x06, 0xae, 0xc5, 0x45, 0x2b, 0x41, 0x04, 0xbd, 0x89, 0x91, 0x85, 0x66, 0x2c, 0xaf, 0x68, - 0xc6, 0xb5, 0x5b, 0xcd, 0xd8, 0x80, 0x5a, 0xa2, 0xd1, 0xe4, 0x73, 0x1f, 0xcb, 0x95, 0x24, 0x41, - 0x02, 0x19, 0x73, 0x1f, 0x23, 0x05, 0x36, 0x1c, 0x6a, 0x5b, 0x0e, 0xe1, 0x73, 0x79, 0x3d, 0x09, - 0x4e, 0xc7, 0x68, 0x17, 0xd6, 0x03, 0x3c, 0x23, 0xd4, 0x93, 0x1f, 0xc6, 0x33, 0x62, 0x84, 0x9e, - 0x01, 0x30, 0xdf, 0x72, 0x4d, 0x66, 0xd3, 0x00, 0xcb, 0x1b, 0x4d, 0xa9, 0x55, 0xd6, 0xab, 0x11, - 0x32, 0x8a, 0x00, 0xf4, 0x35, 0x80, 0x1d, 0x60, 0x8b, 0xe3, 0xa9, 0x69, 0x71, 0xb9, 0x1a, 0x1b, - 0xa3, 0xb4, 0x93, 0x3b, 0xac, 0x9d, 0xde, 0x61, 0x6d, 0x23, 0xbd, 0xc3, 0xf4, 0xaa, 0x60, 0x77, - 0x79, 0x14, 0x1a, 0xfa, 0xd3, 0x34, 0x14, 0x56, 0x87, 0x0a, 0x76, 0x97, 0xab, 0x3f, 0x4b, 0xb0, - 0x65, 0x60, 0x07, 0x47, 0x26, 0xcc, 0x7b, 0x94, 0x71, 0xf4, 0x0a, 0x36, 0x02, 0xcc, 0x68, 0x18, - 0xd8, 0xc9, 0x25, 0xf6, 0xa8, 0xa3, 0x5c, 0x97, 0x47, 0x9e, 0x19, 0x1d, 0x84, 0x9e, 0x71, 0xa3, - 0x23, 0xb1, 0xc3, 0x20, 0xc0, 0x9e, 0x3d, 0x4f, 0x2f, 0xb7, 0x74, 0x1c, 0xf5, 0x88, 0x1f, 0x10, - 0x3b, 0x31, 0x42, 0xd2, 0x93, 0x41, 0xe4, 0xd2, 0x84, 0x38, 0x0e, 0xf1, 0x66, 0x66, 0xe8, 0x11, - 0x2e, 0x5c, 0xa8, 0x09, 0x6c, 0xec, 0x11, 0xae, 0xfe, 0x2a, 0x81, 0xbc, 0xec, 0x32, 0x42, 0xdf, - 0x16, 0xd4, 0x53, 0x2d, 0xa7, 0x76, 0xa1, 0x90, 0x6e, 0xd4, 0x1a, 0x52, 0x61, 0xd3, 0xb6, 0x7c, - 0x6b, 0x42, 0x1c, 0xc2, 0x09, 0x66, 0x72, 0x29, 0xb9, 0x63, 0xf2, 0x18, 0xfa, 0x02, 0x2a, 0x36, - 0x65, 0x9c, 0xc9, 0xe5, 0xb8, 0xcf, 0x76, 0x8b, 0x4f, 0x42, 0x4f, 0x48, 0xea, 0x9f, 0x25, 0xd8, - 0x29, 0x6a, 0xc0, 0x7f, 0xab, 0xb4, 0x03, 0xeb, 0x8c, 0x5b, 0x3c, 0x64, 0xf1, 0xc1, 0xe6, 0x0d, - 0xc9, 0x85, 0x8c, 0x62, 0x86, 0x2e, 0x98, 0xe8, 0x1b, 0xa8, 0x59, 0x8c, 0x91, 0x99, 0x97, 0x14, - 0x45, 0x79, 0x65, 0x51, 0x40, 0x4a, 0xef, 0xf2, 0x28, 0x38, 0x48, 0xda, 0x38, 0x0e, 0x5e, 0x5b, - 0x1d, 0x9c, 0xd2, 0xbb, 0x1c, 0xbd, 0x83, 0x6d, 0x46, 0x7c, 0x73, 0x4a, 0x98, 0x6f, 0x71, 0xfb, - 0xc2, 0x0c, 0x42, 0x27, 0x69, 0xa1, 0x5a, 0xe7, 0x69, 0x26, 0x7c, 0xd4, 0x1f, 0x9e, 0x08, 0x82, - 0x1e, 0x3a, 0xb8, 0xef, 0x9d, 0x53, 0xfd, 0x31, 0x23, 0x7e, 0x1e, 0x3c, 0xfc, 0x5b, 0x82, 0xed, - 0x85, 0x92, 0x43, 0x07, 0xd0, 0x30, 0xb4, 0x53, 0x6d, 0xf8, 0xee, 0x6c, 0xf0, 0xd1, 0xec, 0x9d, - 0x8d, 0x0c, 0xd3, 0xf8, 0x38, 0xd4, 0xcc, 0xf1, 0x60, 0x34, 0xd4, 0x7a, 0xfd, 0x37, 0x7d, 0xed, - 0xa4, 0xfe, 0x00, 0xbd, 0x80, 0xfd, 0x22, 0xd2, 0x60, 0xfc, 0xfe, 0x58, 0xd3, 0x4d, 0x5d, 0x1b, - 0x18, 0xdd, 0xd3, 0xba, 0xb4, 0x8c, 0xf6, 0xe1, 0xac, 0xdf, 0xd3, 0xcc, 0xfe, 0xe0, 0xf8, 0x6c, - 0x3c, 0x38, 0xa9, 0x97, 0xd0, 0x67, 0xa0, 0x2e, 0xa7, 0x9d, 0x8d, 0x8d, 0x84, 0x57, 0x5e, 0x26, - 0x6d, 0xf4, 0x7e, 0x94, 0x2d, 0xb6, 0x86, 0x9e, 0x43, 0x73, 0x19, 0x29, 0x5b, 0xaa, 0x72, 0xf8, - 0x93, 0x04, 0xdb, 0x0b, 0xee, 0x46, 0x09, 0xa2, 0xb8, 0x6c, 0x23, 0x23, 0xa3, 0x6b, 0x8c, 0x47, - 0xb7, 0xf6, 0xfe, 0x7f, 0x50, 0x8a, 0x48, 0xdd, 0x9e, 0xd1, 0xff, 0xa0, 0xd5, 0x25, 0xd4, 0x80, - 0xbd, 0xa2, 0xf9, 0xa1, 0x36, 0x38, 0xe9, 0x0f, 0xde, 0xd6, 0x4b, 0xa8, 0x09, 0x4f, 0x8b, 0x08, - 0xba, 0x76, 0xaa, 0x75, 0x47, 0xda, 0x49, 0xbd, 0xdc, 0xf9, 0xbd, 0x0c, 0x28, 0xaf, 0x0e, 0x07, - 0x57, 0x51, 0x47, 0x5f, 0x82, 0xbc, 0xec, 0xd3, 0x81, 0x5a, 0x99, 0xf7, 0x2b, 0xbe, 0x52, 0xca, - 0xe7, 0xf7, 0x60, 0x26, 0xef, 0xa0, 0xfa, 0x00, 0x4d, 0xe0, 0x7f, 0x05, 0xbf, 0x00, 0x74, 0xb0, - 0xf0, 0x22, 0x2e, 0x3e, 0x48, 0xca, 0xf3, 0xbb, 0x49, 0x59, 0x0e, 0x0e, 0x4f, 0x96, 0x3e, 0xc9, - 0xe8, 0x96, 0xda, 0x3b, 0xbe, 0x0a, 0xca, 0xe1, 0x7d, 0xa8, 0x59, 0x56, 0x1d, 0xd0, 0xe2, 0x5b, - 0x8a, 0xd4, 0x6c, 0x8d, 0xa5, 0x0f, 0xad, 0xb2, 0xbb, 0xd0, 0xa9, 0x5a, 0xf4, 0x2f, 0x56, 0x1f, - 0x1c, 0xbf, 0xf8, 0xe1, 0x60, 0x46, 0xf8, 0x45, 0x38, 0x69, 0xdb, 0xd4, 0x3d, 0x12, 0x2b, 0x25, - 0x3f, 0x64, 0x9b, 0x3a, 0x29, 0x30, 0x59, 0x8f, 0x91, 0x97, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, - 0x22, 0xaf, 0x34, 0x8a, 0x85, 0x0b, 0x00, 0x00, + 0x14, 0xad, 0xec, 0x38, 0x8d, 0xaf, 0x93, 0xd6, 0xe1, 0x82, 0x40, 0x55, 0xda, 0xd9, 0x51, 0xda, + 0xc1, 0x0b, 0x06, 0x07, 0x73, 0x87, 0x16, 0xc3, 0x30, 0xa0, 0x8e, 0xa3, 0xb6, 0x06, 0x52, 0xc7, + 0x90, 0xe5, 0x02, 0xdd, 0x8b, 0x20, 0xcb, 0x8c, 0x43, 0x54, 0x12, 0x15, 0x91, 0x0a, 0xe6, 0x6f, + 0xd9, 0xf6, 0x05, 0x7b, 0xd9, 0xcb, 0x9e, 0xf6, 0x0d, 0xfb, 0x95, 0xbd, 0xef, 0x6d, 0x90, 0x44, + 0x29, 0x6a, 0x2c, 0xc7, 0x01, 0xba, 0x47, 0x1e, 0x9e, 0xcb, 0x7b, 0xc8, 0x73, 0x2f, 0x49, 0x50, + 0x1c, 0x72, 0x85, 0x3f, 0x12, 0x6e, 0xfa, 0x17, 0xd4, 0xc3, 0xa6, 0x17, 0xba, 0x13, 0x1c, 0xb4, + 0xfd, 0x80, 0x72, 0x8a, 0xee, 0x8b, 0x39, 0x65, 0x6f, 0x46, 0xe9, 0xcc, 0xc1, 0x47, 0x31, 0x3c, + 0x09, 0xcf, 0x8f, 0xb0, 0xeb, 0xf3, 0x79, 0xc2, 0x52, 0x1a, 0x37, 0x27, 0x39, 0x71, 0x31, 0xe3, + 0x96, 0xeb, 0x0b, 0xc2, 0x4e, 0x9a, 0xc2, 0xa5, 0x53, 0xec, 0x30, 0x81, 0x6e, 0xa7, 0x28, 0x23, + 0x82, 0xa8, 0xfe, 0x21, 0x41, 0xe3, 0x94, 0x30, 0x3e, 0x8c, 0xa4, 0x0c, 0x62, 0x25, 0x7d, 0xef, + 0x0a, 0x7b, 0x9c, 0x06, 0x73, 0x1d, 0x5f, 0x86, 0x98, 0x71, 0xb4, 0x0f, 0x9b, 0x36, 0x0d, 0x3d, + 0x1e, 0xcc, 0x4d, 0x9b, 0x4e, 0xb1, 0x2c, 0x35, 0xa5, 0x56, 0x55, 0xaf, 0x09, 0xac, 0x47, 0xa7, + 0x18, 0xed, 0x41, 0xd5, 0x0a, 0xb0, 0x95, 0xcc, 0x97, 0xe2, 0xf9, 0x8d, 0x08, 0x88, 0x27, 0x77, + 0xa0, 0xe2, 0x10, 0x97, 0x70, 0xb9, 0xdc, 0x94, 0x5a, 0x15, 0x3d, 0x19, 0xa0, 0x97, 0x00, 0xbe, + 0x35, 0xc3, 0x26, 0xa7, 0x1f, 0xb1, 0x27, 0xaf, 0x35, 0xa5, 0x56, 0xad, 0x23, 0xb7, 0x85, 0xc2, + 0xb6, 0x11, 0xa1, 0x43, 0x6b, 0x46, 0x3c, 0x8b, 0x13, 0xea, 0xe9, 0xd5, 0x88, 0x1b, 0x83, 0xea, + 0x6f, 0x12, 0x34, 0x97, 0x4b, 0x66, 0x3e, 0xf5, 0x18, 0x46, 0x2f, 0xa1, 0x42, 0x38, 0x76, 0x99, + 0x2c, 0x35, 0xcb, 0xad, 0x5a, 0x67, 0x3f, 0x5b, 0xb8, 0x28, 0xaa, 0xcf, 0xb1, 0xab, 0x27, 0x7c, + 0xf4, 0x0a, 0x1e, 0x7a, 0xf8, 0x67, 0x6e, 0xe6, 0xb4, 0x95, 0x56, 0x68, 0xdb, 0x8a, 0x02, 0x86, + 0x99, 0xbe, 0x2e, 0x28, 0xc3, 0x30, 0xb0, 0x2f, 0x2c, 0x86, 0x73, 0xc9, 0xd2, 0xc3, 0x3c, 0x80, + 0xad, 0xbc, 0xed, 0x89, 0xc0, 0xaa, 0xbe, 0xe9, 0x5f, 0x53, 0x99, 0x6a, 0xc1, 0x5e, 0xe1, 0x12, + 0x62, 0x73, 0xc7, 0x45, 0x6b, 0xd4, 0x3a, 0x4f, 0xae, 0x37, 0x29, 0x82, 0xa7, 0xf9, 0xe8, 0x4f, + 0x53, 0x5c, 0x8a, 0x43, 0x2c, 0x60, 0xb2, 0x54, 0x6b, 0x66, 0x9c, 0xb4, 0xdc, 0xb8, 0xd2, 0xdd, + 0x8d, 0xfb, 0x4b, 0x82, 0xfd, 0x5b, 0x72, 0x8a, 0xcd, 0x3d, 0xff, 0xd4, 0xb9, 0x15, 0x9b, 0xfa, + 0xbf, 0x5c, 0x43, 0x0d, 0xa8, 0x71, 0xca, 0x2d, 0xc7, 0x8c, 0xcb, 0x5a, 0x94, 0x2a, 0xc4, 0x50, + 0x2f, 0x42, 0xd4, 0x57, 0xf0, 0x48, 0xc7, 0x0e, 0xfe, 0x0c, 0x57, 0xff, 0x29, 0xc1, 0xf6, 0x1b, + 0x87, 0x4e, 0x2c, 0x27, 0xb7, 0x02, 0x7a, 0x00, 0x25, 0x32, 0x15, 0x3d, 0x55, 0x22, 0xd3, 0x48, + 0x08, 0xfe, 0xf6, 0xc5, 0x77, 0xe6, 0x39, 0x0d, 0x5c, 0x8b, 0x8b, 0x66, 0x82, 0x08, 0x7a, 0x1d, + 0x23, 0x0b, 0xed, 0x58, 0x5e, 0xd1, 0x8e, 0x6b, 0x37, 0xda, 0xb1, 0x01, 0xb5, 0x44, 0xa5, 0xc9, + 0xe7, 0x3e, 0x96, 0x2b, 0x49, 0x82, 0x04, 0x32, 0xe6, 0x3e, 0x46, 0x0a, 0x6c, 0x38, 0xd4, 0xb6, + 0x1c, 0xc2, 0xe7, 0xf2, 0x7a, 0x12, 0x9c, 0x8e, 0xd1, 0x2e, 0xac, 0x07, 0x78, 0x46, 0xa8, 0x27, + 0xdf, 0x8f, 0x67, 0xc4, 0x08, 0x3d, 0x01, 0x60, 0xbe, 0xe5, 0x9a, 0xcc, 0xa6, 0x01, 0x96, 0x37, + 0x9a, 0x52, 0xab, 0xac, 0x57, 0x23, 0x64, 0x14, 0x01, 0xe8, 0x7b, 0x00, 0x3b, 0xc0, 0x16, 0xc7, + 0x53, 0xd3, 0xe2, 0x72, 0x35, 0xb6, 0x46, 0x69, 0x27, 0xb7, 0x58, 0x3b, 0xbd, 0xc5, 0xda, 0x46, + 0x7a, 0x8b, 0xe9, 0x55, 0xc1, 0xee, 0xf2, 0x28, 0x34, 0xf4, 0xa7, 0x69, 0x28, 0xac, 0x0e, 0x15, + 0xec, 0x2e, 0x57, 0x7f, 0x95, 0x60, 0xcb, 0xc0, 0x0e, 0x8e, 0x5c, 0x98, 0xf7, 0x28, 0xe3, 0xe8, + 0x05, 0x6c, 0x04, 0x98, 0xd1, 0x30, 0xb0, 0x93, 0x6b, 0xec, 0x41, 0x47, 0xb9, 0x2e, 0x90, 0x3c, + 0x33, 0x3a, 0x08, 0x3d, 0xe3, 0x46, 0x47, 0x62, 0x87, 0x41, 0x80, 0x3d, 0x7b, 0x9e, 0x5e, 0x6f, + 0xe9, 0x38, 0xea, 0x12, 0x3f, 0x20, 0x76, 0x62, 0x84, 0xa4, 0x27, 0x83, 0xc8, 0xa5, 0x09, 0x71, + 0x1c, 0xe2, 0xcd, 0xcc, 0xd0, 0x23, 0x5c, 0xb8, 0x50, 0x13, 0xd8, 0xd8, 0x23, 0x5c, 0xfd, 0x5d, + 0x02, 0x79, 0xd9, 0x75, 0x84, 0x7e, 0x84, 0xcd, 0x7c, 0x45, 0xc5, 0x6a, 0x6b, 0x39, 0xb5, 0x0b, + 0x85, 0xa4, 0xd7, 0x72, 0xc5, 0x86, 0x54, 0xd8, 0xb4, 0x2d, 0xdf, 0x9a, 0x10, 0x87, 0x70, 0x82, + 0x99, 0x5c, 0x4a, 0xea, 0x31, 0x8f, 0xa1, 0x6f, 0xa0, 0x62, 0x53, 0xc6, 0x99, 0x5c, 0x8e, 0x3b, + 0x6d, 0xb7, 0xf8, 0x24, 0xf4, 0x84, 0xa4, 0xfe, 0x5d, 0x82, 0x9d, 0xa2, 0x16, 0xfc, 0x5c, 0xa5, + 0x1d, 0x58, 0x67, 0xdc, 0xe2, 0x21, 0x8b, 0x0f, 0x36, 0x6f, 0x48, 0x2e, 0x64, 0x14, 0x33, 0x74, + 0xc1, 0x44, 0x3f, 0x40, 0xcd, 0x62, 0x8c, 0xcc, 0xbc, 0xa4, 0x28, 0xca, 0x2b, 0x8b, 0x02, 0x52, + 0x7a, 0x97, 0x47, 0xc1, 0x41, 0xd2, 0xc8, 0x71, 0xf0, 0xda, 0xea, 0xe0, 0x94, 0xde, 0xe5, 0xe8, + 0x2d, 0x6c, 0x33, 0xe2, 0x9b, 0x53, 0xc2, 0x7c, 0x8b, 0xdb, 0x17, 0x66, 0x10, 0x3a, 0x49, 0x0b, + 0xd5, 0x3a, 0x8f, 0x33, 0xe1, 0xa3, 0xfe, 0xf0, 0x44, 0x10, 0xf4, 0xd0, 0xc1, 0x7d, 0xef, 0x9c, + 0xea, 0x0f, 0x19, 0xf1, 0xf3, 0xe0, 0xe1, 0xbf, 0x12, 0x6c, 0x2f, 0x94, 0x1c, 0x3a, 0x80, 0x86, + 0xa1, 0x9d, 0x6a, 0xc3, 0xb7, 0x67, 0x83, 0x0f, 0x66, 0xef, 0x6c, 0x64, 0x98, 0xc6, 0x87, 0xa1, + 0x66, 0x8e, 0x07, 0xa3, 0xa1, 0xd6, 0xeb, 0xbf, 0xee, 0x6b, 0x27, 0xf5, 0x7b, 0xe8, 0x19, 0xec, + 0x17, 0x91, 0x06, 0xe3, 0x77, 0xc7, 0x9a, 0x6e, 0xea, 0xda, 0xc0, 0xe8, 0x9e, 0xd6, 0xa5, 0x65, + 0xb4, 0xf7, 0x67, 0xfd, 0x9e, 0x66, 0xf6, 0x07, 0xc7, 0x67, 0xe3, 0xc1, 0x49, 0xbd, 0x84, 0xbe, + 0x02, 0x75, 0x39, 0xed, 0x6c, 0x6c, 0x24, 0xbc, 0xf2, 0x32, 0x69, 0xa3, 0x77, 0xa3, 0x6c, 0xb1, + 0x35, 0xf4, 0x14, 0x9a, 0xcb, 0x48, 0xd9, 0x52, 0x95, 0xc3, 0x5f, 0x24, 0xd8, 0x5e, 0x70, 0x37, + 0x4a, 0x10, 0xc5, 0x65, 0x1b, 0x19, 0x19, 0x5d, 0x63, 0x3c, 0xba, 0xb1, 0xf7, 0x2f, 0x41, 0x29, + 0x22, 0x75, 0x7b, 0x46, 0xff, 0xbd, 0x56, 0x97, 0x50, 0x03, 0xf6, 0x8a, 0xe6, 0x87, 0xda, 0xe0, + 0xa4, 0x3f, 0x78, 0x53, 0x2f, 0xa1, 0x26, 0x3c, 0x2e, 0x22, 0xe8, 0xda, 0xa9, 0xd6, 0x1d, 0x69, + 0x27, 0xf5, 0x72, 0xe7, 0xcf, 0x32, 0xa0, 0xbc, 0x3a, 0x1c, 0x5c, 0x45, 0x1d, 0x7d, 0x09, 0xf2, + 0xb2, 0x6f, 0x07, 0x6a, 0x65, 0xde, 0xaf, 0xf8, 0x4c, 0x29, 0x5f, 0xdf, 0x81, 0x99, 0xbc, 0x84, + 0xea, 0x3d, 0x34, 0x81, 0x2f, 0x0a, 0xfe, 0x01, 0xe8, 0x60, 0xe1, 0x4d, 0x5c, 0x7c, 0x92, 0x94, + 0xa7, 0xb7, 0x93, 0xb2, 0x1c, 0x1c, 0x1e, 0x2d, 0x7d, 0x94, 0xd1, 0x0d, 0xb5, 0xb7, 0x7c, 0x16, + 0x94, 0xc3, 0xbb, 0x50, 0xb3, 0xac, 0x3a, 0xa0, 0xc5, 0xd7, 0x14, 0xa9, 0xd9, 0x1a, 0x4b, 0x9f, + 0x5a, 0x65, 0x77, 0xa1, 0x53, 0xb5, 0xe8, 0x67, 0xac, 0xde, 0x3b, 0x7e, 0xf6, 0xd3, 0xc1, 0x8c, + 0xf0, 0x8b, 0x70, 0xd2, 0xb6, 0xa9, 0x7b, 0x24, 0x56, 0x4a, 0xfe, 0xc8, 0x36, 0x75, 0x52, 0x60, + 0xb2, 0x1e, 0x23, 0xcf, 0xff, 0x0b, 0x00, 0x00, 0xff, 0xff, 0xe2, 0x37, 0x59, 0x0b, 0x87, 0x0b, + 0x00, 0x00, } From 27bd4b10bf4f5810f4ee1306b84018b58142ef51 Mon Sep 17 00:00:00 2001 From: Nishad Musthafa Date: Tue, 19 Aug 2025 15:26:21 -0700 Subject: [PATCH 19/20] Making spam score a double --- protobufs/livekit_phone_number.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/protobufs/livekit_phone_number.proto b/protobufs/livekit_phone_number.proto index 054198a68..f92049aeb 100644 --- a/protobufs/livekit_phone_number.proto +++ b/protobufs/livekit_phone_number.proto @@ -97,7 +97,7 @@ message GlobalPhoneNumber { string number_type = 5; // e.g., local, toll-free, national, mobile string locality = 6; // City/locality (e.g., "San Francisco") string region = 7; // State/region (e.g., "CA") - int64 spam_score = 8; // can be used later for fraud detection + double spam_score = 8; // can be used later for fraud detection google.protobuf.Timestamp created_at = 9; // timestamp when created google.protobuf.Timestamp updated_at = 10; // timestamp when updated } From 89c753b61099c347b879cf8e558149d1be06bed5 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 19 Aug 2025 22:45:33 +0000 Subject: [PATCH 20/20] generated protobuf --- livekit/livekit_models.pb.go | 788 ++++++++++++++++++-------- livekit/livekit_phone_number.pb.go | 6 +- livekit/livekit_phone_number.twirp.go | 70 +-- 3 files changed, 601 insertions(+), 263 deletions(-) diff --git a/livekit/livekit_models.pb.go b/livekit/livekit_models.pb.go index bb82049d2..ca026cab5 100644 --- a/livekit/livekit_models.pb.go +++ b/livekit/livekit_models.pb.go @@ -1114,7 +1114,7 @@ func (x ServerInfo_Edition) Number() protoreflect.EnumNumber { // Deprecated: Use ServerInfo_Edition.Descriptor instead. func (ServerInfo_Edition) EnumDescriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{25, 0} + return file_livekit_models_proto_rawDescGZIP(), []int{27, 0} } type ClientInfo_SDK int32 @@ -1199,7 +1199,7 @@ func (x ClientInfo_SDK) Number() protoreflect.EnumNumber { // Deprecated: Use ClientInfo_SDK.Descriptor instead. func (ClientInfo_SDK) EnumDescriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{26, 0} + return file_livekit_models_proto_rawDescGZIP(), []int{28, 0} } // enum for operation types (specific to TextHeader) @@ -1252,7 +1252,7 @@ func (x DataStream_OperationType) Number() protoreflect.EnumNumber { // Deprecated: Use DataStream_OperationType.Descriptor instead. func (DataStream_OperationType) EnumDescriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{37, 0} + return file_livekit_models_proto_rawDescGZIP(), []int{39, 0} } type Pagination struct { @@ -2016,8 +2016,13 @@ type SimulcastCodecInfo struct { Cid string `protobuf:"bytes,3,opt,name=cid,proto3" json:"cid,omitempty"` Layers []*VideoLayer `protobuf:"bytes,4,rep,name=layers,proto3" json:"layers,omitempty"` VideoLayerMode VideoLayer_Mode `protobuf:"varint,5,opt,name=video_layer_mode,json=videoLayerMode,proto3,enum=livekit.VideoLayer_Mode" json:"video_layer_mode,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + // cid (client side id for track) could be different between + // signalling (AddTrackRequest) and SDP offer. This field + // will be populated only if it is different to avoid + // duplication and keep the representation concise. + SdpCid string `protobuf:"bytes,6,opt,name=sdp_cid,json=sdpCid,proto3" json:"sdp_cid,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SimulcastCodecInfo) Reset() { @@ -2085,6 +2090,13 @@ func (x *SimulcastCodecInfo) GetVideoLayerMode() VideoLayer_Mode { return VideoLayer_MODE_UNUSED } +func (x *SimulcastCodecInfo) GetSdpCid() string { + if x != nil { + return x.SdpCid + } + return "" +} + type TrackInfo struct { state protoimpl.MessageState `protogen:"open.v1"` Sid string `protobuf:"bytes,1,opt,name=sid,proto3" json:"sid,omitempty"` @@ -2423,6 +2435,7 @@ type DataPacket struct { // *DataPacket_StreamHeader // *DataPacket_StreamChunk // *DataPacket_StreamTrailer + // *DataPacket_EncryptedPacket Value isDataPacket_Value `protobuf_oneof:"value"` // sequence number of reliable packet Sequence uint32 `protobuf:"varint,16,opt,name=sequence,proto3" json:"sequence,omitempty"` @@ -2600,6 +2613,15 @@ func (x *DataPacket) GetStreamTrailer() *DataStream_Trailer { return nil } +func (x *DataPacket) GetEncryptedPacket() *EncryptedPacket { + if x != nil { + if x, ok := x.Value.(*DataPacket_EncryptedPacket); ok { + return x.EncryptedPacket + } + } + return nil +} + func (x *DataPacket) GetSequence() uint32 { if x != nil { return x.Sequence @@ -2667,6 +2689,10 @@ type DataPacket_StreamTrailer struct { StreamTrailer *DataStream_Trailer `protobuf:"bytes,15,opt,name=stream_trailer,json=streamTrailer,proto3,oneof"` } +type DataPacket_EncryptedPacket struct { + EncryptedPacket *EncryptedPacket `protobuf:"bytes,18,opt,name=encrypted_packet,json=encryptedPacket,proto3,oneof"` +} + func (*DataPacket_User) isDataPacket_Value() {} func (*DataPacket_Speaker) isDataPacket_Value() {} @@ -2691,6 +2717,270 @@ func (*DataPacket_StreamChunk) isDataPacket_Value() {} func (*DataPacket_StreamTrailer) isDataPacket_Value() {} +func (*DataPacket_EncryptedPacket) isDataPacket_Value() {} + +type EncryptedPacket struct { + state protoimpl.MessageState `protogen:"open.v1"` + EncryptionType Encryption_Type `protobuf:"varint,1,opt,name=encryption_type,json=encryptionType,proto3,enum=livekit.Encryption_Type" json:"encryption_type,omitempty"` + Iv []byte `protobuf:"bytes,2,opt,name=iv,proto3" json:"iv,omitempty"` + KeyIndex uint32 `protobuf:"varint,3,opt,name=key_index,json=keyIndex,proto3" json:"key_index,omitempty"` + EncryptedValue []byte `protobuf:"bytes,4,opt,name=encrypted_value,json=encryptedValue,proto3" json:"encrypted_value,omitempty"` // This is an encrypted EncryptedPacketPayload message representation + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *EncryptedPacket) Reset() { + *x = EncryptedPacket{} + mi := &file_livekit_models_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *EncryptedPacket) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EncryptedPacket) ProtoMessage() {} + +func (x *EncryptedPacket) ProtoReflect() protoreflect.Message { + mi := &file_livekit_models_proto_msgTypes[13] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EncryptedPacket.ProtoReflect.Descriptor instead. +func (*EncryptedPacket) Descriptor() ([]byte, []int) { + return file_livekit_models_proto_rawDescGZIP(), []int{13} +} + +func (x *EncryptedPacket) GetEncryptionType() Encryption_Type { + if x != nil { + return x.EncryptionType + } + return Encryption_NONE +} + +func (x *EncryptedPacket) GetIv() []byte { + if x != nil { + return x.Iv + } + return nil +} + +func (x *EncryptedPacket) GetKeyIndex() uint32 { + if x != nil { + return x.KeyIndex + } + return 0 +} + +func (x *EncryptedPacket) GetEncryptedValue() []byte { + if x != nil { + return x.EncryptedValue + } + return nil +} + +type EncryptedPacketPayload struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Value: + // + // *EncryptedPacketPayload_User + // *EncryptedPacketPayload_Metrics + // *EncryptedPacketPayload_ChatMessage + // *EncryptedPacketPayload_RpcRequest + // *EncryptedPacketPayload_RpcAck + // *EncryptedPacketPayload_RpcResponse + // *EncryptedPacketPayload_StreamHeader + // *EncryptedPacketPayload_StreamChunk + // *EncryptedPacketPayload_StreamTrailer + Value isEncryptedPacketPayload_Value `protobuf_oneof:"value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *EncryptedPacketPayload) Reset() { + *x = EncryptedPacketPayload{} + mi := &file_livekit_models_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *EncryptedPacketPayload) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EncryptedPacketPayload) ProtoMessage() {} + +func (x *EncryptedPacketPayload) ProtoReflect() protoreflect.Message { + mi := &file_livekit_models_proto_msgTypes[14] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EncryptedPacketPayload.ProtoReflect.Descriptor instead. +func (*EncryptedPacketPayload) Descriptor() ([]byte, []int) { + return file_livekit_models_proto_rawDescGZIP(), []int{14} +} + +func (x *EncryptedPacketPayload) GetValue() isEncryptedPacketPayload_Value { + if x != nil { + return x.Value + } + return nil +} + +func (x *EncryptedPacketPayload) GetUser() *UserPacket { + if x != nil { + if x, ok := x.Value.(*EncryptedPacketPayload_User); ok { + return x.User + } + } + return nil +} + +func (x *EncryptedPacketPayload) GetMetrics() *MetricsBatch { + if x != nil { + if x, ok := x.Value.(*EncryptedPacketPayload_Metrics); ok { + return x.Metrics + } + } + return nil +} + +func (x *EncryptedPacketPayload) GetChatMessage() *ChatMessage { + if x != nil { + if x, ok := x.Value.(*EncryptedPacketPayload_ChatMessage); ok { + return x.ChatMessage + } + } + return nil +} + +func (x *EncryptedPacketPayload) GetRpcRequest() *RpcRequest { + if x != nil { + if x, ok := x.Value.(*EncryptedPacketPayload_RpcRequest); ok { + return x.RpcRequest + } + } + return nil +} + +func (x *EncryptedPacketPayload) GetRpcAck() *RpcAck { + if x != nil { + if x, ok := x.Value.(*EncryptedPacketPayload_RpcAck); ok { + return x.RpcAck + } + } + return nil +} + +func (x *EncryptedPacketPayload) GetRpcResponse() *RpcResponse { + if x != nil { + if x, ok := x.Value.(*EncryptedPacketPayload_RpcResponse); ok { + return x.RpcResponse + } + } + return nil +} + +func (x *EncryptedPacketPayload) GetStreamHeader() *DataStream_Header { + if x != nil { + if x, ok := x.Value.(*EncryptedPacketPayload_StreamHeader); ok { + return x.StreamHeader + } + } + return nil +} + +func (x *EncryptedPacketPayload) GetStreamChunk() *DataStream_Chunk { + if x != nil { + if x, ok := x.Value.(*EncryptedPacketPayload_StreamChunk); ok { + return x.StreamChunk + } + } + return nil +} + +func (x *EncryptedPacketPayload) GetStreamTrailer() *DataStream_Trailer { + if x != nil { + if x, ok := x.Value.(*EncryptedPacketPayload_StreamTrailer); ok { + return x.StreamTrailer + } + } + return nil +} + +type isEncryptedPacketPayload_Value interface { + isEncryptedPacketPayload_Value() +} + +type EncryptedPacketPayload_User struct { + User *UserPacket `protobuf:"bytes,1,opt,name=user,proto3,oneof"` +} + +type EncryptedPacketPayload_Metrics struct { + Metrics *MetricsBatch `protobuf:"bytes,2,opt,name=metrics,proto3,oneof"` +} + +type EncryptedPacketPayload_ChatMessage struct { + ChatMessage *ChatMessage `protobuf:"bytes,3,opt,name=chat_message,json=chatMessage,proto3,oneof"` +} + +type EncryptedPacketPayload_RpcRequest struct { + RpcRequest *RpcRequest `protobuf:"bytes,4,opt,name=rpc_request,json=rpcRequest,proto3,oneof"` +} + +type EncryptedPacketPayload_RpcAck struct { + RpcAck *RpcAck `protobuf:"bytes,5,opt,name=rpc_ack,json=rpcAck,proto3,oneof"` +} + +type EncryptedPacketPayload_RpcResponse struct { + RpcResponse *RpcResponse `protobuf:"bytes,6,opt,name=rpc_response,json=rpcResponse,proto3,oneof"` +} + +type EncryptedPacketPayload_StreamHeader struct { + StreamHeader *DataStream_Header `protobuf:"bytes,7,opt,name=stream_header,json=streamHeader,proto3,oneof"` +} + +type EncryptedPacketPayload_StreamChunk struct { + StreamChunk *DataStream_Chunk `protobuf:"bytes,8,opt,name=stream_chunk,json=streamChunk,proto3,oneof"` +} + +type EncryptedPacketPayload_StreamTrailer struct { + StreamTrailer *DataStream_Trailer `protobuf:"bytes,9,opt,name=stream_trailer,json=streamTrailer,proto3,oneof"` +} + +func (*EncryptedPacketPayload_User) isEncryptedPacketPayload_Value() {} + +func (*EncryptedPacketPayload_Metrics) isEncryptedPacketPayload_Value() {} + +func (*EncryptedPacketPayload_ChatMessage) isEncryptedPacketPayload_Value() {} + +func (*EncryptedPacketPayload_RpcRequest) isEncryptedPacketPayload_Value() {} + +func (*EncryptedPacketPayload_RpcAck) isEncryptedPacketPayload_Value() {} + +func (*EncryptedPacketPayload_RpcResponse) isEncryptedPacketPayload_Value() {} + +func (*EncryptedPacketPayload_StreamHeader) isEncryptedPacketPayload_Value() {} + +func (*EncryptedPacketPayload_StreamChunk) isEncryptedPacketPayload_Value() {} + +func (*EncryptedPacketPayload_StreamTrailer) isEncryptedPacketPayload_Value() {} + // Deprecated: Marked as deprecated in livekit_models.proto. type ActiveSpeakerUpdate struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -2701,7 +2991,7 @@ type ActiveSpeakerUpdate struct { func (x *ActiveSpeakerUpdate) Reset() { *x = ActiveSpeakerUpdate{} - mi := &file_livekit_models_proto_msgTypes[13] + mi := &file_livekit_models_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2713,7 +3003,7 @@ func (x *ActiveSpeakerUpdate) String() string { func (*ActiveSpeakerUpdate) ProtoMessage() {} func (x *ActiveSpeakerUpdate) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[13] + mi := &file_livekit_models_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2726,7 +3016,7 @@ func (x *ActiveSpeakerUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use ActiveSpeakerUpdate.ProtoReflect.Descriptor instead. func (*ActiveSpeakerUpdate) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{13} + return file_livekit_models_proto_rawDescGZIP(), []int{15} } func (x *ActiveSpeakerUpdate) GetSpeakers() []*SpeakerInfo { @@ -2749,7 +3039,7 @@ type SpeakerInfo struct { func (x *SpeakerInfo) Reset() { *x = SpeakerInfo{} - mi := &file_livekit_models_proto_msgTypes[14] + mi := &file_livekit_models_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2761,7 +3051,7 @@ func (x *SpeakerInfo) String() string { func (*SpeakerInfo) ProtoMessage() {} func (x *SpeakerInfo) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[14] + mi := &file_livekit_models_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2774,7 +3064,7 @@ func (x *SpeakerInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use SpeakerInfo.ProtoReflect.Descriptor instead. func (*SpeakerInfo) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{14} + return file_livekit_models_proto_rawDescGZIP(), []int{16} } func (x *SpeakerInfo) GetSid() string { @@ -2818,7 +3108,7 @@ type UserPacket struct { DestinationIdentities []string `protobuf:"bytes,6,rep,name=destination_identities,json=destinationIdentities,proto3" json:"destination_identities,omitempty"` // topic under which the message was published Topic *string `protobuf:"bytes,4,opt,name=topic,proto3,oneof" json:"topic,omitempty"` - // Unique ID to indentify the message + // Unique ID to identify the message Id *string `protobuf:"bytes,8,opt,name=id,proto3,oneof" json:"id,omitempty"` // start and end time allow relating the message to specific media time StartTime *uint64 `protobuf:"varint,9,opt,name=start_time,json=startTime,proto3,oneof" json:"start_time,omitempty"` @@ -2831,7 +3121,7 @@ type UserPacket struct { func (x *UserPacket) Reset() { *x = UserPacket{} - mi := &file_livekit_models_proto_msgTypes[15] + mi := &file_livekit_models_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2843,7 +3133,7 @@ func (x *UserPacket) String() string { func (*UserPacket) ProtoMessage() {} func (x *UserPacket) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[15] + mi := &file_livekit_models_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2856,7 +3146,7 @@ func (x *UserPacket) ProtoReflect() protoreflect.Message { // Deprecated: Use UserPacket.ProtoReflect.Descriptor instead. func (*UserPacket) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{15} + return file_livekit_models_proto_rawDescGZIP(), []int{17} } // Deprecated: Marked as deprecated in livekit_models.proto. @@ -2943,7 +3233,7 @@ type SipDTMF struct { func (x *SipDTMF) Reset() { *x = SipDTMF{} - mi := &file_livekit_models_proto_msgTypes[16] + mi := &file_livekit_models_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2955,7 +3245,7 @@ func (x *SipDTMF) String() string { func (*SipDTMF) ProtoMessage() {} func (x *SipDTMF) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[16] + mi := &file_livekit_models_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2968,7 +3258,7 @@ func (x *SipDTMF) ProtoReflect() protoreflect.Message { // Deprecated: Use SipDTMF.ProtoReflect.Descriptor instead. func (*SipDTMF) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{16} + return file_livekit_models_proto_rawDescGZIP(), []int{18} } func (x *SipDTMF) GetCode() uint32 { @@ -2997,7 +3287,7 @@ type Transcription struct { func (x *Transcription) Reset() { *x = Transcription{} - mi := &file_livekit_models_proto_msgTypes[17] + mi := &file_livekit_models_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3009,7 +3299,7 @@ func (x *Transcription) String() string { func (*Transcription) ProtoMessage() {} func (x *Transcription) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[17] + mi := &file_livekit_models_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3022,7 +3312,7 @@ func (x *Transcription) ProtoReflect() protoreflect.Message { // Deprecated: Use Transcription.ProtoReflect.Descriptor instead. func (*Transcription) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{17} + return file_livekit_models_proto_rawDescGZIP(), []int{19} } func (x *Transcription) GetTranscribedParticipantIdentity() string { @@ -3060,7 +3350,7 @@ type TranscriptionSegment struct { func (x *TranscriptionSegment) Reset() { *x = TranscriptionSegment{} - mi := &file_livekit_models_proto_msgTypes[18] + mi := &file_livekit_models_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3072,7 +3362,7 @@ func (x *TranscriptionSegment) String() string { func (*TranscriptionSegment) ProtoMessage() {} func (x *TranscriptionSegment) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[18] + mi := &file_livekit_models_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3085,7 +3375,7 @@ func (x *TranscriptionSegment) ProtoReflect() protoreflect.Message { // Deprecated: Use TranscriptionSegment.ProtoReflect.Descriptor instead. func (*TranscriptionSegment) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{18} + return file_livekit_models_proto_rawDescGZIP(), []int{20} } func (x *TranscriptionSegment) GetId() string { @@ -3144,7 +3434,7 @@ type ChatMessage struct { func (x *ChatMessage) Reset() { *x = ChatMessage{} - mi := &file_livekit_models_proto_msgTypes[19] + mi := &file_livekit_models_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3156,7 +3446,7 @@ func (x *ChatMessage) String() string { func (*ChatMessage) ProtoMessage() {} func (x *ChatMessage) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[19] + mi := &file_livekit_models_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3169,7 +3459,7 @@ func (x *ChatMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use ChatMessage.ProtoReflect.Descriptor instead. func (*ChatMessage) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{19} + return file_livekit_models_proto_rawDescGZIP(), []int{21} } func (x *ChatMessage) GetId() string { @@ -3227,7 +3517,7 @@ type RpcRequest struct { func (x *RpcRequest) Reset() { *x = RpcRequest{} - mi := &file_livekit_models_proto_msgTypes[20] + mi := &file_livekit_models_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3239,7 +3529,7 @@ func (x *RpcRequest) String() string { func (*RpcRequest) ProtoMessage() {} func (x *RpcRequest) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[20] + mi := &file_livekit_models_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3252,7 +3542,7 @@ func (x *RpcRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RpcRequest.ProtoReflect.Descriptor instead. func (*RpcRequest) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{20} + return file_livekit_models_proto_rawDescGZIP(), []int{22} } func (x *RpcRequest) GetId() string { @@ -3299,7 +3589,7 @@ type RpcAck struct { func (x *RpcAck) Reset() { *x = RpcAck{} - mi := &file_livekit_models_proto_msgTypes[21] + mi := &file_livekit_models_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3311,7 +3601,7 @@ func (x *RpcAck) String() string { func (*RpcAck) ProtoMessage() {} func (x *RpcAck) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[21] + mi := &file_livekit_models_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3324,7 +3614,7 @@ func (x *RpcAck) ProtoReflect() protoreflect.Message { // Deprecated: Use RpcAck.ProtoReflect.Descriptor instead. func (*RpcAck) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{21} + return file_livekit_models_proto_rawDescGZIP(), []int{23} } func (x *RpcAck) GetRequestId() string { @@ -3348,7 +3638,7 @@ type RpcResponse struct { func (x *RpcResponse) Reset() { *x = RpcResponse{} - mi := &file_livekit_models_proto_msgTypes[22] + mi := &file_livekit_models_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3360,7 +3650,7 @@ func (x *RpcResponse) String() string { func (*RpcResponse) ProtoMessage() {} func (x *RpcResponse) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[22] + mi := &file_livekit_models_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3373,7 +3663,7 @@ func (x *RpcResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RpcResponse.ProtoReflect.Descriptor instead. func (*RpcResponse) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{22} + return file_livekit_models_proto_rawDescGZIP(), []int{24} } func (x *RpcResponse) GetRequestId() string { @@ -3435,7 +3725,7 @@ type RpcError struct { func (x *RpcError) Reset() { *x = RpcError{} - mi := &file_livekit_models_proto_msgTypes[23] + mi := &file_livekit_models_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3447,7 +3737,7 @@ func (x *RpcError) String() string { func (*RpcError) ProtoMessage() {} func (x *RpcError) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[23] + mi := &file_livekit_models_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3460,7 +3750,7 @@ func (x *RpcError) ProtoReflect() protoreflect.Message { // Deprecated: Use RpcError.ProtoReflect.Descriptor instead. func (*RpcError) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{23} + return file_livekit_models_proto_rawDescGZIP(), []int{25} } func (x *RpcError) GetCode() uint32 { @@ -3495,7 +3785,7 @@ type ParticipantTracks struct { func (x *ParticipantTracks) Reset() { *x = ParticipantTracks{} - mi := &file_livekit_models_proto_msgTypes[24] + mi := &file_livekit_models_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3507,7 +3797,7 @@ func (x *ParticipantTracks) String() string { func (*ParticipantTracks) ProtoMessage() {} func (x *ParticipantTracks) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[24] + mi := &file_livekit_models_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3520,7 +3810,7 @@ func (x *ParticipantTracks) ProtoReflect() protoreflect.Message { // Deprecated: Use ParticipantTracks.ProtoReflect.Descriptor instead. func (*ParticipantTracks) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{24} + return file_livekit_models_proto_rawDescGZIP(), []int{26} } func (x *ParticipantTracks) GetParticipantSid() string { @@ -3554,7 +3844,7 @@ type ServerInfo struct { func (x *ServerInfo) Reset() { *x = ServerInfo{} - mi := &file_livekit_models_proto_msgTypes[25] + mi := &file_livekit_models_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3566,7 +3856,7 @@ func (x *ServerInfo) String() string { func (*ServerInfo) ProtoMessage() {} func (x *ServerInfo) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[25] + mi := &file_livekit_models_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3579,7 +3869,7 @@ func (x *ServerInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ServerInfo.ProtoReflect.Descriptor instead. func (*ServerInfo) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{25} + return file_livekit_models_proto_rawDescGZIP(), []int{27} } func (x *ServerInfo) GetEdition() ServerInfo_Edition { @@ -3654,7 +3944,7 @@ type ClientInfo struct { func (x *ClientInfo) Reset() { *x = ClientInfo{} - mi := &file_livekit_models_proto_msgTypes[26] + mi := &file_livekit_models_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3666,7 +3956,7 @@ func (x *ClientInfo) String() string { func (*ClientInfo) ProtoMessage() {} func (x *ClientInfo) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[26] + mi := &file_livekit_models_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3679,7 +3969,7 @@ func (x *ClientInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ClientInfo.ProtoReflect.Descriptor instead. func (*ClientInfo) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{26} + return file_livekit_models_proto_rawDescGZIP(), []int{28} } func (x *ClientInfo) GetSdk() ClientInfo_SDK { @@ -3773,7 +4063,7 @@ type ClientConfiguration struct { func (x *ClientConfiguration) Reset() { *x = ClientConfiguration{} - mi := &file_livekit_models_proto_msgTypes[27] + mi := &file_livekit_models_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3785,7 +4075,7 @@ func (x *ClientConfiguration) String() string { func (*ClientConfiguration) ProtoMessage() {} func (x *ClientConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[27] + mi := &file_livekit_models_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3798,7 +4088,7 @@ func (x *ClientConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use ClientConfiguration.ProtoReflect.Descriptor instead. func (*ClientConfiguration) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{27} + return file_livekit_models_proto_rawDescGZIP(), []int{29} } func (x *ClientConfiguration) GetVideo() *VideoConfiguration { @@ -3845,7 +4135,7 @@ type VideoConfiguration struct { func (x *VideoConfiguration) Reset() { *x = VideoConfiguration{} - mi := &file_livekit_models_proto_msgTypes[28] + mi := &file_livekit_models_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3857,7 +4147,7 @@ func (x *VideoConfiguration) String() string { func (*VideoConfiguration) ProtoMessage() {} func (x *VideoConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[28] + mi := &file_livekit_models_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3870,7 +4160,7 @@ func (x *VideoConfiguration) ProtoReflect() protoreflect.Message { // Deprecated: Use VideoConfiguration.ProtoReflect.Descriptor instead. func (*VideoConfiguration) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{28} + return file_livekit_models_proto_rawDescGZIP(), []int{30} } func (x *VideoConfiguration) GetHardwareEncoder() ClientConfigSetting { @@ -3892,7 +4182,7 @@ type DisabledCodecs struct { func (x *DisabledCodecs) Reset() { *x = DisabledCodecs{} - mi := &file_livekit_models_proto_msgTypes[29] + mi := &file_livekit_models_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3904,7 +4194,7 @@ func (x *DisabledCodecs) String() string { func (*DisabledCodecs) ProtoMessage() {} func (x *DisabledCodecs) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[29] + mi := &file_livekit_models_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3917,7 +4207,7 @@ func (x *DisabledCodecs) ProtoReflect() protoreflect.Message { // Deprecated: Use DisabledCodecs.ProtoReflect.Descriptor instead. func (*DisabledCodecs) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{29} + return file_livekit_models_proto_rawDescGZIP(), []int{31} } func (x *DisabledCodecs) GetCodecs() []*Codec { @@ -3951,7 +4241,7 @@ type RTPDrift struct { func (x *RTPDrift) Reset() { *x = RTPDrift{} - mi := &file_livekit_models_proto_msgTypes[30] + mi := &file_livekit_models_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3963,7 +4253,7 @@ func (x *RTPDrift) String() string { func (*RTPDrift) ProtoMessage() {} func (x *RTPDrift) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[30] + mi := &file_livekit_models_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3976,7 +4266,7 @@ func (x *RTPDrift) ProtoReflect() protoreflect.Message { // Deprecated: Use RTPDrift.ProtoReflect.Descriptor instead. func (*RTPDrift) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{30} + return file_livekit_models_proto_rawDescGZIP(), []int{32} } func (x *RTPDrift) GetStartTime() *timestamppb.Timestamp { @@ -4095,7 +4385,7 @@ type RTPStats struct { func (x *RTPStats) Reset() { *x = RTPStats{} - mi := &file_livekit_models_proto_msgTypes[31] + mi := &file_livekit_models_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4107,7 +4397,7 @@ func (x *RTPStats) String() string { func (*RTPStats) ProtoMessage() {} func (x *RTPStats) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[31] + mi := &file_livekit_models_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4120,7 +4410,7 @@ func (x *RTPStats) ProtoReflect() protoreflect.Message { // Deprecated: Use RTPStats.ProtoReflect.Descriptor instead. func (*RTPStats) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{31} + return file_livekit_models_proto_rawDescGZIP(), []int{33} } func (x *RTPStats) GetStartTime() *timestamppb.Timestamp { @@ -4453,7 +4743,7 @@ type RTCPSenderReportState struct { func (x *RTCPSenderReportState) Reset() { *x = RTCPSenderReportState{} - mi := &file_livekit_models_proto_msgTypes[32] + mi := &file_livekit_models_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4465,7 +4755,7 @@ func (x *RTCPSenderReportState) String() string { func (*RTCPSenderReportState) ProtoMessage() {} func (x *RTCPSenderReportState) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[32] + mi := &file_livekit_models_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4478,7 +4768,7 @@ func (x *RTCPSenderReportState) ProtoReflect() protoreflect.Message { // Deprecated: Use RTCPSenderReportState.ProtoReflect.Descriptor instead. func (*RTCPSenderReportState) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{32} + return file_livekit_models_proto_rawDescGZIP(), []int{34} } func (x *RTCPSenderReportState) GetRtpTimestamp() uint32 { @@ -4549,7 +4839,7 @@ type RTPForwarderState struct { func (x *RTPForwarderState) Reset() { *x = RTPForwarderState{} - mi := &file_livekit_models_proto_msgTypes[33] + mi := &file_livekit_models_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4561,7 +4851,7 @@ func (x *RTPForwarderState) String() string { func (*RTPForwarderState) ProtoMessage() {} func (x *RTPForwarderState) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[33] + mi := &file_livekit_models_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4574,7 +4864,7 @@ func (x *RTPForwarderState) ProtoReflect() protoreflect.Message { // Deprecated: Use RTPForwarderState.ProtoReflect.Descriptor instead. func (*RTPForwarderState) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{33} + return file_livekit_models_proto_rawDescGZIP(), []int{35} } func (x *RTPForwarderState) GetStarted() bool { @@ -4666,7 +4956,7 @@ type RTPMungerState struct { func (x *RTPMungerState) Reset() { *x = RTPMungerState{} - mi := &file_livekit_models_proto_msgTypes[34] + mi := &file_livekit_models_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4678,7 +4968,7 @@ func (x *RTPMungerState) String() string { func (*RTPMungerState) ProtoMessage() {} func (x *RTPMungerState) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[34] + mi := &file_livekit_models_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4691,7 +4981,7 @@ func (x *RTPMungerState) ProtoReflect() protoreflect.Message { // Deprecated: Use RTPMungerState.ProtoReflect.Descriptor instead. func (*RTPMungerState) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{34} + return file_livekit_models_proto_rawDescGZIP(), []int{36} } func (x *RTPMungerState) GetExtLastSequenceNumber() uint64 { @@ -4751,7 +5041,7 @@ type VP8MungerState struct { func (x *VP8MungerState) Reset() { *x = VP8MungerState{} - mi := &file_livekit_models_proto_msgTypes[35] + mi := &file_livekit_models_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4763,7 +5053,7 @@ func (x *VP8MungerState) String() string { func (*VP8MungerState) ProtoMessage() {} func (x *VP8MungerState) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[35] + mi := &file_livekit_models_proto_msgTypes[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4776,7 +5066,7 @@ func (x *VP8MungerState) ProtoReflect() protoreflect.Message { // Deprecated: Use VP8MungerState.ProtoReflect.Descriptor instead. func (*VP8MungerState) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{35} + return file_livekit_models_proto_rawDescGZIP(), []int{37} } func (x *VP8MungerState) GetExtLastPictureId() int32 { @@ -4838,7 +5128,7 @@ type TimedVersion struct { func (x *TimedVersion) Reset() { *x = TimedVersion{} - mi := &file_livekit_models_proto_msgTypes[36] + mi := &file_livekit_models_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4850,7 +5140,7 @@ func (x *TimedVersion) String() string { func (*TimedVersion) ProtoMessage() {} func (x *TimedVersion) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[36] + mi := &file_livekit_models_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4863,7 +5153,7 @@ func (x *TimedVersion) ProtoReflect() protoreflect.Message { // Deprecated: Use TimedVersion.ProtoReflect.Descriptor instead. func (*TimedVersion) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{36} + return file_livekit_models_proto_rawDescGZIP(), []int{38} } func (x *TimedVersion) GetUnixMicro() int64 { @@ -4888,7 +5178,7 @@ type DataStream struct { func (x *DataStream) Reset() { *x = DataStream{} - mi := &file_livekit_models_proto_msgTypes[37] + mi := &file_livekit_models_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4900,7 +5190,7 @@ func (x *DataStream) String() string { func (*DataStream) ProtoMessage() {} func (x *DataStream) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[37] + mi := &file_livekit_models_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4913,7 +5203,7 @@ func (x *DataStream) ProtoReflect() protoreflect.Message { // Deprecated: Use DataStream.ProtoReflect.Descriptor instead. func (*DataStream) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{37} + return file_livekit_models_proto_rawDescGZIP(), []int{39} } type WebhookConfig struct { @@ -4926,7 +5216,7 @@ type WebhookConfig struct { func (x *WebhookConfig) Reset() { *x = WebhookConfig{} - mi := &file_livekit_models_proto_msgTypes[38] + mi := &file_livekit_models_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4938,7 +5228,7 @@ func (x *WebhookConfig) String() string { func (*WebhookConfig) ProtoMessage() {} func (x *WebhookConfig) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[38] + mi := &file_livekit_models_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4951,7 +5241,7 @@ func (x *WebhookConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use WebhookConfig.ProtoReflect.Descriptor instead. func (*WebhookConfig) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{38} + return file_livekit_models_proto_rawDescGZIP(), []int{40} } func (x *WebhookConfig) GetUrl() string { @@ -4982,7 +5272,7 @@ type DataStream_TextHeader struct { func (x *DataStream_TextHeader) Reset() { *x = DataStream_TextHeader{} - mi := &file_livekit_models_proto_msgTypes[41] + mi := &file_livekit_models_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4994,7 +5284,7 @@ func (x *DataStream_TextHeader) String() string { func (*DataStream_TextHeader) ProtoMessage() {} func (x *DataStream_TextHeader) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[41] + mi := &file_livekit_models_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5007,7 +5297,7 @@ func (x *DataStream_TextHeader) ProtoReflect() protoreflect.Message { // Deprecated: Use DataStream_TextHeader.ProtoReflect.Descriptor instead. func (*DataStream_TextHeader) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{37, 0} + return file_livekit_models_proto_rawDescGZIP(), []int{39, 0} } func (x *DataStream_TextHeader) GetOperationType() DataStream_OperationType { @@ -5055,7 +5345,7 @@ type DataStream_ByteHeader struct { func (x *DataStream_ByteHeader) Reset() { *x = DataStream_ByteHeader{} - mi := &file_livekit_models_proto_msgTypes[42] + mi := &file_livekit_models_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5067,7 +5357,7 @@ func (x *DataStream_ByteHeader) String() string { func (*DataStream_ByteHeader) ProtoMessage() {} func (x *DataStream_ByteHeader) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[42] + mi := &file_livekit_models_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5080,7 +5370,7 @@ func (x *DataStream_ByteHeader) ProtoReflect() protoreflect.Message { // Deprecated: Use DataStream_ByteHeader.ProtoReflect.Descriptor instead. func (*DataStream_ByteHeader) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{37, 1} + return file_livekit_models_proto_rawDescGZIP(), []int{39, 1} } func (x *DataStream_ByteHeader) GetName() string { @@ -5092,14 +5382,15 @@ func (x *DataStream_ByteHeader) GetName() string { // main DataStream.Header that contains a oneof for specific headers type DataStream_Header struct { - state protoimpl.MessageState `protogen:"open.v1"` - StreamId string `protobuf:"bytes,1,opt,name=stream_id,json=streamId,proto3" json:"stream_id,omitempty"` // unique identifier for this data stream - Timestamp int64 `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // using int64 for Unix timestamp - Topic string `protobuf:"bytes,3,opt,name=topic,proto3" json:"topic,omitempty"` - MimeType string `protobuf:"bytes,4,opt,name=mime_type,json=mimeType,proto3" json:"mime_type,omitempty"` - TotalLength *uint64 `protobuf:"varint,5,opt,name=total_length,json=totalLength,proto3,oneof" json:"total_length,omitempty"` // only populated for finite streams, if it's a stream of unknown size this stays empty - EncryptionType Encryption_Type `protobuf:"varint,7,opt,name=encryption_type,json=encryptionType,proto3,enum=livekit.Encryption_Type" json:"encryption_type,omitempty"` // defaults to NONE - Attributes map[string]string `protobuf:"bytes,8,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // user defined attributes map that can carry additional info + state protoimpl.MessageState `protogen:"open.v1"` + StreamId string `protobuf:"bytes,1,opt,name=stream_id,json=streamId,proto3" json:"stream_id,omitempty"` // unique identifier for this data stream + Timestamp int64 `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // using int64 for Unix timestamp + Topic string `protobuf:"bytes,3,opt,name=topic,proto3" json:"topic,omitempty"` + MimeType string `protobuf:"bytes,4,opt,name=mime_type,json=mimeType,proto3" json:"mime_type,omitempty"` + TotalLength *uint64 `protobuf:"varint,5,opt,name=total_length,json=totalLength,proto3,oneof" json:"total_length,omitempty"` // only populated for finite streams, if it's a stream of unknown size this stays empty + // Deprecated: Marked as deprecated in livekit_models.proto. + EncryptionType Encryption_Type `protobuf:"varint,7,opt,name=encryption_type,json=encryptionType,proto3,enum=livekit.Encryption_Type" json:"encryption_type,omitempty"` // this is set on the DataPacket + Attributes map[string]string `protobuf:"bytes,8,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // user defined attributes map that can carry additional info // oneof to choose between specific header types // // Types that are valid to be assigned to ContentHeader: @@ -5113,7 +5404,7 @@ type DataStream_Header struct { func (x *DataStream_Header) Reset() { *x = DataStream_Header{} - mi := &file_livekit_models_proto_msgTypes[43] + mi := &file_livekit_models_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5125,7 +5416,7 @@ func (x *DataStream_Header) String() string { func (*DataStream_Header) ProtoMessage() {} func (x *DataStream_Header) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[43] + mi := &file_livekit_models_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5138,7 +5429,7 @@ func (x *DataStream_Header) ProtoReflect() protoreflect.Message { // Deprecated: Use DataStream_Header.ProtoReflect.Descriptor instead. func (*DataStream_Header) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{37, 2} + return file_livekit_models_proto_rawDescGZIP(), []int{39, 2} } func (x *DataStream_Header) GetStreamId() string { @@ -5176,6 +5467,7 @@ func (x *DataStream_Header) GetTotalLength() uint64 { return 0 } +// Deprecated: Marked as deprecated in livekit_models.proto. func (x *DataStream_Header) GetEncryptionType() Encryption_Type { if x != nil { return x.EncryptionType @@ -5232,19 +5524,20 @@ func (*DataStream_Header_TextHeader) isDataStream_Header_ContentHeader() {} func (*DataStream_Header_ByteHeader) isDataStream_Header_ContentHeader() {} type DataStream_Chunk struct { - state protoimpl.MessageState `protogen:"open.v1"` - StreamId string `protobuf:"bytes,1,opt,name=stream_id,json=streamId,proto3" json:"stream_id,omitempty"` // unique identifier for this data stream to map it to the correct header - ChunkIndex uint64 `protobuf:"varint,2,opt,name=chunk_index,json=chunkIndex,proto3" json:"chunk_index,omitempty"` - Content []byte `protobuf:"bytes,3,opt,name=content,proto3" json:"content,omitempty"` // content as binary (bytes) - Version int32 `protobuf:"varint,4,opt,name=version,proto3" json:"version,omitempty"` // a version indicating that this chunk_index has been retroactively modified and the original one needs to be replaced - Iv []byte `protobuf:"bytes,5,opt,name=iv,proto3,oneof" json:"iv,omitempty"` // optional, initialization vector for AES-GCM encryption + state protoimpl.MessageState `protogen:"open.v1"` + StreamId string `protobuf:"bytes,1,opt,name=stream_id,json=streamId,proto3" json:"stream_id,omitempty"` // unique identifier for this data stream to map it to the correct header + ChunkIndex uint64 `protobuf:"varint,2,opt,name=chunk_index,json=chunkIndex,proto3" json:"chunk_index,omitempty"` + Content []byte `protobuf:"bytes,3,opt,name=content,proto3" json:"content,omitempty"` // content as binary (bytes) + Version int32 `protobuf:"varint,4,opt,name=version,proto3" json:"version,omitempty"` // a version indicating that this chunk_index has been retroactively modified and the original one needs to be replaced + // Deprecated: Marked as deprecated in livekit_models.proto. + Iv []byte `protobuf:"bytes,5,opt,name=iv,proto3,oneof" json:"iv,omitempty"` // this is set on the DataPacket unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *DataStream_Chunk) Reset() { *x = DataStream_Chunk{} - mi := &file_livekit_models_proto_msgTypes[44] + mi := &file_livekit_models_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5256,7 +5549,7 @@ func (x *DataStream_Chunk) String() string { func (*DataStream_Chunk) ProtoMessage() {} func (x *DataStream_Chunk) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[44] + mi := &file_livekit_models_proto_msgTypes[46] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5269,7 +5562,7 @@ func (x *DataStream_Chunk) ProtoReflect() protoreflect.Message { // Deprecated: Use DataStream_Chunk.ProtoReflect.Descriptor instead. func (*DataStream_Chunk) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{37, 3} + return file_livekit_models_proto_rawDescGZIP(), []int{39, 3} } func (x *DataStream_Chunk) GetStreamId() string { @@ -5300,6 +5593,7 @@ func (x *DataStream_Chunk) GetVersion() int32 { return 0 } +// Deprecated: Marked as deprecated in livekit_models.proto. func (x *DataStream_Chunk) GetIv() []byte { if x != nil { return x.Iv @@ -5318,7 +5612,7 @@ type DataStream_Trailer struct { func (x *DataStream_Trailer) Reset() { *x = DataStream_Trailer{} - mi := &file_livekit_models_proto_msgTypes[45] + mi := &file_livekit_models_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5330,7 +5624,7 @@ func (x *DataStream_Trailer) String() string { func (*DataStream_Trailer) ProtoMessage() {} func (x *DataStream_Trailer) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[45] + mi := &file_livekit_models_proto_msgTypes[47] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5343,7 +5637,7 @@ func (x *DataStream_Trailer) ProtoReflect() protoreflect.Message { // Deprecated: Use DataStream_Trailer.ProtoReflect.Descriptor instead. func (*DataStream_Trailer) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{37, 4} + return file_livekit_models_proto_rawDescGZIP(), []int{39, 4} } func (x *DataStream_Trailer) GetStreamId() string { @@ -5469,13 +5763,14 @@ const file_livekit_models_proto_rawDesc = "" + "\x04NONE\x10\x00\x12\a\n" + "\x03GCM\x10\x01\x12\n" + "\n" + - "\x06CUSTOM\x10\x02\"\xc6\x01\n" + + "\x06CUSTOM\x10\x02\"\xdf\x01\n" + "\x12SimulcastCodecInfo\x12\x1b\n" + "\tmime_type\x18\x01 \x01(\tR\bmimeType\x12\x10\n" + "\x03mid\x18\x02 \x01(\tR\x03mid\x12\x10\n" + "\x03cid\x18\x03 \x01(\tR\x03cid\x12+\n" + "\x06layers\x18\x04 \x03(\v2\x13.livekit.VideoLayerR\x06layers\x12B\n" + - "\x10video_layer_mode\x18\x05 \x01(\x0e2\x18.livekit.VideoLayer.ModeR\x0evideoLayerMode\"\xfe\x05\n" + + "\x10video_layer_mode\x18\x05 \x01(\x0e2\x18.livekit.VideoLayer.ModeR\x0evideoLayerMode\x12\x17\n" + + "\asdp_cid\x18\x06 \x01(\tR\x06sdpCid\"\xfe\x05\n" + "\tTrackInfo\x12\x10\n" + "\x03sid\x18\x01 \x01(\tR\x03sid\x12&\n" + "\x04type\x18\x02 \x01(\x0e2\x12.livekit.TrackTypeR\x04type\x12\x12\n" + @@ -5514,7 +5809,7 @@ const file_livekit_models_proto_rawDesc = "" + "\x04Mode\x12\x0f\n" + "\vMODE_UNUSED\x10\x00\x12 \n" + "\x1cONE_SPATIAL_LAYER_PER_STREAM\x10\x01\x12&\n" + - "\"MULTIPLE_SPATIAL_LAYERS_PER_STREAM\x10\x02\"\xc5\a\n" + + "\"MULTIPLE_SPATIAL_LAYERS_PER_STREAM\x10\x02\"\x8c\b\n" + "\n" + "DataPacket\x120\n" + "\x04kind\x18\x01 \x01(\x0e2\x18.livekit.DataPacket.KindB\x02\x18\x01R\x04kind\x121\n" + @@ -5533,12 +5828,30 @@ const file_livekit_models_proto_rawDesc = "" + "\frpc_response\x18\f \x01(\v2\x14.livekit.RpcResponseH\x00R\vrpcResponse\x12A\n" + "\rstream_header\x18\r \x01(\v2\x1a.livekit.DataStream.HeaderH\x00R\fstreamHeader\x12>\n" + "\fstream_chunk\x18\x0e \x01(\v2\x19.livekit.DataStream.ChunkH\x00R\vstreamChunk\x12D\n" + - "\x0estream_trailer\x18\x0f \x01(\v2\x1b.livekit.DataStream.TrailerH\x00R\rstreamTrailer\x12\x1a\n" + + "\x0estream_trailer\x18\x0f \x01(\v2\x1b.livekit.DataStream.TrailerH\x00R\rstreamTrailer\x12E\n" + + "\x10encrypted_packet\x18\x12 \x01(\v2\x18.livekit.EncryptedPacketH\x00R\x0fencryptedPacket\x12\x1a\n" + "\bsequence\x18\x10 \x01(\rR\bsequence\x12'\n" + "\x0fparticipant_sid\x18\x11 \x01(\tR\x0eparticipantSid\"\x1f\n" + "\x04Kind\x12\f\n" + "\bRELIABLE\x10\x00\x12\t\n" + "\x05LOSSY\x10\x01B\a\n" + + "\x05value\"\xaa\x01\n" + + "\x0fEncryptedPacket\x12A\n" + + "\x0fencryption_type\x18\x01 \x01(\x0e2\x18.livekit.Encryption.TypeR\x0eencryptionType\x12\x0e\n" + + "\x02iv\x18\x02 \x01(\fR\x02iv\x12\x1b\n" + + "\tkey_index\x18\x03 \x01(\rR\bkeyIndex\x12'\n" + + "\x0fencrypted_value\x18\x04 \x01(\fR\x0eencryptedValue\"\xa2\x04\n" + + "\x16EncryptedPacketPayload\x12)\n" + + "\x04user\x18\x01 \x01(\v2\x13.livekit.UserPacketH\x00R\x04user\x121\n" + + "\ametrics\x18\x02 \x01(\v2\x15.livekit.MetricsBatchH\x00R\ametrics\x129\n" + + "\fchat_message\x18\x03 \x01(\v2\x14.livekit.ChatMessageH\x00R\vchatMessage\x126\n" + + "\vrpc_request\x18\x04 \x01(\v2\x13.livekit.RpcRequestH\x00R\n" + + "rpcRequest\x12*\n" + + "\arpc_ack\x18\x05 \x01(\v2\x0f.livekit.RpcAckH\x00R\x06rpcAck\x129\n" + + "\frpc_response\x18\x06 \x01(\v2\x14.livekit.RpcResponseH\x00R\vrpcResponse\x12A\n" + + "\rstream_header\x18\a \x01(\v2\x1a.livekit.DataStream.HeaderH\x00R\fstreamHeader\x12>\n" + + "\fstream_chunk\x18\b \x01(\v2\x19.livekit.DataStream.ChunkH\x00R\vstreamChunk\x12D\n" + + "\x0estream_trailer\x18\t \x01(\v2\x1b.livekit.DataStream.TrailerH\x00R\rstreamTrailerB\a\n" + "\x05value\"K\n" + "\x13ActiveSpeakerUpdate\x120\n" + "\bspeakers\x18\x01 \x03(\v2\x14.livekit.SpeakerInfoR\bspeakers:\x02\x18\x01\"M\n" + @@ -5782,7 +6095,7 @@ const file_livekit_models_proto_rawDesc = "" + "\fTimedVersion\x12\x1d\n" + "\n" + "unix_micro\x18\x01 \x01(\x03R\tunixMicro\x12\x14\n" + - "\x05ticks\x18\x02 \x01(\x05R\x05ticks\"\xdc\t\n" + + "\x05ticks\x18\x02 \x01(\x05R\x05ticks\"\xe4\t\n" + "\n" + "DataStream\x1a\xeb\x01\n" + "\n" + @@ -5794,14 +6107,14 @@ const file_livekit_models_proto_rawDesc = "" + "\tgenerated\x18\x05 \x01(\bR\tgenerated\x1a \n" + "\n" + "ByteHeader\x12\x12\n" + - "\x04name\x18\x01 \x01(\tR\x04name\x1a\x95\x04\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x1a\x99\x04\n" + "\x06Header\x12\x1b\n" + "\tstream_id\x18\x01 \x01(\tR\bstreamId\x12\x1c\n" + "\ttimestamp\x18\x02 \x01(\x03R\ttimestamp\x12\x14\n" + "\x05topic\x18\x03 \x01(\tR\x05topic\x12\x1b\n" + "\tmime_type\x18\x04 \x01(\tR\bmimeType\x12&\n" + - "\ftotal_length\x18\x05 \x01(\x04H\x01R\vtotalLength\x88\x01\x01\x12A\n" + - "\x0fencryption_type\x18\a \x01(\x0e2\x18.livekit.Encryption.TypeR\x0eencryptionType\x12J\n" + + "\ftotal_length\x18\x05 \x01(\x04H\x01R\vtotalLength\x88\x01\x01\x12E\n" + + "\x0fencryption_type\x18\a \x01(\x0e2\x18.livekit.Encryption.TypeB\x02\x18\x01R\x0eencryptionType\x12J\n" + "\n" + "attributes\x18\b \x03(\v2*.livekit.DataStream.Header.AttributesEntryR\n" + "attributes\x12A\n" + @@ -5814,14 +6127,14 @@ const file_livekit_models_proto_rawDesc = "" + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\x10\n" + "\x0econtent_headerB\x0f\n" + - "\r_total_length\x1a\x95\x01\n" + + "\r_total_length\x1a\x99\x01\n" + "\x05Chunk\x12\x1b\n" + "\tstream_id\x18\x01 \x01(\tR\bstreamId\x12\x1f\n" + "\vchunk_index\x18\x02 \x01(\x04R\n" + "chunkIndex\x12\x18\n" + "\acontent\x18\x03 \x01(\fR\acontent\x12\x18\n" + - "\aversion\x18\x04 \x01(\x05R\aversion\x12\x13\n" + - "\x02iv\x18\x05 \x01(\fH\x00R\x02iv\x88\x01\x01B\x05\n" + + "\aversion\x18\x04 \x01(\x05R\aversion\x12\x17\n" + + "\x02iv\x18\x05 \x01(\fB\x02\x18\x01H\x00R\x02iv\x88\x01\x01B\x05\n" + "\x03_iv\x1a\xca\x01\n" + "\aTrailer\x12\x1b\n" + "\tstream_id\x18\x01 \x01(\tR\bstreamId\x12\x16\n" + @@ -5947,7 +6260,7 @@ func file_livekit_models_proto_rawDescGZIP() []byte { } var file_livekit_models_proto_enumTypes = make([]protoimpl.EnumInfo, 22) -var file_livekit_models_proto_msgTypes = make([]protoimpl.MessageInfo, 48) +var file_livekit_models_proto_msgTypes = make([]protoimpl.MessageInfo, 50) var file_livekit_models_proto_goTypes = []any{ (AudioCodec)(0), // 0: livekit.AudioCodec (VideoCodec)(0), // 1: livekit.VideoCodec @@ -5984,53 +6297,55 @@ var file_livekit_models_proto_goTypes = []any{ (*TrackInfo)(nil), // 32: livekit.TrackInfo (*VideoLayer)(nil), // 33: livekit.VideoLayer (*DataPacket)(nil), // 34: livekit.DataPacket - (*ActiveSpeakerUpdate)(nil), // 35: livekit.ActiveSpeakerUpdate - (*SpeakerInfo)(nil), // 36: livekit.SpeakerInfo - (*UserPacket)(nil), // 37: livekit.UserPacket - (*SipDTMF)(nil), // 38: livekit.SipDTMF - (*Transcription)(nil), // 39: livekit.Transcription - (*TranscriptionSegment)(nil), // 40: livekit.TranscriptionSegment - (*ChatMessage)(nil), // 41: livekit.ChatMessage - (*RpcRequest)(nil), // 42: livekit.RpcRequest - (*RpcAck)(nil), // 43: livekit.RpcAck - (*RpcResponse)(nil), // 44: livekit.RpcResponse - (*RpcError)(nil), // 45: livekit.RpcError - (*ParticipantTracks)(nil), // 46: livekit.ParticipantTracks - (*ServerInfo)(nil), // 47: livekit.ServerInfo - (*ClientInfo)(nil), // 48: livekit.ClientInfo - (*ClientConfiguration)(nil), // 49: livekit.ClientConfiguration - (*VideoConfiguration)(nil), // 50: livekit.VideoConfiguration - (*DisabledCodecs)(nil), // 51: livekit.DisabledCodecs - (*RTPDrift)(nil), // 52: livekit.RTPDrift - (*RTPStats)(nil), // 53: livekit.RTPStats - (*RTCPSenderReportState)(nil), // 54: livekit.RTCPSenderReportState - (*RTPForwarderState)(nil), // 55: livekit.RTPForwarderState - (*RTPMungerState)(nil), // 56: livekit.RTPMungerState - (*VP8MungerState)(nil), // 57: livekit.VP8MungerState - (*TimedVersion)(nil), // 58: livekit.TimedVersion - (*DataStream)(nil), // 59: livekit.DataStream - (*WebhookConfig)(nil), // 60: livekit.WebhookConfig - nil, // 61: livekit.ParticipantInfo.AttributesEntry - nil, // 62: livekit.RTPStats.GapHistogramEntry - (*DataStream_TextHeader)(nil), // 63: livekit.DataStream.TextHeader - (*DataStream_ByteHeader)(nil), // 64: livekit.DataStream.ByteHeader - (*DataStream_Header)(nil), // 65: livekit.DataStream.Header - (*DataStream_Chunk)(nil), // 66: livekit.DataStream.Chunk - (*DataStream_Trailer)(nil), // 67: livekit.DataStream.Trailer - nil, // 68: livekit.DataStream.Header.AttributesEntry - nil, // 69: livekit.DataStream.Trailer.AttributesEntry - (*MetricsBatch)(nil), // 70: livekit.MetricsBatch - (*timestamppb.Timestamp)(nil), // 71: google.protobuf.Timestamp + (*EncryptedPacket)(nil), // 35: livekit.EncryptedPacket + (*EncryptedPacketPayload)(nil), // 36: livekit.EncryptedPacketPayload + (*ActiveSpeakerUpdate)(nil), // 37: livekit.ActiveSpeakerUpdate + (*SpeakerInfo)(nil), // 38: livekit.SpeakerInfo + (*UserPacket)(nil), // 39: livekit.UserPacket + (*SipDTMF)(nil), // 40: livekit.SipDTMF + (*Transcription)(nil), // 41: livekit.Transcription + (*TranscriptionSegment)(nil), // 42: livekit.TranscriptionSegment + (*ChatMessage)(nil), // 43: livekit.ChatMessage + (*RpcRequest)(nil), // 44: livekit.RpcRequest + (*RpcAck)(nil), // 45: livekit.RpcAck + (*RpcResponse)(nil), // 46: livekit.RpcResponse + (*RpcError)(nil), // 47: livekit.RpcError + (*ParticipantTracks)(nil), // 48: livekit.ParticipantTracks + (*ServerInfo)(nil), // 49: livekit.ServerInfo + (*ClientInfo)(nil), // 50: livekit.ClientInfo + (*ClientConfiguration)(nil), // 51: livekit.ClientConfiguration + (*VideoConfiguration)(nil), // 52: livekit.VideoConfiguration + (*DisabledCodecs)(nil), // 53: livekit.DisabledCodecs + (*RTPDrift)(nil), // 54: livekit.RTPDrift + (*RTPStats)(nil), // 55: livekit.RTPStats + (*RTCPSenderReportState)(nil), // 56: livekit.RTCPSenderReportState + (*RTPForwarderState)(nil), // 57: livekit.RTPForwarderState + (*RTPMungerState)(nil), // 58: livekit.RTPMungerState + (*VP8MungerState)(nil), // 59: livekit.VP8MungerState + (*TimedVersion)(nil), // 60: livekit.TimedVersion + (*DataStream)(nil), // 61: livekit.DataStream + (*WebhookConfig)(nil), // 62: livekit.WebhookConfig + nil, // 63: livekit.ParticipantInfo.AttributesEntry + nil, // 64: livekit.RTPStats.GapHistogramEntry + (*DataStream_TextHeader)(nil), // 65: livekit.DataStream.TextHeader + (*DataStream_ByteHeader)(nil), // 66: livekit.DataStream.ByteHeader + (*DataStream_Header)(nil), // 67: livekit.DataStream.Header + (*DataStream_Chunk)(nil), // 68: livekit.DataStream.Chunk + (*DataStream_Trailer)(nil), // 69: livekit.DataStream.Trailer + nil, // 70: livekit.DataStream.Header.AttributesEntry + nil, // 71: livekit.DataStream.Trailer.AttributesEntry + (*MetricsBatch)(nil), // 72: livekit.MetricsBatch + (*timestamppb.Timestamp)(nil), // 73: google.protobuf.Timestamp } var file_livekit_models_proto_depIdxs = []int32{ 26, // 0: livekit.Room.enabled_codecs:type_name -> livekit.Codec - 58, // 1: livekit.Room.version:type_name -> livekit.TimedVersion + 60, // 1: livekit.Room.version:type_name -> livekit.TimedVersion 5, // 2: livekit.ParticipantPermission.can_publish_sources:type_name -> livekit.TrackSource 13, // 3: livekit.ParticipantInfo.state:type_name -> livekit.ParticipantInfo.State 32, // 4: livekit.ParticipantInfo.tracks:type_name -> livekit.TrackInfo 28, // 5: livekit.ParticipantInfo.permission:type_name -> livekit.ParticipantPermission 14, // 6: livekit.ParticipantInfo.kind:type_name -> livekit.ParticipantInfo.Kind - 61, // 7: livekit.ParticipantInfo.attributes:type_name -> livekit.ParticipantInfo.AttributesEntry + 63, // 7: livekit.ParticipantInfo.attributes:type_name -> livekit.ParticipantInfo.AttributesEntry 9, // 8: livekit.ParticipantInfo.disconnect_reason:type_name -> livekit.DisconnectReason 15, // 9: livekit.ParticipantInfo.kind_details:type_name -> livekit.ParticipantInfo.KindDetail 33, // 10: livekit.SimulcastCodecInfo.layers:type_name -> livekit.VideoLayer @@ -6040,63 +6355,74 @@ var file_livekit_models_proto_depIdxs = []int32{ 33, // 14: livekit.TrackInfo.layers:type_name -> livekit.VideoLayer 31, // 15: livekit.TrackInfo.codecs:type_name -> livekit.SimulcastCodecInfo 16, // 16: livekit.TrackInfo.encryption:type_name -> livekit.Encryption.Type - 58, // 17: livekit.TrackInfo.version:type_name -> livekit.TimedVersion + 60, // 17: livekit.TrackInfo.version:type_name -> livekit.TimedVersion 12, // 18: livekit.TrackInfo.audio_features:type_name -> livekit.AudioTrackFeature 3, // 19: livekit.TrackInfo.backup_codec_policy:type_name -> livekit.BackupCodecPolicy 6, // 20: livekit.VideoLayer.quality:type_name -> livekit.VideoQuality 18, // 21: livekit.DataPacket.kind:type_name -> livekit.DataPacket.Kind - 37, // 22: livekit.DataPacket.user:type_name -> livekit.UserPacket - 35, // 23: livekit.DataPacket.speaker:type_name -> livekit.ActiveSpeakerUpdate - 38, // 24: livekit.DataPacket.sip_dtmf:type_name -> livekit.SipDTMF - 39, // 25: livekit.DataPacket.transcription:type_name -> livekit.Transcription - 70, // 26: livekit.DataPacket.metrics:type_name -> livekit.MetricsBatch - 41, // 27: livekit.DataPacket.chat_message:type_name -> livekit.ChatMessage - 42, // 28: livekit.DataPacket.rpc_request:type_name -> livekit.RpcRequest - 43, // 29: livekit.DataPacket.rpc_ack:type_name -> livekit.RpcAck - 44, // 30: livekit.DataPacket.rpc_response:type_name -> livekit.RpcResponse - 65, // 31: livekit.DataPacket.stream_header:type_name -> livekit.DataStream.Header - 66, // 32: livekit.DataPacket.stream_chunk:type_name -> livekit.DataStream.Chunk - 67, // 33: livekit.DataPacket.stream_trailer:type_name -> livekit.DataStream.Trailer - 36, // 34: livekit.ActiveSpeakerUpdate.speakers:type_name -> livekit.SpeakerInfo - 40, // 35: livekit.Transcription.segments:type_name -> livekit.TranscriptionSegment - 45, // 36: livekit.RpcResponse.error:type_name -> livekit.RpcError - 19, // 37: livekit.ServerInfo.edition:type_name -> livekit.ServerInfo.Edition - 20, // 38: livekit.ClientInfo.sdk:type_name -> livekit.ClientInfo.SDK - 50, // 39: livekit.ClientConfiguration.video:type_name -> livekit.VideoConfiguration - 50, // 40: livekit.ClientConfiguration.screen:type_name -> livekit.VideoConfiguration - 8, // 41: livekit.ClientConfiguration.resume_connection:type_name -> livekit.ClientConfigSetting - 51, // 42: livekit.ClientConfiguration.disabled_codecs:type_name -> livekit.DisabledCodecs - 8, // 43: livekit.ClientConfiguration.force_relay:type_name -> livekit.ClientConfigSetting - 8, // 44: livekit.VideoConfiguration.hardware_encoder:type_name -> livekit.ClientConfigSetting - 26, // 45: livekit.DisabledCodecs.codecs:type_name -> livekit.Codec - 26, // 46: livekit.DisabledCodecs.publish:type_name -> livekit.Codec - 71, // 47: livekit.RTPDrift.start_time:type_name -> google.protobuf.Timestamp - 71, // 48: livekit.RTPDrift.end_time:type_name -> google.protobuf.Timestamp - 71, // 49: livekit.RTPStats.start_time:type_name -> google.protobuf.Timestamp - 71, // 50: livekit.RTPStats.end_time:type_name -> google.protobuf.Timestamp - 62, // 51: livekit.RTPStats.gap_histogram:type_name -> livekit.RTPStats.GapHistogramEntry - 71, // 52: livekit.RTPStats.last_pli:type_name -> google.protobuf.Timestamp - 71, // 53: livekit.RTPStats.last_fir:type_name -> google.protobuf.Timestamp - 71, // 54: livekit.RTPStats.last_key_frame:type_name -> google.protobuf.Timestamp - 71, // 55: livekit.RTPStats.last_layer_lock_pli:type_name -> google.protobuf.Timestamp - 52, // 56: livekit.RTPStats.packet_drift:type_name -> livekit.RTPDrift - 52, // 57: livekit.RTPStats.ntp_report_drift:type_name -> livekit.RTPDrift - 52, // 58: livekit.RTPStats.rebased_report_drift:type_name -> livekit.RTPDrift - 52, // 59: livekit.RTPStats.received_report_drift:type_name -> livekit.RTPDrift - 56, // 60: livekit.RTPForwarderState.rtp_munger:type_name -> livekit.RTPMungerState - 57, // 61: livekit.RTPForwarderState.vp8_munger:type_name -> livekit.VP8MungerState - 54, // 62: livekit.RTPForwarderState.sender_report_state:type_name -> livekit.RTCPSenderReportState - 21, // 63: livekit.DataStream.TextHeader.operation_type:type_name -> livekit.DataStream.OperationType - 16, // 64: livekit.DataStream.Header.encryption_type:type_name -> livekit.Encryption.Type - 68, // 65: livekit.DataStream.Header.attributes:type_name -> livekit.DataStream.Header.AttributesEntry - 63, // 66: livekit.DataStream.Header.text_header:type_name -> livekit.DataStream.TextHeader - 64, // 67: livekit.DataStream.Header.byte_header:type_name -> livekit.DataStream.ByteHeader - 69, // 68: livekit.DataStream.Trailer.attributes:type_name -> livekit.DataStream.Trailer.AttributesEntry - 69, // [69:69] is the sub-list for method output_type - 69, // [69:69] is the sub-list for method input_type - 69, // [69:69] is the sub-list for extension type_name - 69, // [69:69] is the sub-list for extension extendee - 0, // [0:69] is the sub-list for field type_name + 39, // 22: livekit.DataPacket.user:type_name -> livekit.UserPacket + 37, // 23: livekit.DataPacket.speaker:type_name -> livekit.ActiveSpeakerUpdate + 40, // 24: livekit.DataPacket.sip_dtmf:type_name -> livekit.SipDTMF + 41, // 25: livekit.DataPacket.transcription:type_name -> livekit.Transcription + 72, // 26: livekit.DataPacket.metrics:type_name -> livekit.MetricsBatch + 43, // 27: livekit.DataPacket.chat_message:type_name -> livekit.ChatMessage + 44, // 28: livekit.DataPacket.rpc_request:type_name -> livekit.RpcRequest + 45, // 29: livekit.DataPacket.rpc_ack:type_name -> livekit.RpcAck + 46, // 30: livekit.DataPacket.rpc_response:type_name -> livekit.RpcResponse + 67, // 31: livekit.DataPacket.stream_header:type_name -> livekit.DataStream.Header + 68, // 32: livekit.DataPacket.stream_chunk:type_name -> livekit.DataStream.Chunk + 69, // 33: livekit.DataPacket.stream_trailer:type_name -> livekit.DataStream.Trailer + 35, // 34: livekit.DataPacket.encrypted_packet:type_name -> livekit.EncryptedPacket + 16, // 35: livekit.EncryptedPacket.encryption_type:type_name -> livekit.Encryption.Type + 39, // 36: livekit.EncryptedPacketPayload.user:type_name -> livekit.UserPacket + 72, // 37: livekit.EncryptedPacketPayload.metrics:type_name -> livekit.MetricsBatch + 43, // 38: livekit.EncryptedPacketPayload.chat_message:type_name -> livekit.ChatMessage + 44, // 39: livekit.EncryptedPacketPayload.rpc_request:type_name -> livekit.RpcRequest + 45, // 40: livekit.EncryptedPacketPayload.rpc_ack:type_name -> livekit.RpcAck + 46, // 41: livekit.EncryptedPacketPayload.rpc_response:type_name -> livekit.RpcResponse + 67, // 42: livekit.EncryptedPacketPayload.stream_header:type_name -> livekit.DataStream.Header + 68, // 43: livekit.EncryptedPacketPayload.stream_chunk:type_name -> livekit.DataStream.Chunk + 69, // 44: livekit.EncryptedPacketPayload.stream_trailer:type_name -> livekit.DataStream.Trailer + 38, // 45: livekit.ActiveSpeakerUpdate.speakers:type_name -> livekit.SpeakerInfo + 42, // 46: livekit.Transcription.segments:type_name -> livekit.TranscriptionSegment + 47, // 47: livekit.RpcResponse.error:type_name -> livekit.RpcError + 19, // 48: livekit.ServerInfo.edition:type_name -> livekit.ServerInfo.Edition + 20, // 49: livekit.ClientInfo.sdk:type_name -> livekit.ClientInfo.SDK + 52, // 50: livekit.ClientConfiguration.video:type_name -> livekit.VideoConfiguration + 52, // 51: livekit.ClientConfiguration.screen:type_name -> livekit.VideoConfiguration + 8, // 52: livekit.ClientConfiguration.resume_connection:type_name -> livekit.ClientConfigSetting + 53, // 53: livekit.ClientConfiguration.disabled_codecs:type_name -> livekit.DisabledCodecs + 8, // 54: livekit.ClientConfiguration.force_relay:type_name -> livekit.ClientConfigSetting + 8, // 55: livekit.VideoConfiguration.hardware_encoder:type_name -> livekit.ClientConfigSetting + 26, // 56: livekit.DisabledCodecs.codecs:type_name -> livekit.Codec + 26, // 57: livekit.DisabledCodecs.publish:type_name -> livekit.Codec + 73, // 58: livekit.RTPDrift.start_time:type_name -> google.protobuf.Timestamp + 73, // 59: livekit.RTPDrift.end_time:type_name -> google.protobuf.Timestamp + 73, // 60: livekit.RTPStats.start_time:type_name -> google.protobuf.Timestamp + 73, // 61: livekit.RTPStats.end_time:type_name -> google.protobuf.Timestamp + 64, // 62: livekit.RTPStats.gap_histogram:type_name -> livekit.RTPStats.GapHistogramEntry + 73, // 63: livekit.RTPStats.last_pli:type_name -> google.protobuf.Timestamp + 73, // 64: livekit.RTPStats.last_fir:type_name -> google.protobuf.Timestamp + 73, // 65: livekit.RTPStats.last_key_frame:type_name -> google.protobuf.Timestamp + 73, // 66: livekit.RTPStats.last_layer_lock_pli:type_name -> google.protobuf.Timestamp + 54, // 67: livekit.RTPStats.packet_drift:type_name -> livekit.RTPDrift + 54, // 68: livekit.RTPStats.ntp_report_drift:type_name -> livekit.RTPDrift + 54, // 69: livekit.RTPStats.rebased_report_drift:type_name -> livekit.RTPDrift + 54, // 70: livekit.RTPStats.received_report_drift:type_name -> livekit.RTPDrift + 58, // 71: livekit.RTPForwarderState.rtp_munger:type_name -> livekit.RTPMungerState + 59, // 72: livekit.RTPForwarderState.vp8_munger:type_name -> livekit.VP8MungerState + 56, // 73: livekit.RTPForwarderState.sender_report_state:type_name -> livekit.RTCPSenderReportState + 21, // 74: livekit.DataStream.TextHeader.operation_type:type_name -> livekit.DataStream.OperationType + 16, // 75: livekit.DataStream.Header.encryption_type:type_name -> livekit.Encryption.Type + 70, // 76: livekit.DataStream.Header.attributes:type_name -> livekit.DataStream.Header.AttributesEntry + 65, // 77: livekit.DataStream.Header.text_header:type_name -> livekit.DataStream.TextHeader + 66, // 78: livekit.DataStream.Header.byte_header:type_name -> livekit.DataStream.ByteHeader + 71, // 79: livekit.DataStream.Trailer.attributes:type_name -> livekit.DataStream.Trailer.AttributesEntry + 80, // [80:80] is the sub-list for method output_type + 80, // [80:80] is the sub-list for method input_type + 80, // [80:80] is the sub-list for extension type_name + 80, // [80:80] is the sub-list for extension extendee + 0, // [0:80] is the sub-list for field type_name } func init() { file_livekit_models_proto_init() } @@ -6118,28 +6444,40 @@ func file_livekit_models_proto_init() { (*DataPacket_StreamHeader)(nil), (*DataPacket_StreamChunk)(nil), (*DataPacket_StreamTrailer)(nil), - } - file_livekit_models_proto_msgTypes[15].OneofWrappers = []any{} - file_livekit_models_proto_msgTypes[19].OneofWrappers = []any{} - file_livekit_models_proto_msgTypes[22].OneofWrappers = []any{ + (*DataPacket_EncryptedPacket)(nil), + } + file_livekit_models_proto_msgTypes[14].OneofWrappers = []any{ + (*EncryptedPacketPayload_User)(nil), + (*EncryptedPacketPayload_Metrics)(nil), + (*EncryptedPacketPayload_ChatMessage)(nil), + (*EncryptedPacketPayload_RpcRequest)(nil), + (*EncryptedPacketPayload_RpcAck)(nil), + (*EncryptedPacketPayload_RpcResponse)(nil), + (*EncryptedPacketPayload_StreamHeader)(nil), + (*EncryptedPacketPayload_StreamChunk)(nil), + (*EncryptedPacketPayload_StreamTrailer)(nil), + } + file_livekit_models_proto_msgTypes[17].OneofWrappers = []any{} + file_livekit_models_proto_msgTypes[21].OneofWrappers = []any{} + file_livekit_models_proto_msgTypes[24].OneofWrappers = []any{ (*RpcResponse_Payload)(nil), (*RpcResponse_Error)(nil), } - file_livekit_models_proto_msgTypes[33].OneofWrappers = []any{ + file_livekit_models_proto_msgTypes[35].OneofWrappers = []any{ (*RTPForwarderState_Vp8Munger)(nil), } - file_livekit_models_proto_msgTypes[43].OneofWrappers = []any{ + file_livekit_models_proto_msgTypes[45].OneofWrappers = []any{ (*DataStream_Header_TextHeader)(nil), (*DataStream_Header_ByteHeader)(nil), } - file_livekit_models_proto_msgTypes[44].OneofWrappers = []any{} + file_livekit_models_proto_msgTypes[46].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_livekit_models_proto_rawDesc), len(file_livekit_models_proto_rawDesc)), NumEnums: 22, - NumMessages: 48, + NumMessages: 50, NumExtensions: 0, NumServices: 0, }, diff --git a/livekit/livekit_phone_number.pb.go b/livekit/livekit_phone_number.pb.go index 2f595c1cc..f148d3c84 100644 --- a/livekit/livekit_phone_number.pb.go +++ b/livekit/livekit_phone_number.pb.go @@ -516,7 +516,7 @@ type GlobalPhoneNumber struct { NumberType string `protobuf:"bytes,5,opt,name=number_type,json=numberType,proto3" json:"number_type,omitempty"` // e.g., local, toll-free, national, mobile Locality string `protobuf:"bytes,6,opt,name=locality,proto3" json:"locality,omitempty"` // City/locality (e.g., "San Francisco") Region string `protobuf:"bytes,7,opt,name=region,proto3" json:"region,omitempty"` // State/region (e.g., "CA") - SpamScore int64 `protobuf:"varint,8,opt,name=spam_score,json=spamScore,proto3" json:"spam_score,omitempty"` // can be used later for fraud detection + SpamScore float64 `protobuf:"fixed64,8,opt,name=spam_score,json=spamScore,proto3" json:"spam_score,omitempty"` // can be used later for fraud detection CreatedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` // timestamp when created UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` // timestamp when updated unknownFields protoimpl.UnknownFields @@ -602,7 +602,7 @@ func (x *GlobalPhoneNumber) GetRegion() string { return "" } -func (x *GlobalPhoneNumber) GetSpamScore() int64 { +func (x *GlobalPhoneNumber) GetSpamScore() float64 { if x != nil { return x.SpamScore } @@ -870,7 +870,7 @@ const file_livekit_phone_number_proto_rawDesc = "" + "\blocality\x18\x06 \x01(\tR\blocality\x12\x16\n" + "\x06region\x18\a \x01(\tR\x06region\x12\x1d\n" + "\n" + - "spam_score\x18\b \x01(\x03R\tspamScore\x129\n" + + "spam_score\x18\b \x01(\x01R\tspamScore\x129\n" + "\n" + "created_at\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" + "\n" + diff --git a/livekit/livekit_phone_number.twirp.go b/livekit/livekit_phone_number.twirp.go index 8aab28527..550f68e34 100644 --- a/livekit/livekit_phone_number.twirp.go +++ b/livekit/livekit_phone_number.twirp.go @@ -1395,40 +1395,40 @@ var twirpFileDescriptor6 = []byte{ 0xe7, 0x3e, 0x96, 0x2b, 0x49, 0x82, 0x04, 0x32, 0xe6, 0x3e, 0x46, 0x0a, 0x6c, 0x38, 0xd4, 0xb6, 0x1c, 0xc2, 0xe7, 0xf2, 0x7a, 0x12, 0x9c, 0x8e, 0xd1, 0x2e, 0xac, 0x07, 0x78, 0x46, 0xa8, 0x27, 0xdf, 0x8f, 0x67, 0xc4, 0x08, 0x3d, 0x01, 0x60, 0xbe, 0xe5, 0x9a, 0xcc, 0xa6, 0x01, 0x96, 0x37, - 0x9a, 0x52, 0xab, 0xac, 0x57, 0x23, 0x64, 0x14, 0x01, 0xe8, 0x7b, 0x00, 0x3b, 0xc0, 0x16, 0xc7, - 0x53, 0xd3, 0xe2, 0x72, 0x35, 0xb6, 0x46, 0x69, 0x27, 0xb7, 0x58, 0x3b, 0xbd, 0xc5, 0xda, 0x46, - 0x7a, 0x8b, 0xe9, 0x55, 0xc1, 0xee, 0xf2, 0x28, 0x34, 0xf4, 0xa7, 0x69, 0x28, 0xac, 0x0e, 0x15, - 0xec, 0x2e, 0x57, 0x7f, 0x95, 0x60, 0xcb, 0xc0, 0x0e, 0x8e, 0x5c, 0x98, 0xf7, 0x28, 0xe3, 0xe8, - 0x05, 0x6c, 0x04, 0x98, 0xd1, 0x30, 0xb0, 0x93, 0x6b, 0xec, 0x41, 0x47, 0xb9, 0x2e, 0x90, 0x3c, - 0x33, 0x3a, 0x08, 0x3d, 0xe3, 0x46, 0x47, 0x62, 0x87, 0x41, 0x80, 0x3d, 0x7b, 0x9e, 0x5e, 0x6f, - 0xe9, 0x38, 0xea, 0x12, 0x3f, 0x20, 0x76, 0x62, 0x84, 0xa4, 0x27, 0x83, 0xc8, 0xa5, 0x09, 0x71, - 0x1c, 0xe2, 0xcd, 0xcc, 0xd0, 0x23, 0x5c, 0xb8, 0x50, 0x13, 0xd8, 0xd8, 0x23, 0x5c, 0xfd, 0x5d, - 0x02, 0x79, 0xd9, 0x75, 0x84, 0x7e, 0x84, 0xcd, 0x7c, 0x45, 0xc5, 0x6a, 0x6b, 0x39, 0xb5, 0x0b, - 0x85, 0xa4, 0xd7, 0x72, 0xc5, 0x86, 0x54, 0xd8, 0xb4, 0x2d, 0xdf, 0x9a, 0x10, 0x87, 0x70, 0x82, - 0x99, 0x5c, 0x4a, 0xea, 0x31, 0x8f, 0xa1, 0x6f, 0xa0, 0x62, 0x53, 0xc6, 0x99, 0x5c, 0x8e, 0x3b, - 0x6d, 0xb7, 0xf8, 0x24, 0xf4, 0x84, 0xa4, 0xfe, 0x5d, 0x82, 0x9d, 0xa2, 0x16, 0xfc, 0x5c, 0xa5, - 0x1d, 0x58, 0x67, 0xdc, 0xe2, 0x21, 0x8b, 0x0f, 0x36, 0x6f, 0x48, 0x2e, 0x64, 0x14, 0x33, 0x74, - 0xc1, 0x44, 0x3f, 0x40, 0xcd, 0x62, 0x8c, 0xcc, 0xbc, 0xa4, 0x28, 0xca, 0x2b, 0x8b, 0x02, 0x52, - 0x7a, 0x97, 0x47, 0xc1, 0x41, 0xd2, 0xc8, 0x71, 0xf0, 0xda, 0xea, 0xe0, 0x94, 0xde, 0xe5, 0xe8, - 0x2d, 0x6c, 0x33, 0xe2, 0x9b, 0x53, 0xc2, 0x7c, 0x8b, 0xdb, 0x17, 0x66, 0x10, 0x3a, 0x49, 0x0b, - 0xd5, 0x3a, 0x8f, 0x33, 0xe1, 0xa3, 0xfe, 0xf0, 0x44, 0x10, 0xf4, 0xd0, 0xc1, 0x7d, 0xef, 0x9c, - 0xea, 0x0f, 0x19, 0xf1, 0xf3, 0xe0, 0xe1, 0xbf, 0x12, 0x6c, 0x2f, 0x94, 0x1c, 0x3a, 0x80, 0x86, - 0xa1, 0x9d, 0x6a, 0xc3, 0xb7, 0x67, 0x83, 0x0f, 0x66, 0xef, 0x6c, 0x64, 0x98, 0xc6, 0x87, 0xa1, - 0x66, 0x8e, 0x07, 0xa3, 0xa1, 0xd6, 0xeb, 0xbf, 0xee, 0x6b, 0x27, 0xf5, 0x7b, 0xe8, 0x19, 0xec, - 0x17, 0x91, 0x06, 0xe3, 0x77, 0xc7, 0x9a, 0x6e, 0xea, 0xda, 0xc0, 0xe8, 0x9e, 0xd6, 0xa5, 0x65, - 0xb4, 0xf7, 0x67, 0xfd, 0x9e, 0x66, 0xf6, 0x07, 0xc7, 0x67, 0xe3, 0xc1, 0x49, 0xbd, 0x84, 0xbe, - 0x02, 0x75, 0x39, 0xed, 0x6c, 0x6c, 0x24, 0xbc, 0xf2, 0x32, 0x69, 0xa3, 0x77, 0xa3, 0x6c, 0xb1, - 0x35, 0xf4, 0x14, 0x9a, 0xcb, 0x48, 0xd9, 0x52, 0x95, 0xc3, 0x5f, 0x24, 0xd8, 0x5e, 0x70, 0x37, - 0x4a, 0x10, 0xc5, 0x65, 0x1b, 0x19, 0x19, 0x5d, 0x63, 0x3c, 0xba, 0xb1, 0xf7, 0x2f, 0x41, 0x29, - 0x22, 0x75, 0x7b, 0x46, 0xff, 0xbd, 0x56, 0x97, 0x50, 0x03, 0xf6, 0x8a, 0xe6, 0x87, 0xda, 0xe0, - 0xa4, 0x3f, 0x78, 0x53, 0x2f, 0xa1, 0x26, 0x3c, 0x2e, 0x22, 0xe8, 0xda, 0xa9, 0xd6, 0x1d, 0x69, - 0x27, 0xf5, 0x72, 0xe7, 0xcf, 0x32, 0xa0, 0xbc, 0x3a, 0x1c, 0x5c, 0x45, 0x1d, 0x7d, 0x09, 0xf2, - 0xb2, 0x6f, 0x07, 0x6a, 0x65, 0xde, 0xaf, 0xf8, 0x4c, 0x29, 0x5f, 0xdf, 0x81, 0x99, 0xbc, 0x84, - 0xea, 0x3d, 0x34, 0x81, 0x2f, 0x0a, 0xfe, 0x01, 0xe8, 0x60, 0xe1, 0x4d, 0x5c, 0x7c, 0x92, 0x94, - 0xa7, 0xb7, 0x93, 0xb2, 0x1c, 0x1c, 0x1e, 0x2d, 0x7d, 0x94, 0xd1, 0x0d, 0xb5, 0xb7, 0x7c, 0x16, - 0x94, 0xc3, 0xbb, 0x50, 0xb3, 0xac, 0x3a, 0xa0, 0xc5, 0xd7, 0x14, 0xa9, 0xd9, 0x1a, 0x4b, 0x9f, - 0x5a, 0x65, 0x77, 0xa1, 0x53, 0xb5, 0xe8, 0x67, 0xac, 0xde, 0x3b, 0x7e, 0xf6, 0xd3, 0xc1, 0x8c, - 0xf0, 0x8b, 0x70, 0xd2, 0xb6, 0xa9, 0x7b, 0x24, 0x56, 0x4a, 0xfe, 0xc8, 0x36, 0x75, 0x52, 0x60, - 0xb2, 0x1e, 0x23, 0xcf, 0xff, 0x0b, 0x00, 0x00, 0xff, 0xff, 0xe2, 0x37, 0x59, 0x0b, 0x87, 0x0b, + 0x9a, 0x52, 0x4b, 0xd2, 0xab, 0x11, 0x32, 0x8a, 0x00, 0xf4, 0x3d, 0x80, 0x1d, 0x60, 0x8b, 0xe3, + 0xa9, 0x69, 0x71, 0xb9, 0x1a, 0x5b, 0xa3, 0xb4, 0x93, 0x5b, 0xac, 0x9d, 0xde, 0x62, 0x6d, 0x23, + 0xbd, 0xc5, 0xf4, 0xaa, 0x60, 0x77, 0x79, 0x14, 0x1a, 0xfa, 0xd3, 0x34, 0x14, 0x56, 0x87, 0x0a, + 0x76, 0x97, 0xab, 0xbf, 0x4a, 0xb0, 0x65, 0x60, 0x07, 0x47, 0x2e, 0xcc, 0x7b, 0x94, 0x71, 0xf4, + 0x02, 0x36, 0x02, 0xcc, 0x68, 0x18, 0xd8, 0xc9, 0x35, 0xf6, 0xa0, 0xa3, 0x5c, 0x17, 0x48, 0x9e, + 0x19, 0x1d, 0x84, 0x9e, 0x71, 0xa3, 0x23, 0xb1, 0xc3, 0x20, 0xc0, 0x9e, 0x3d, 0x4f, 0xaf, 0xb7, + 0x74, 0x1c, 0x75, 0x89, 0x1f, 0x10, 0x3b, 0x31, 0x42, 0xd2, 0x93, 0x41, 0xe4, 0xd2, 0x84, 0x38, + 0x0e, 0xf1, 0x66, 0x66, 0xe8, 0x11, 0x2e, 0x5c, 0xa8, 0x09, 0x6c, 0xec, 0x11, 0xae, 0xfe, 0x2e, + 0x81, 0xbc, 0xec, 0x3a, 0x42, 0x3f, 0xc2, 0x66, 0xbe, 0xa2, 0x62, 0xb5, 0xb5, 0x9c, 0xda, 0x85, + 0x42, 0xd2, 0x6b, 0xb9, 0x62, 0x43, 0x2a, 0x6c, 0xda, 0x96, 0x6f, 0x4d, 0x88, 0x43, 0x38, 0xc1, + 0x4c, 0x2e, 0x25, 0xf5, 0x98, 0xc7, 0xd0, 0x37, 0x50, 0xb1, 0x29, 0xe3, 0x4c, 0x2e, 0xc7, 0x9d, + 0xb6, 0x5b, 0x7c, 0x12, 0x7a, 0x42, 0x52, 0xff, 0x2e, 0xc1, 0x4e, 0x51, 0x0b, 0x7e, 0xae, 0xd2, + 0x0e, 0xac, 0x33, 0x6e, 0xf1, 0x90, 0xc5, 0x07, 0x9b, 0x37, 0x24, 0x17, 0x32, 0x8a, 0x19, 0xba, + 0x60, 0xa2, 0x1f, 0xa0, 0x66, 0x31, 0x46, 0x66, 0x5e, 0x52, 0x14, 0xe5, 0x95, 0x45, 0x01, 0x29, + 0xbd, 0xcb, 0xa3, 0xe0, 0x20, 0x69, 0xe4, 0x38, 0x78, 0x6d, 0x75, 0x70, 0x4a, 0xef, 0x72, 0xf4, + 0x16, 0xb6, 0x19, 0xf1, 0xcd, 0x29, 0x61, 0xbe, 0xc5, 0xed, 0x0b, 0x33, 0x08, 0x9d, 0xa4, 0x85, + 0x6a, 0x9d, 0xc7, 0x99, 0xf0, 0x51, 0x7f, 0x78, 0x22, 0x08, 0x7a, 0xe8, 0xe0, 0xbe, 0x77, 0x4e, + 0xf5, 0x87, 0x8c, 0xf8, 0x79, 0xf0, 0xf0, 0x5f, 0x09, 0xb6, 0x17, 0x4a, 0x0e, 0x1d, 0x40, 0xc3, + 0xd0, 0x4e, 0xb5, 0xe1, 0xdb, 0xb3, 0xc1, 0x07, 0xb3, 0x77, 0x36, 0x32, 0x4c, 0xe3, 0xc3, 0x50, + 0x33, 0xc7, 0x83, 0xd1, 0x50, 0xeb, 0xf5, 0x5f, 0xf7, 0xb5, 0x93, 0xfa, 0x3d, 0xf4, 0x0c, 0xf6, + 0x8b, 0x48, 0x83, 0xf1, 0xbb, 0x63, 0x4d, 0x37, 0x75, 0x6d, 0x60, 0x74, 0x4f, 0xeb, 0xd2, 0x32, + 0xda, 0xfb, 0xb3, 0x7e, 0x4f, 0x33, 0xfb, 0x83, 0xe3, 0xb3, 0xf1, 0xe0, 0xa4, 0x5e, 0x42, 0x5f, + 0x81, 0xba, 0x9c, 0x76, 0x36, 0x36, 0x12, 0x5e, 0x79, 0x99, 0xb4, 0xd1, 0xbb, 0x51, 0xb6, 0xd8, + 0x1a, 0x7a, 0x0a, 0xcd, 0x65, 0xa4, 0x6c, 0xa9, 0xca, 0xe1, 0x2f, 0x12, 0x6c, 0x2f, 0xb8, 0x1b, + 0x25, 0x88, 0xe2, 0xb2, 0x8d, 0x8c, 0x8c, 0xae, 0x31, 0x1e, 0xdd, 0xd8, 0xfb, 0x97, 0xa0, 0x14, + 0x91, 0xba, 0x3d, 0xa3, 0xff, 0x5e, 0xab, 0x4b, 0xa8, 0x01, 0x7b, 0x45, 0xf3, 0x43, 0x6d, 0x70, + 0xd2, 0x1f, 0xbc, 0xa9, 0x97, 0x50, 0x13, 0x1e, 0x17, 0x11, 0x74, 0xed, 0x54, 0xeb, 0x8e, 0xb4, + 0x93, 0x7a, 0xb9, 0xf3, 0x67, 0x19, 0x50, 0x5e, 0x1d, 0x0e, 0xae, 0xa2, 0x8e, 0xbe, 0x04, 0x79, + 0xd9, 0xb7, 0x03, 0xb5, 0x32, 0xef, 0x57, 0x7c, 0xa6, 0x94, 0xaf, 0xef, 0xc0, 0x4c, 0x5e, 0x42, + 0xf5, 0x1e, 0x9a, 0xc0, 0x17, 0x05, 0xff, 0x00, 0x74, 0xb0, 0xf0, 0x26, 0x2e, 0x3e, 0x49, 0xca, + 0xd3, 0xdb, 0x49, 0x59, 0x0e, 0x0e, 0x8f, 0x96, 0x3e, 0xca, 0xe8, 0x86, 0xda, 0x5b, 0x3e, 0x0b, + 0xca, 0xe1, 0x5d, 0xa8, 0x59, 0x56, 0x1d, 0xd0, 0xe2, 0x6b, 0x8a, 0xd4, 0x6c, 0x8d, 0xa5, 0x4f, + 0xad, 0xb2, 0xbb, 0xd0, 0xa9, 0x5a, 0xf4, 0x33, 0x56, 0xef, 0x1d, 0x3f, 0xfb, 0xe9, 0x60, 0x46, + 0xf8, 0x45, 0x38, 0x69, 0xdb, 0xd4, 0x3d, 0x12, 0x2b, 0x25, 0x7f, 0x64, 0x9b, 0x3a, 0x29, 0x30, + 0x59, 0x8f, 0x91, 0xe7, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0xac, 0x20, 0x3a, 0xd1, 0x87, 0x0b, 0x00, 0x00, }