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 diff --git a/livekit/livekit_models.pb.go b/livekit/livekit_models.pb.go index 3c2a37448..ca026cab5 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{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{27, 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{38, 0} + return file_livekit_models_proto_rawDescGZIP(), []int{39, 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 { @@ -1983,7 +2027,7 @@ type SimulcastCodecInfo struct { 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 +2039,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 +2052,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 { @@ -2099,7 +2143,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 +2155,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 +2168,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 +2335,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 +2347,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 +2360,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 { @@ -2403,7 +2447,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 +2459,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 +2472,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. @@ -2687,7 +2731,7 @@ type EncryptedPacket struct { func (x *EncryptedPacket) Reset() { *x = EncryptedPacket{} - mi := &file_livekit_models_proto_msgTypes[12] + mi := &file_livekit_models_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2699,7 +2743,7 @@ func (x *EncryptedPacket) String() string { func (*EncryptedPacket) ProtoMessage() {} func (x *EncryptedPacket) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[12] + mi := &file_livekit_models_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2712,7 +2756,7 @@ func (x *EncryptedPacket) ProtoReflect() protoreflect.Message { // Deprecated: Use EncryptedPacket.ProtoReflect.Descriptor instead. func (*EncryptedPacket) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{12} + return file_livekit_models_proto_rawDescGZIP(), []int{13} } func (x *EncryptedPacket) GetEncryptionType() Encryption_Type { @@ -2763,7 +2807,7 @@ type EncryptedPacketPayload struct { func (x *EncryptedPacketPayload) Reset() { *x = EncryptedPacketPayload{} - mi := &file_livekit_models_proto_msgTypes[13] + mi := &file_livekit_models_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2775,7 +2819,7 @@ func (x *EncryptedPacketPayload) String() string { func (*EncryptedPacketPayload) ProtoMessage() {} func (x *EncryptedPacketPayload) ProtoReflect() protoreflect.Message { - mi := &file_livekit_models_proto_msgTypes[13] + mi := &file_livekit_models_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2788,7 +2832,7 @@ func (x *EncryptedPacketPayload) ProtoReflect() protoreflect.Message { // Deprecated: Use EncryptedPacketPayload.ProtoReflect.Descriptor instead. func (*EncryptedPacketPayload) Descriptor() ([]byte, []int) { - return file_livekit_models_proto_rawDescGZIP(), []int{13} + return file_livekit_models_proto_rawDescGZIP(), []int{14} } func (x *EncryptedPacketPayload) GetValue() isEncryptedPacketPayload_Value { @@ -2947,7 +2991,7 @@ type ActiveSpeakerUpdate struct { func (x *ActiveSpeakerUpdate) Reset() { *x = ActiveSpeakerUpdate{} - mi := &file_livekit_models_proto_msgTypes[14] + mi := &file_livekit_models_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2959,7 +3003,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[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2972,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{14} + return file_livekit_models_proto_rawDescGZIP(), []int{15} } func (x *ActiveSpeakerUpdate) GetSpeakers() []*SpeakerInfo { @@ -2995,7 +3039,7 @@ type SpeakerInfo struct { func (x *SpeakerInfo) Reset() { *x = SpeakerInfo{} - mi := &file_livekit_models_proto_msgTypes[15] + mi := &file_livekit_models_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3007,7 +3051,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[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3020,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{15} + return file_livekit_models_proto_rawDescGZIP(), []int{16} } func (x *SpeakerInfo) GetSid() string { @@ -3077,7 +3121,7 @@ type UserPacket struct { func (x *UserPacket) Reset() { *x = UserPacket{} - mi := &file_livekit_models_proto_msgTypes[16] + mi := &file_livekit_models_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3089,7 +3133,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[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3102,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{16} + return file_livekit_models_proto_rawDescGZIP(), []int{17} } // Deprecated: Marked as deprecated in livekit_models.proto. @@ -3189,7 +3233,7 @@ type SipDTMF struct { func (x *SipDTMF) Reset() { *x = SipDTMF{} - mi := &file_livekit_models_proto_msgTypes[17] + mi := &file_livekit_models_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3201,7 +3245,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[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3214,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{17} + return file_livekit_models_proto_rawDescGZIP(), []int{18} } func (x *SipDTMF) GetCode() uint32 { @@ -3243,7 +3287,7 @@ type Transcription struct { func (x *Transcription) Reset() { *x = Transcription{} - mi := &file_livekit_models_proto_msgTypes[18] + mi := &file_livekit_models_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3255,7 +3299,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[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3268,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{18} + return file_livekit_models_proto_rawDescGZIP(), []int{19} } func (x *Transcription) GetTranscribedParticipantIdentity() string { @@ -3306,7 +3350,7 @@ type TranscriptionSegment struct { func (x *TranscriptionSegment) Reset() { *x = TranscriptionSegment{} - mi := &file_livekit_models_proto_msgTypes[19] + mi := &file_livekit_models_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3318,7 +3362,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[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3331,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{19} + return file_livekit_models_proto_rawDescGZIP(), []int{20} } func (x *TranscriptionSegment) GetId() string { @@ -3390,7 +3434,7 @@ type ChatMessage struct { func (x *ChatMessage) Reset() { *x = ChatMessage{} - mi := &file_livekit_models_proto_msgTypes[20] + mi := &file_livekit_models_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3402,7 +3446,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[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3415,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{20} + return file_livekit_models_proto_rawDescGZIP(), []int{21} } func (x *ChatMessage) GetId() string { @@ -3473,7 +3517,7 @@ type RpcRequest struct { func (x *RpcRequest) Reset() { *x = RpcRequest{} - mi := &file_livekit_models_proto_msgTypes[21] + mi := &file_livekit_models_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3485,7 +3529,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[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3498,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{21} + return file_livekit_models_proto_rawDescGZIP(), []int{22} } func (x *RpcRequest) GetId() string { @@ -3545,7 +3589,7 @@ type RpcAck struct { func (x *RpcAck) Reset() { *x = RpcAck{} - mi := &file_livekit_models_proto_msgTypes[22] + mi := &file_livekit_models_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3557,7 +3601,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[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3570,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{22} + return file_livekit_models_proto_rawDescGZIP(), []int{23} } func (x *RpcAck) GetRequestId() string { @@ -3594,7 +3638,7 @@ type RpcResponse struct { func (x *RpcResponse) Reset() { *x = RpcResponse{} - mi := &file_livekit_models_proto_msgTypes[23] + mi := &file_livekit_models_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3606,7 +3650,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[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3619,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{23} + return file_livekit_models_proto_rawDescGZIP(), []int{24} } func (x *RpcResponse) GetRequestId() string { @@ -3681,7 +3725,7 @@ type RpcError struct { func (x *RpcError) Reset() { *x = RpcError{} - mi := &file_livekit_models_proto_msgTypes[24] + mi := &file_livekit_models_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3693,7 +3737,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[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3706,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{24} + return file_livekit_models_proto_rawDescGZIP(), []int{25} } func (x *RpcError) GetCode() uint32 { @@ -3741,7 +3785,7 @@ type ParticipantTracks struct { func (x *ParticipantTracks) Reset() { *x = ParticipantTracks{} - mi := &file_livekit_models_proto_msgTypes[25] + mi := &file_livekit_models_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3753,7 +3797,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[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3766,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{25} + return file_livekit_models_proto_rawDescGZIP(), []int{26} } func (x *ParticipantTracks) GetParticipantSid() string { @@ -3800,7 +3844,7 @@ type ServerInfo struct { func (x *ServerInfo) Reset() { *x = ServerInfo{} - mi := &file_livekit_models_proto_msgTypes[26] + mi := &file_livekit_models_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3812,7 +3856,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[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3825,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{26} + return file_livekit_models_proto_rawDescGZIP(), []int{27} } func (x *ServerInfo) GetEdition() ServerInfo_Edition { @@ -3900,7 +3944,7 @@ type ClientInfo struct { func (x *ClientInfo) Reset() { *x = ClientInfo{} - mi := &file_livekit_models_proto_msgTypes[27] + mi := &file_livekit_models_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3912,7 +3956,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[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3925,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{27} + return file_livekit_models_proto_rawDescGZIP(), []int{28} } func (x *ClientInfo) GetSdk() ClientInfo_SDK { @@ -4019,7 +4063,7 @@ type ClientConfiguration struct { func (x *ClientConfiguration) Reset() { *x = ClientConfiguration{} - mi := &file_livekit_models_proto_msgTypes[28] + mi := &file_livekit_models_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4031,7 +4075,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[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4044,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{28} + return file_livekit_models_proto_rawDescGZIP(), []int{29} } func (x *ClientConfiguration) GetVideo() *VideoConfiguration { @@ -4091,7 +4135,7 @@ type VideoConfiguration struct { func (x *VideoConfiguration) Reset() { *x = VideoConfiguration{} - mi := &file_livekit_models_proto_msgTypes[29] + mi := &file_livekit_models_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4103,7 +4147,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[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4116,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{29} + return file_livekit_models_proto_rawDescGZIP(), []int{30} } func (x *VideoConfiguration) GetHardwareEncoder() ClientConfigSetting { @@ -4138,7 +4182,7 @@ type DisabledCodecs struct { func (x *DisabledCodecs) Reset() { *x = DisabledCodecs{} - mi := &file_livekit_models_proto_msgTypes[30] + mi := &file_livekit_models_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4150,7 +4194,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[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4163,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{30} + return file_livekit_models_proto_rawDescGZIP(), []int{31} } func (x *DisabledCodecs) GetCodecs() []*Codec { @@ -4197,7 +4241,7 @@ type RTPDrift struct { func (x *RTPDrift) Reset() { *x = RTPDrift{} - mi := &file_livekit_models_proto_msgTypes[31] + mi := &file_livekit_models_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4209,7 +4253,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[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4222,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{31} + return file_livekit_models_proto_rawDescGZIP(), []int{32} } func (x *RTPDrift) GetStartTime() *timestamppb.Timestamp { @@ -4341,7 +4385,7 @@ type RTPStats struct { func (x *RTPStats) Reset() { *x = RTPStats{} - mi := &file_livekit_models_proto_msgTypes[32] + mi := &file_livekit_models_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4353,7 +4397,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[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4366,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{32} + return file_livekit_models_proto_rawDescGZIP(), []int{33} } func (x *RTPStats) GetStartTime() *timestamppb.Timestamp { @@ -4699,7 +4743,7 @@ type RTCPSenderReportState struct { func (x *RTCPSenderReportState) Reset() { *x = RTCPSenderReportState{} - mi := &file_livekit_models_proto_msgTypes[33] + mi := &file_livekit_models_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4711,7 +4755,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[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4724,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{33} + return file_livekit_models_proto_rawDescGZIP(), []int{34} } func (x *RTCPSenderReportState) GetRtpTimestamp() uint32 { @@ -4795,7 +4839,7 @@ type RTPForwarderState struct { func (x *RTPForwarderState) Reset() { *x = RTPForwarderState{} - mi := &file_livekit_models_proto_msgTypes[34] + mi := &file_livekit_models_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4807,7 +4851,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[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4820,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{34} + return file_livekit_models_proto_rawDescGZIP(), []int{35} } func (x *RTPForwarderState) GetStarted() bool { @@ -4912,7 +4956,7 @@ type RTPMungerState struct { func (x *RTPMungerState) Reset() { *x = RTPMungerState{} - mi := &file_livekit_models_proto_msgTypes[35] + mi := &file_livekit_models_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4924,7 +4968,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[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4937,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{35} + return file_livekit_models_proto_rawDescGZIP(), []int{36} } func (x *RTPMungerState) GetExtLastSequenceNumber() uint64 { @@ -4997,7 +5041,7 @@ type VP8MungerState struct { func (x *VP8MungerState) Reset() { *x = VP8MungerState{} - mi := &file_livekit_models_proto_msgTypes[36] + mi := &file_livekit_models_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5009,7 +5053,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[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5022,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{36} + return file_livekit_models_proto_rawDescGZIP(), []int{37} } func (x *VP8MungerState) GetExtLastPictureId() int32 { @@ -5084,7 +5128,7 @@ type TimedVersion struct { func (x *TimedVersion) Reset() { *x = TimedVersion{} - mi := &file_livekit_models_proto_msgTypes[37] + mi := &file_livekit_models_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5096,7 +5140,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[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5109,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{37} + return file_livekit_models_proto_rawDescGZIP(), []int{38} } func (x *TimedVersion) GetUnixMicro() int64 { @@ -5134,7 +5178,7 @@ type DataStream struct { func (x *DataStream) Reset() { *x = DataStream{} - mi := &file_livekit_models_proto_msgTypes[38] + mi := &file_livekit_models_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5146,7 +5190,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[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5159,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{38} + return file_livekit_models_proto_rawDescGZIP(), []int{39} } type WebhookConfig struct { @@ -5172,7 +5216,7 @@ type WebhookConfig struct { func (x *WebhookConfig) Reset() { *x = WebhookConfig{} - mi := &file_livekit_models_proto_msgTypes[39] + mi := &file_livekit_models_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5184,7 +5228,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[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5197,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{39} + return file_livekit_models_proto_rawDescGZIP(), []int{40} } func (x *WebhookConfig) GetUrl() string { @@ -5228,7 +5272,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[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5240,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[42] + mi := &file_livekit_models_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5253,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{38, 0} + return file_livekit_models_proto_rawDescGZIP(), []int{39, 0} } func (x *DataStream_TextHeader) GetOperationType() DataStream_OperationType { @@ -5301,7 +5345,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[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5313,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[43] + mi := &file_livekit_models_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5326,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{38, 1} + return file_livekit_models_proto_rawDescGZIP(), []int{39, 1} } func (x *DataStream_ByteHeader) GetName() string { @@ -5360,7 +5404,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[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5372,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[44] + mi := &file_livekit_models_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5385,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{38, 2} + return file_livekit_models_proto_rawDescGZIP(), []int{39, 2} } func (x *DataStream_Header) GetStreamId() string { @@ -5493,7 +5537,7 @@ type DataStream_Chunk struct { func (x *DataStream_Chunk) Reset() { *x = DataStream_Chunk{} - mi := &file_livekit_models_proto_msgTypes[45] + mi := &file_livekit_models_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5505,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[45] + mi := &file_livekit_models_proto_msgTypes[46] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5518,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{38, 3} + return file_livekit_models_proto_rawDescGZIP(), []int{39, 3} } func (x *DataStream_Chunk) GetStreamId() string { @@ -5568,7 +5612,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[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5580,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[46] + mi := &file_livekit_models_proto_msgTypes[47] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5593,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{38, 4} + return file_livekit_models_proto_rawDescGZIP(), []int{39, 4} } func (x *DataStream_Trailer) GetStreamId() string { @@ -5625,7 +5669,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" + @@ -6214,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, 49) +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 @@ -6239,138 +6285,139 @@ 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 + (*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{ - 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 + 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 - 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 + 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 - 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 + 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 - 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 + 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 - 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 + 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 - 51, // 50: livekit.ClientConfiguration.video:type_name -> livekit.VideoConfiguration - 51, // 51: livekit.ClientConfiguration.screen:type_name -> livekit.VideoConfiguration + 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 - 52, // 53: livekit.ClientConfiguration.disabled_codecs:type_name -> livekit.DisabledCodecs + 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 - 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 + 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 - 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 + 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 @@ -6384,7 +6431,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), @@ -6399,7 +6446,7 @@ func file_livekit_models_proto_init() { (*DataPacket_StreamTrailer)(nil), (*DataPacket_EncryptedPacket)(nil), } - file_livekit_models_proto_msgTypes[13].OneofWrappers = []any{ + file_livekit_models_proto_msgTypes[14].OneofWrappers = []any{ (*EncryptedPacketPayload_User)(nil), (*EncryptedPacketPayload_Metrics)(nil), (*EncryptedPacketPayload_ChatMessage)(nil), @@ -6410,27 +6457,27 @@ func file_livekit_models_proto_init() { (*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[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[34].OneofWrappers = []any{ + file_livekit_models_proto_msgTypes[35].OneofWrappers = []any{ (*RTPForwarderState_Vp8Munger)(nil), } - file_livekit_models_proto_msgTypes[44].OneofWrappers = []any{ + file_livekit_models_proto_msgTypes[45].OneofWrappers = []any{ (*DataStream_Header_TextHeader)(nil), (*DataStream_Header_ByteHeader)(nil), } - file_livekit_models_proto_msgTypes[45].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: 49, + NumMessages: 50, NumExtensions: 0, NumServices: 0, }, diff --git a/livekit/livekit_phone_number.pb.go b/livekit/livekit_phone_number.pb.go new file mode 100644 index 000000000..f148d3c84 --- /dev/null +++ b/livekit/livekit_phone_number.pb.go @@ -0,0 +1,1005 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.7 +// 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" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + 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) +) + +// 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 + +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[1].Descriptor() +} + +func (PhoneNumberStatus) Type() protoreflect.EnumType { + return &file_livekit_phone_number_proto_enumTypes[1] +} + +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{1} +} + +// 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") + Limit int32 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit,omitempty"` // Optional: Maximum number of results (default: 50) + 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 +} + +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) GetLimit() int32 { + if x != nil { + return x.Limit + } + return 0 +} + +func (x *ListPhoneNumberInventoryRequest) GetPageToken() *TokenPagination { + if x != nil { + return x.PageToken + } + 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 *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 +} + +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) GetNextPageToken() *TokenPagination { + if x != nil { + return x.NextPageToken + } + return nil +} + +// PurchasePhoneNumberRequest - Request to purchase phone numbers +type PurchasePhoneNumberRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + 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 +} + +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) GetPhoneNumbers() []string { + if x != nil { + return x.PhoneNumbers + } + return nil +} + +// PurchasePhoneNumberResponse - Response containing the purchased phone numbers +type PurchasePhoneNumberResponse struct { + 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 +} + +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) GetPhoneNumbers() []*PurchasedPhoneNumber { + if x != nil { + return x.PhoneNumbers + } + 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) + 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 +} + +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) GetPageToken() *TokenPagination { + if x != nil { + return x.PageToken + } + 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 *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 +} + +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) GetNextPageToken() *TokenPagination { + if x != nil { + return x.NextPageToken + } + return nil +} + +func (x *ListPurchasedPhoneNumbersResponse) GetTotalCount() int32 { + if x != nil { + return x.TotalCount + } + return 0 +} + +// ReleasePhoneNumberRequest - Request to release purchased phone numbers +type ReleasePhoneNumberRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + 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 +} + +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) GetPhoneNumbers() []string { + if x != nil { + return x.PhoneNumbers + } + return nil +} + +// 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 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 + sizeCache protoimpl.SizeCache +} + +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 *GlobalPhoneNumber) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GlobalPhoneNumber) ProtoMessage() {} + +func (x *GlobalPhoneNumber) 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 GlobalPhoneNumber.ProtoReflect.Descriptor instead. +func (*GlobalPhoneNumber) Descriptor() ([]byte, []int) { + return file_livekit_phone_number_proto_rawDescGZIP(), []int{7} +} + +func (x *GlobalPhoneNumber) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +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 *GlobalPhoneNumber) GetAreaCode() string { + if x != nil { + return x.AreaCode + } + return "" +} + +func (x *GlobalPhoneNumber) GetNumberType() string { + if x != nil { + return x.NumberType + } + return "" +} + +func (x *GlobalPhoneNumber) GetLocality() string { + if x != nil { + return x.Locality + } + return "" +} + +func (x *GlobalPhoneNumber) GetRegion() string { + if x != nil { + return x.Region + } + return "" +} + +func (x *GlobalPhoneNumber) GetSpamScore() float64 { + if x != nil { + return x.SpamScore + } + return 0 +} + +func (x *GlobalPhoneNumber) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *GlobalPhoneNumber) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +// 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 *TelephonyCost) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TelephonyCost) ProtoMessage() {} + +func (x *TelephonyCost) 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 TelephonyCost.ProtoReflect.Descriptor instead. +func (*TelephonyCost) Descriptor() ([]byte, []int) { + return file_livekit_phone_number_proto_rawDescGZIP(), []int{8} +} + +func (x *TelephonyCost) GetResource() TelephonyCostType { + if x != nil { + return x.Resource + } + return TelephonyCostType_TELEPHONY_COST_TYPE_UNSPECIFIED +} + +func (x *TelephonyCost) GetCurrency() string { + if x != nil { + return x.Currency + } + return "" +} + +func (x *TelephonyCost) GetPrice() float64 { + if x != nil { + return x.Price + } + return 0 +} + +func (x *TelephonyCost) GetBillingUnit() string { + if x != nil { + return x.BillingUnit + } + return "" +} + +// 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") + Costs []*TelephonyCost `protobuf:"bytes,3,rep,name=costs,proto3" json:"costs,omitempty"` // Array of costs for different services + 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) GetCosts() []*TelephonyCost { + if x != nil { + return x.Costs + } + 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 *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 +} + +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) 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 PhoneNumberStatus_PHONE_NUMBER_STATUS_UNSPECIFIED +} + +func (x *PurchasedPhoneNumber) GetAssignedAt() *timestamppb.Timestamp { + if x != nil { + return x.AssignedAt + } + return nil +} + +func (x *PurchasedPhoneNumber) GetReleasedAt() *timestamppb.Timestamp { + if x != nil { + return x.ReleasedAt + } + return nil +} + +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\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\x127\n" + + "\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(\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\"q\n" + + " ListPurchasedPhoneNumbersRequest\x12\x14\n" + + "\x05limit\x18\x01 \x01(\x05R\x05limit\x127\n" + + "\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(\v2\x18.livekit.TokenPaginationR\rnextPageToken\x12\x1f\n" + + "\vtotal_count\x18\x03 \x01(\x05R\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" + + "e164Format\x12!\n" + + "\fcountry_code\x18\x03 \x01(\tR\vcountryCode\x12\x1b\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(\x01R\tspamScore\x129\n" + + "\n" + + "created_at\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" + + "\n" + + "updated_at\x18\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" + + "\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" + + "\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;\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" + + "\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" + + "\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" + + "\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_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_livekit_phone_number_proto_msgTypes = make([]protoimpl.MessageInfo, 11) +var file_livekit_phone_number_proto_goTypes = []any{ + (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 + (*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{ + 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() } +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{ + 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: 2, + 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 + 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..550f68e34 --- /dev/null +++ b/livekit/livekit_phone_number.twirp.go @@ -0,0 +1,1434 @@ +// 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{ + // 1090 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xd1, 0x6e, 0xdb, 0x36, + 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, 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, +} 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", +} diff --git a/magefile.go b/magefile.go index 11b14dce5..bd43baf37 100644 --- a/magefile.go +++ b/magefile.go @@ -49,6 +49,7 @@ func Proto() error { "livekit_room.proto", "livekit_sip.proto", "livekit_cloud_agent.proto", + "livekit_phone_number.proto", } protoFiles := []string{ "livekit_agent.proto", 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 new file mode 100644 index 000000000..f92049aeb --- /dev/null +++ b/protobufs/livekit_phone_number.proto @@ -0,0 +1,129 @@ +syntax = "proto3"; + +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 +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 + 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 + 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 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) + 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 + TokenPagination next_page_token = 2; // Token for next page (empty if no more pages) +} + +// PurchasePhoneNumberRequest - Request to purchase phone numbers +message PurchasePhoneNumberRequest { + repeated string phone_numbers = 1; // Phone numbers to purchase (e.g., ["+1234567890", "+1234567891"]) +} + +// PurchasePhoneNumberResponse - Response containing the purchased phone numbers +message PurchasePhoneNumberResponse { + 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) + 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 + TokenPagination 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 purchased phone numbers +message ReleasePhoneNumberRequest { + repeated string phone_numbers = 1; // Phone numbers to release (e.g., ["+1234567890", "+1234567891"]) +} + +// 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") + 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 +} + +// 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") +} + + + +// 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") + repeated TelephonyCost costs = 3; // Array of costs for different services +} + +// PurchasedPhoneNumber - Represents a phone number owned by a LiveKit project +message PurchasedPhoneNumber { + GlobalPhoneNumber phone_number = 1; // Common phone number fields + PhoneNumberStatus status = 2; // Current status of the phone number + 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 +}