diff --git a/.changeset/heavy-dodos-act.md b/.changeset/heavy-dodos-act.md new file mode 100644 index 000000000..cb0ac5faa --- /dev/null +++ b/.changeset/heavy-dodos-act.md @@ -0,0 +1,5 @@ +--- +"github.com/livekit/protocol": patch +--- + +Adding get and update apis for livekit phone numbers diff --git a/livekit/livekit_phone_number.pb.go b/livekit/livekit_phone_number.pb.go index 72268f39a..43bcdadd8 100644 --- a/livekit/livekit_phone_number.pb.go +++ b/livekit/livekit_phone_number.pb.go @@ -9,7 +9,6 @@ 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" @@ -259,10 +258,11 @@ func (x *ListPhoneNumberInventoryResponse) GetNextPageToken() *TokenPagination { // 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 + 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"]) + SipDispatchRuleId string `protobuf:"bytes,2,opt,name=sip_dispatch_rule_id,json=sipDispatchRuleId,proto3" json:"sip_dispatch_rule_id,omitempty"` // Optional: SIP dispatch rule ID to apply to all purchased numbers + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PurchasePhoneNumberRequest) Reset() { @@ -302,6 +302,13 @@ func (x *PurchasePhoneNumberRequest) GetPhoneNumbers() []string { return nil } +func (x *PurchasePhoneNumberRequest) GetSipDispatchRuleId() string { + if x != nil { + return x.SipDispatchRuleId + } + return "" +} + // PurchasePhoneNumberResponse - Response containing the purchased phone numbers type PurchasePhoneNumberResponse struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -349,11 +356,13 @@ func (x *PurchasePhoneNumberResponse) GetPhoneNumbers() []*PurchasedPhoneNumber // ListPurchasedPhoneNumbersRequest - Request to list purchased phone numbers type ListPurchasedPhoneNumbersRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Limit int32 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"` // Optional: Maximum number of results (default: 50) - 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 + 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) + Status PhoneNumberStatus `protobuf:"varint,2,opt,name=status,proto3,enum=livekit.PhoneNumberStatus" json:"status,omitempty"` // Optional: Filter by status (active, pending, released) + PageToken *TokenPagination `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` // Optional: Token for pagination (empty for first page) + SipDispatchRuleId string `protobuf:"bytes,4,opt,name=sip_dispatch_rule_id,json=sipDispatchRuleId,proto3" json:"sip_dispatch_rule_id,omitempty"` // Optional: Filter by SIP dispatch rule ID + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ListPurchasedPhoneNumbersRequest) Reset() { @@ -393,6 +402,13 @@ func (x *ListPurchasedPhoneNumbersRequest) GetLimit() int32 { return 0 } +func (x *ListPurchasedPhoneNumbersRequest) GetStatus() PhoneNumberStatus { + if x != nil { + return x.Status + } + return PhoneNumberStatus_PHONE_NUMBER_STATUS_UNSPECIFIED +} + func (x *ListPurchasedPhoneNumbersRequest) GetPageToken() *TokenPagination { if x != nil { return x.PageToken @@ -400,6 +416,13 @@ func (x *ListPurchasedPhoneNumbersRequest) GetPageToken() *TokenPagination { return nil } +func (x *ListPurchasedPhoneNumbersRequest) GetSipDispatchRuleId() string { + if x != nil { + return x.SipDispatchRuleId + } + return "" +} + // ListPurchasedPhoneNumbersResponse - Response containing purchased phone numbers type ListPurchasedPhoneNumbersResponse struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -461,28 +484,29 @@ func (x *ListPurchasedPhoneNumbersResponse) GetTotalCount() int32 { 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 +// GetPurchasedPhoneNumberRequest - Request to get a purchased phone number +type GetPurchasedPhoneNumberRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + PurchasedPhoneNumberId string `protobuf:"bytes,1,opt,name=purchased_phone_number_id,json=purchasedPhoneNumberId,proto3" json:"purchased_phone_number_id,omitempty"` // Optional: Use purchased phone number ID for direct lookup + PhoneNumber string `protobuf:"bytes,2,opt,name=phone_number,json=phoneNumber,proto3" json:"phone_number,omitempty"` // Optional: Use phone number string for lookup + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *ReleasePhoneNumberRequest) Reset() { - *x = ReleasePhoneNumberRequest{} +func (x *GetPurchasedPhoneNumberRequest) Reset() { + *x = GetPurchasedPhoneNumberRequest{} mi := &file_livekit_phone_number_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *ReleasePhoneNumberRequest) String() string { +func (x *GetPurchasedPhoneNumberRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ReleasePhoneNumberRequest) ProtoMessage() {} +func (*GetPurchasedPhoneNumberRequest) ProtoMessage() {} -func (x *ReleasePhoneNumberRequest) ProtoReflect() protoreflect.Message { +func (x *GetPurchasedPhoneNumberRequest) ProtoReflect() protoreflect.Message { mi := &file_livekit_phone_number_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -494,18 +518,266 @@ func (x *ReleasePhoneNumberRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ReleasePhoneNumberRequest.ProtoReflect.Descriptor instead. -func (*ReleasePhoneNumberRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use GetPurchasedPhoneNumberRequest.ProtoReflect.Descriptor instead. +func (*GetPurchasedPhoneNumberRequest) Descriptor() ([]byte, []int) { return file_livekit_phone_number_proto_rawDescGZIP(), []int{6} } -func (x *ReleasePhoneNumberRequest) GetPhoneNumbers() []string { +func (x *GetPurchasedPhoneNumberRequest) GetPurchasedPhoneNumberId() string { + if x != nil { + return x.PurchasedPhoneNumberId + } + return "" +} + +func (x *GetPurchasedPhoneNumberRequest) GetPhoneNumber() string { + if x != nil { + return x.PhoneNumber + } + return "" +} + +// GetPurchasedPhoneNumberResponse - Response containing the purchased phone number +type GetPurchasedPhoneNumberResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + PhoneNumber *PurchasedPhoneNumber `protobuf:"bytes,1,opt,name=phone_number,json=phoneNumber,proto3" json:"phone_number,omitempty"` // The purchased phone number details + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetPurchasedPhoneNumberResponse) Reset() { + *x = GetPurchasedPhoneNumberResponse{} + mi := &file_livekit_phone_number_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetPurchasedPhoneNumberResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetPurchasedPhoneNumberResponse) ProtoMessage() {} + +func (x *GetPurchasedPhoneNumberResponse) 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 GetPurchasedPhoneNumberResponse.ProtoReflect.Descriptor instead. +func (*GetPurchasedPhoneNumberResponse) Descriptor() ([]byte, []int) { + return file_livekit_phone_number_proto_rawDescGZIP(), []int{7} +} + +func (x *GetPurchasedPhoneNumberResponse) GetPhoneNumber() *PurchasedPhoneNumber { + if x != nil { + return x.PhoneNumber + } + return nil +} + +// UpdatePurchasedPhoneNumberRequest - Request to update a purchased phone number +type UpdatePurchasedPhoneNumberRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + PurchasedPhoneNumberId string `protobuf:"bytes,1,opt,name=purchased_phone_number_id,json=purchasedPhoneNumberId,proto3" json:"purchased_phone_number_id,omitempty"` // Optional: Use purchased phone number ID for direct lookup + PhoneNumber string `protobuf:"bytes,2,opt,name=phone_number,json=phoneNumber,proto3" json:"phone_number,omitempty"` // Optional: Use phone number string for lookup + SipDispatchRuleId string `protobuf:"bytes,3,opt,name=sip_dispatch_rule_id,json=sipDispatchRuleId,proto3" json:"sip_dispatch_rule_id,omitempty"` // Optional: SIP dispatch rule ID to assign to the phone number + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpdatePurchasedPhoneNumberRequest) Reset() { + *x = UpdatePurchasedPhoneNumberRequest{} + mi := &file_livekit_phone_number_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdatePurchasedPhoneNumberRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdatePurchasedPhoneNumberRequest) ProtoMessage() {} + +func (x *UpdatePurchasedPhoneNumberRequest) 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 UpdatePurchasedPhoneNumberRequest.ProtoReflect.Descriptor instead. +func (*UpdatePurchasedPhoneNumberRequest) Descriptor() ([]byte, []int) { + return file_livekit_phone_number_proto_rawDescGZIP(), []int{8} +} + +func (x *UpdatePurchasedPhoneNumberRequest) GetPurchasedPhoneNumberId() string { + if x != nil { + return x.PurchasedPhoneNumberId + } + return "" +} + +func (x *UpdatePurchasedPhoneNumberRequest) GetPhoneNumber() string { + if x != nil { + return x.PhoneNumber + } + return "" +} + +func (x *UpdatePurchasedPhoneNumberRequest) GetSipDispatchRuleId() string { + if x != nil { + return x.SipDispatchRuleId + } + return "" +} + +// UpdatePurchasedPhoneNumberResponse - Response containing the updated purchased phone number +type UpdatePurchasedPhoneNumberResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + PhoneNumber *PurchasedPhoneNumber `protobuf:"bytes,1,opt,name=phone_number,json=phoneNumber,proto3" json:"phone_number,omitempty"` // The updated purchased phone number details + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpdatePurchasedPhoneNumberResponse) Reset() { + *x = UpdatePurchasedPhoneNumberResponse{} + mi := &file_livekit_phone_number_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdatePurchasedPhoneNumberResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdatePurchasedPhoneNumberResponse) ProtoMessage() {} + +func (x *UpdatePurchasedPhoneNumberResponse) 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 UpdatePurchasedPhoneNumberResponse.ProtoReflect.Descriptor instead. +func (*UpdatePurchasedPhoneNumberResponse) Descriptor() ([]byte, []int) { + return file_livekit_phone_number_proto_rawDescGZIP(), []int{9} +} + +func (x *UpdatePurchasedPhoneNumberResponse) GetPhoneNumber() *PurchasedPhoneNumber { + if x != nil { + return x.PhoneNumber + } + return nil +} + +// ReleasePurchasedPhoneNumbersRequest - Request to release purchased phone numbers +type ReleasePurchasedPhoneNumbersRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + PurchasedPhoneNumberIds []string `protobuf:"bytes,1,rep,name=purchased_phone_number_ids,json=purchasedPhoneNumberIds,proto3" json:"purchased_phone_number_ids,omitempty"` // Optional: Use purchased phone number IDs for direct lookup + PhoneNumbers []string `protobuf:"bytes,2,rep,name=phone_numbers,json=phoneNumbers,proto3" json:"phone_numbers,omitempty"` // Optional: Use phone number strings for lookup + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReleasePurchasedPhoneNumbersRequest) Reset() { + *x = ReleasePurchasedPhoneNumbersRequest{} + mi := &file_livekit_phone_number_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReleasePurchasedPhoneNumbersRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReleasePurchasedPhoneNumbersRequest) ProtoMessage() {} + +func (x *ReleasePurchasedPhoneNumbersRequest) 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 ReleasePurchasedPhoneNumbersRequest.ProtoReflect.Descriptor instead. +func (*ReleasePurchasedPhoneNumbersRequest) Descriptor() ([]byte, []int) { + return file_livekit_phone_number_proto_rawDescGZIP(), []int{10} +} + +func (x *ReleasePurchasedPhoneNumbersRequest) GetPurchasedPhoneNumberIds() []string { + if x != nil { + return x.PurchasedPhoneNumberIds + } + return nil +} + +func (x *ReleasePurchasedPhoneNumbersRequest) GetPhoneNumbers() []string { if x != nil { return x.PhoneNumbers } return nil } +// ReleasePurchasedPhoneNumbersResponse - Response for releasing purchased phone numbers +type ReleasePurchasedPhoneNumbersResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReleasePurchasedPhoneNumbersResponse) Reset() { + *x = ReleasePurchasedPhoneNumbersResponse{} + mi := &file_livekit_phone_number_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReleasePurchasedPhoneNumbersResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReleasePurchasedPhoneNumbersResponse) ProtoMessage() {} + +func (x *ReleasePurchasedPhoneNumbersResponse) ProtoReflect() protoreflect.Message { + mi := &file_livekit_phone_number_proto_msgTypes[11] + 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 ReleasePurchasedPhoneNumbersResponse.ProtoReflect.Descriptor instead. +func (*ReleasePurchasedPhoneNumbersResponse) Descriptor() ([]byte, []int) { + return file_livekit_phone_number_proto_rawDescGZIP(), []int{11} +} + // GlobalPhoneNumber represents a phone number with standardized format type GlobalPhoneNumber struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -525,7 +797,7 @@ type GlobalPhoneNumber struct { func (x *GlobalPhoneNumber) Reset() { *x = GlobalPhoneNumber{} - mi := &file_livekit_phone_number_proto_msgTypes[7] + mi := &file_livekit_phone_number_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -537,7 +809,7 @@ func (x *GlobalPhoneNumber) String() string { func (*GlobalPhoneNumber) ProtoMessage() {} func (x *GlobalPhoneNumber) ProtoReflect() protoreflect.Message { - mi := &file_livekit_phone_number_proto_msgTypes[7] + mi := &file_livekit_phone_number_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -550,7 +822,7 @@ func (x *GlobalPhoneNumber) ProtoReflect() protoreflect.Message { // Deprecated: Use GlobalPhoneNumber.ProtoReflect.Descriptor instead. func (*GlobalPhoneNumber) Descriptor() ([]byte, []int) { - return file_livekit_phone_number_proto_rawDescGZIP(), []int{7} + return file_livekit_phone_number_proto_rawDescGZIP(), []int{12} } func (x *GlobalPhoneNumber) GetId() string { @@ -636,7 +908,7 @@ type TelephonyCost struct { func (x *TelephonyCost) Reset() { *x = TelephonyCost{} - mi := &file_livekit_phone_number_proto_msgTypes[8] + mi := &file_livekit_phone_number_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -648,7 +920,7 @@ func (x *TelephonyCost) String() string { func (*TelephonyCost) ProtoMessage() {} func (x *TelephonyCost) ProtoReflect() protoreflect.Message { - mi := &file_livekit_phone_number_proto_msgTypes[8] + mi := &file_livekit_phone_number_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -661,7 +933,7 @@ func (x *TelephonyCost) ProtoReflect() protoreflect.Message { // Deprecated: Use TelephonyCost.ProtoReflect.Descriptor instead. func (*TelephonyCost) Descriptor() ([]byte, []int) { - return file_livekit_phone_number_proto_rawDescGZIP(), []int{8} + return file_livekit_phone_number_proto_rawDescGZIP(), []int{13} } func (x *TelephonyCost) GetResource() TelephonyCostType { @@ -704,7 +976,7 @@ type PhoneNumberInventoryItem struct { func (x *PhoneNumberInventoryItem) Reset() { *x = PhoneNumberInventoryItem{} - mi := &file_livekit_phone_number_proto_msgTypes[9] + mi := &file_livekit_phone_number_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -716,7 +988,7 @@ func (x *PhoneNumberInventoryItem) String() string { func (*PhoneNumberInventoryItem) ProtoMessage() {} func (x *PhoneNumberInventoryItem) ProtoReflect() protoreflect.Message { - mi := &file_livekit_phone_number_proto_msgTypes[9] + mi := &file_livekit_phone_number_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -729,7 +1001,7 @@ func (x *PhoneNumberInventoryItem) ProtoReflect() protoreflect.Message { // Deprecated: Use PhoneNumberInventoryItem.ProtoReflect.Descriptor instead. func (*PhoneNumberInventoryItem) Descriptor() ([]byte, []int) { - return file_livekit_phone_number_proto_rawDescGZIP(), []int{9} + return file_livekit_phone_number_proto_rawDescGZIP(), []int{14} } func (x *PhoneNumberInventoryItem) GetPhoneNumber() *GlobalPhoneNumber { @@ -755,19 +1027,20 @@ func (x *PhoneNumberInventoryItem) GetCosts() []*TelephonyCost { // PurchasedPhoneNumber - Represents a phone number owned by a LiveKit project type PurchasedPhoneNumber struct { - state protoimpl.MessageState `protogen:"open.v1"` - PhoneNumber *GlobalPhoneNumber `protobuf:"bytes,1,opt,name=phone_number,json=phoneNumber,proto3" json:"phone_number,omitempty"` // Common phone number fields - Status PhoneNumberStatus `protobuf:"varint,2,opt,name=status,proto3,enum=livekit.PhoneNumberStatus" json:"status,omitempty"` // Current status of the phone number - AssignedAt *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 + state protoimpl.MessageState `protogen:"open.v1"` + PurchasedPhoneNumberId string `protobuf:"bytes,1,opt,name=purchased_phone_number_id,json=purchasedPhoneNumberId,proto3" json:"purchased_phone_number_id,omitempty"` // Unique identifier for the purchased phone number + PhoneNumber *GlobalPhoneNumber `protobuf:"bytes,2,opt,name=phone_number,json=phoneNumber,proto3" json:"phone_number,omitempty"` // Common phone number fields + Status PhoneNumberStatus `protobuf:"varint,3,opt,name=status,proto3,enum=livekit.PhoneNumberStatus" json:"status,omitempty"` // Current status of the phone number + AssignedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=assigned_at,json=assignedAt,proto3" json:"assigned_at,omitempty"` // Timestamp when the number was assigned + ReleasedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=released_at,json=releasedAt,proto3" json:"released_at,omitempty"` // Timestamp when the number was released (if applicable) + SipDispatchRuleId string `protobuf:"bytes,6,opt,name=sip_dispatch_rule_id,json=sipDispatchRuleId,proto3" json:"sip_dispatch_rule_id,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] + mi := &file_livekit_phone_number_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -779,7 +1052,7 @@ func (x *PurchasedPhoneNumber) String() string { func (*PurchasedPhoneNumber) ProtoMessage() {} func (x *PurchasedPhoneNumber) ProtoReflect() protoreflect.Message { - mi := &file_livekit_phone_number_proto_msgTypes[10] + mi := &file_livekit_phone_number_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -792,7 +1065,14 @@ func (x *PurchasedPhoneNumber) ProtoReflect() protoreflect.Message { // Deprecated: Use PurchasedPhoneNumber.ProtoReflect.Descriptor instead. func (*PurchasedPhoneNumber) Descriptor() ([]byte, []int) { - return file_livekit_phone_number_proto_rawDescGZIP(), []int{10} + return file_livekit_phone_number_proto_rawDescGZIP(), []int{15} +} + +func (x *PurchasedPhoneNumber) GetPurchasedPhoneNumberId() string { + if x != nil { + return x.PurchasedPhoneNumberId + } + return "" } func (x *PurchasedPhoneNumber) GetPhoneNumber() *GlobalPhoneNumber { @@ -823,18 +1103,18 @@ func (x *PurchasedPhoneNumber) GetReleasedAt() *timestamppb.Timestamp { return nil } -func (x *PurchasedPhoneNumber) GetSipDispatchRule() *SIPDispatchRuleInfo { +func (x *PurchasedPhoneNumber) GetSipDispatchRuleId() string { if x != nil { - return x.SipDispatchRule + return x.SipDispatchRuleId } - return nil + return "" } 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" + + "\x1alivekit_phone_number.proto\x12\alivekit\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x14livekit_models.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" + @@ -843,22 +1123,38 @@ const file_livekit_phone_number_proto_rawDesc = "" + "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" + + "\x0fnext_page_token\x18\x02 \x01(\v2\x18.livekit.TokenPaginationR\rnextPageToken\"r\n" + "\x1aPurchasePhoneNumberRequest\x12#\n" + - "\rphone_numbers\x18\x01 \x03(\tR\fphoneNumbers\"a\n" + + "\rphone_numbers\x18\x01 \x03(\tR\fphoneNumbers\x12/\n" + + "\x14sip_dispatch_rule_id\x18\x02 \x01(\tR\x11sipDispatchRuleId\"a\n" + "\x1bPurchasePhoneNumberResponse\x12B\n" + - "\rphone_numbers\x18\x01 \x03(\v2\x1d.livekit.PurchasedPhoneNumberR\fphoneNumbers\"q\n" + + "\rphone_numbers\x18\x01 \x03(\v2\x1d.livekit.PurchasedPhoneNumberR\fphoneNumbers\"\xd6\x01\n" + " ListPurchasedPhoneNumbersRequest\x12\x14\n" + - "\x05limit\x18\x01 \x01(\x05R\x05limit\x127\n" + + "\x05limit\x18\x01 \x01(\x05R\x05limit\x122\n" + + "\x06status\x18\x02 \x01(\x0e2\x1a.livekit.PhoneNumberStatusR\x06status\x127\n" + "\n" + - "page_token\x18\x02 \x01(\v2\x18.livekit.TokenPaginationR\tpageToken\"\xbb\x01\n" + + "page_token\x18\x03 \x01(\v2\x18.livekit.TokenPaginationR\tpageToken\x12/\n" + + "\x14sip_dispatch_rule_id\x18\x04 \x01(\tR\x11sipDispatchRuleId\"\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" + + "totalCount\"~\n" + + "\x1eGetPurchasedPhoneNumberRequest\x129\n" + + "\x19purchased_phone_number_id\x18\x01 \x01(\tR\x16purchasedPhoneNumberId\x12!\n" + + "\fphone_number\x18\x02 \x01(\tR\vphoneNumber\"c\n" + + "\x1fGetPurchasedPhoneNumberResponse\x12@\n" + + "\fphone_number\x18\x01 \x01(\v2\x1d.livekit.PurchasedPhoneNumberR\vphoneNumber\"\xb2\x01\n" + + "!UpdatePurchasedPhoneNumberRequest\x129\n" + + "\x19purchased_phone_number_id\x18\x01 \x01(\tR\x16purchasedPhoneNumberId\x12!\n" + + "\fphone_number\x18\x02 \x01(\tR\vphoneNumber\x12/\n" + + "\x14sip_dispatch_rule_id\x18\x03 \x01(\tR\x11sipDispatchRuleId\"f\n" + + "\"UpdatePurchasedPhoneNumberResponse\x12@\n" + + "\fphone_number\x18\x01 \x01(\v2\x1d.livekit.PurchasedPhoneNumberR\vphoneNumber\"\x87\x01\n" + + "#ReleasePurchasedPhoneNumbersRequest\x12;\n" + + "\x1apurchased_phone_number_ids\x18\x01 \x03(\tR\x17purchasedPhoneNumberIds\x12#\n" + + "\rphone_numbers\x18\x02 \x03(\tR\fphoneNumbers\"&\n" + + "$ReleasePurchasedPhoneNumbersResponse\"\xee\x02\n" + "\x11GlobalPhoneNumber\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\x12\x1f\n" + "\ve164_format\x18\x02 \x01(\tR\n" + @@ -884,15 +1180,16 @@ const file_livekit_phone_number_proto_rawDesc = "" + "\x18PhoneNumberInventoryItem\x12=\n" + "\fphone_number\x18\x01 \x01(\v2\x1a.livekit.GlobalPhoneNumberR\vphoneNumber\x12\"\n" + "\fcapabilities\x18\x02 \x03(\tR\fcapabilities\x12,\n" + - "\x05costs\x18\x03 \x03(\v2\x16.livekit.TelephonyCostR\x05costs\"\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" + + "\x05costs\x18\x03 \x03(\v2\x16.livekit.TelephonyCostR\x05costs\"\xef\x02\n" + + "\x14PurchasedPhoneNumber\x129\n" + + "\x19purchased_phone_number_id\x18\x01 \x01(\tR\x16purchasedPhoneNumberId\x12=\n" + + "\fphone_number\x18\x02 \x01(\v2\x1a.livekit.GlobalPhoneNumberR\vphoneNumber\x122\n" + + "\x06status\x18\x03 \x01(\x0e2\x1a.livekit.PhoneNumberStatusR\x06status\x12;\n" + + "\vassigned_at\x18\x04 \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" + + "\vreleased_at\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampR\n" + + "releasedAt\x12/\n" + + "\x14sip_dispatch_rule_id\x18\x06 \x01(\tR\x11sipDispatchRuleId*\xf9\x01\n" + "\x11TelephonyCostType\x12#\n" + "\x1fTELEPHONY_COST_TYPE_UNSPECIFIED\x10\x00\x12%\n" + "!TELEPHONY_COST_TYPE_NUMBER_RENTAL\x10\x01\x12%\n" + @@ -904,12 +1201,14 @@ const file_livekit_phone_number_proto_rawDesc = "" + "\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" + + "\x1cPHONE_NUMBER_STATUS_RELEASED\x10\x032\xc8\x05\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" + "\x19ListPurchasedPhoneNumbers\x12).livekit.ListPurchasedPhoneNumbersRequest\x1a*.livekit.ListPurchasedPhoneNumbersResponse\"\x00\x12n\n" + + "\x17GetPurchasedPhoneNumber\x12'.livekit.GetPurchasedPhoneNumberRequest\x1a(.livekit.GetPurchasedPhoneNumberResponse\"\x00\x12w\n" + + "\x1aUpdatePurchasedPhoneNumber\x12*.livekit.UpdatePurchasedPhoneNumberRequest\x1a+.livekit.UpdatePurchasedPhoneNumberResponse\"\x00\x12|\n" + + "\x1bReleasePurchasedPhoneNumber\x12,.livekit.ReleasePurchasedPhoneNumbersRequest\x1a-.livekit.ReleasePurchasedPhoneNumbersResponse\"\x00B%Z#github.com/livekit/protocol/livekitb\x06proto3" var ( file_livekit_phone_number_proto_rawDescOnce sync.Once @@ -924,57 +1223,66 @@ func file_livekit_phone_number_proto_rawDescGZIP() []byte { } 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_msgTypes = make([]protoimpl.MessageInfo, 16) 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 + (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 + (*GetPurchasedPhoneNumberRequest)(nil), // 8: livekit.GetPurchasedPhoneNumberRequest + (*GetPurchasedPhoneNumberResponse)(nil), // 9: livekit.GetPurchasedPhoneNumberResponse + (*UpdatePurchasedPhoneNumberRequest)(nil), // 10: livekit.UpdatePurchasedPhoneNumberRequest + (*UpdatePurchasedPhoneNumberResponse)(nil), // 11: livekit.UpdatePurchasedPhoneNumberResponse + (*ReleasePurchasedPhoneNumbersRequest)(nil), // 12: livekit.ReleasePurchasedPhoneNumbersRequest + (*ReleasePurchasedPhoneNumbersResponse)(nil), // 13: livekit.ReleasePurchasedPhoneNumbersResponse + (*GlobalPhoneNumber)(nil), // 14: livekit.GlobalPhoneNumber + (*TelephonyCost)(nil), // 15: livekit.TelephonyCost + (*PhoneNumberInventoryItem)(nil), // 16: livekit.PhoneNumberInventoryItem + (*PurchasedPhoneNumber)(nil), // 17: livekit.PurchasedPhoneNumber + (*TokenPagination)(nil), // 18: livekit.TokenPagination + (*timestamppb.Timestamp)(nil), // 19: google.protobuf.Timestamp } 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 + 18, // 0: livekit.ListPhoneNumberInventoryRequest.page_token:type_name -> livekit.TokenPagination + 16, // 1: livekit.ListPhoneNumberInventoryResponse.items:type_name -> livekit.PhoneNumberInventoryItem + 18, // 2: livekit.ListPhoneNumberInventoryResponse.next_page_token:type_name -> livekit.TokenPagination + 17, // 3: livekit.PurchasePhoneNumberResponse.phone_numbers:type_name -> livekit.PurchasedPhoneNumber + 1, // 4: livekit.ListPurchasedPhoneNumbersRequest.status:type_name -> livekit.PhoneNumberStatus + 18, // 5: livekit.ListPurchasedPhoneNumbersRequest.page_token:type_name -> livekit.TokenPagination + 17, // 6: livekit.ListPurchasedPhoneNumbersResponse.items:type_name -> livekit.PurchasedPhoneNumber + 18, // 7: livekit.ListPurchasedPhoneNumbersResponse.next_page_token:type_name -> livekit.TokenPagination + 17, // 8: livekit.GetPurchasedPhoneNumberResponse.phone_number:type_name -> livekit.PurchasedPhoneNumber + 17, // 9: livekit.UpdatePurchasedPhoneNumberResponse.phone_number:type_name -> livekit.PurchasedPhoneNumber + 19, // 10: livekit.GlobalPhoneNumber.created_at:type_name -> google.protobuf.Timestamp + 19, // 11: livekit.GlobalPhoneNumber.updated_at:type_name -> google.protobuf.Timestamp + 0, // 12: livekit.TelephonyCost.resource:type_name -> livekit.TelephonyCostType + 14, // 13: livekit.PhoneNumberInventoryItem.phone_number:type_name -> livekit.GlobalPhoneNumber + 15, // 14: livekit.PhoneNumberInventoryItem.costs:type_name -> livekit.TelephonyCost + 14, // 15: livekit.PurchasedPhoneNumber.phone_number:type_name -> livekit.GlobalPhoneNumber + 1, // 16: livekit.PurchasedPhoneNumber.status:type_name -> livekit.PhoneNumberStatus + 19, // 17: livekit.PurchasedPhoneNumber.assigned_at:type_name -> google.protobuf.Timestamp + 19, // 18: livekit.PurchasedPhoneNumber.released_at:type_name -> google.protobuf.Timestamp + 2, // 19: livekit.PhoneNumberService.ListPhoneNumberInventory:input_type -> livekit.ListPhoneNumberInventoryRequest + 4, // 20: livekit.PhoneNumberService.PurchasePhoneNumber:input_type -> livekit.PurchasePhoneNumberRequest + 6, // 21: livekit.PhoneNumberService.ListPurchasedPhoneNumbers:input_type -> livekit.ListPurchasedPhoneNumbersRequest + 8, // 22: livekit.PhoneNumberService.GetPurchasedPhoneNumber:input_type -> livekit.GetPurchasedPhoneNumberRequest + 10, // 23: livekit.PhoneNumberService.UpdatePurchasedPhoneNumber:input_type -> livekit.UpdatePurchasedPhoneNumberRequest + 12, // 24: livekit.PhoneNumberService.ReleasePurchasedPhoneNumber:input_type -> livekit.ReleasePurchasedPhoneNumbersRequest + 3, // 25: livekit.PhoneNumberService.ListPhoneNumberInventory:output_type -> livekit.ListPhoneNumberInventoryResponse + 5, // 26: livekit.PhoneNumberService.PurchasePhoneNumber:output_type -> livekit.PurchasePhoneNumberResponse + 7, // 27: livekit.PhoneNumberService.ListPurchasedPhoneNumbers:output_type -> livekit.ListPurchasedPhoneNumbersResponse + 9, // 28: livekit.PhoneNumberService.GetPurchasedPhoneNumber:output_type -> livekit.GetPurchasedPhoneNumberResponse + 11, // 29: livekit.PhoneNumberService.UpdatePurchasedPhoneNumber:output_type -> livekit.UpdatePurchasedPhoneNumberResponse + 13, // 30: livekit.PhoneNumberService.ReleasePurchasedPhoneNumber:output_type -> livekit.ReleasePurchasedPhoneNumbersResponse + 25, // [25:31] is the sub-list for method output_type + 19, // [19:25] is the sub-list for method input_type + 19, // [19:19] is the sub-list for extension type_name + 19, // [19:19] is the sub-list for extension extendee + 0, // [0:19] is the sub-list for field type_name } func init() { file_livekit_phone_number_proto_init() } @@ -983,14 +1291,13 @@ func file_livekit_phone_number_proto_init() { 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, + NumMessages: 16, NumExtensions: 0, NumServices: 1, }, diff --git a/livekit/livekit_phone_number.twirp.go b/livekit/livekit_phone_number.twirp.go index 550f68e34..1d8b635ab 100644 --- a/livekit/livekit_phone_number.twirp.go +++ b/livekit/livekit_phone_number.twirp.go @@ -16,8 +16,6 @@ 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. @@ -39,8 +37,14 @@ type PhoneNumberService interface { // List purchased phone numbers for a project ListPurchasedPhoneNumbers(context.Context, *ListPurchasedPhoneNumbersRequest) (*ListPurchasedPhoneNumbersResponse, error) + // Get a purchased phone number + GetPurchasedPhoneNumber(context.Context, *GetPurchasedPhoneNumberRequest) (*GetPurchasedPhoneNumberResponse, error) + + // Update a purchased phone number + UpdatePurchasedPhoneNumber(context.Context, *UpdatePurchasedPhoneNumberRequest) (*UpdatePurchasedPhoneNumberResponse, error) + // Release a purchased phone number - ReleasePhoneNumber(context.Context, *ReleasePhoneNumberRequest) (*google_protobuf2.Empty, error) + ReleasePurchasedPhoneNumber(context.Context, *ReleasePurchasedPhoneNumbersRequest) (*ReleasePurchasedPhoneNumbersResponse, error) } // ================================== @@ -49,7 +53,7 @@ type PhoneNumberService interface { type phoneNumberServiceProtobufClient struct { client HTTPClient - urls [4]string + urls [6]string interceptor twirp.Interceptor opts twirp.ClientOptions } @@ -77,11 +81,13 @@ func NewPhoneNumberServiceProtobufClient(baseURL string, client HTTPClient, opts // Build method URLs: []/./ serviceURL := sanitizeBaseURL(baseURL) serviceURL += baseServicePath(pathPrefix, "livekit", "PhoneNumberService") - urls := [4]string{ + urls := [6]string{ serviceURL + "ListPhoneNumberInventory", serviceURL + "PurchasePhoneNumber", serviceURL + "ListPurchasedPhoneNumbers", - serviceURL + "ReleasePhoneNumber", + serviceURL + "GetPurchasedPhoneNumber", + serviceURL + "UpdatePurchasedPhoneNumber", + serviceURL + "ReleasePurchasedPhoneNumber", } return &phoneNumberServiceProtobufClient{ @@ -230,26 +236,26 @@ func (c *phoneNumberServiceProtobufClient) callListPurchasedPhoneNumbers(ctx con return out, nil } -func (c *phoneNumberServiceProtobufClient) ReleasePhoneNumber(ctx context.Context, in *ReleasePhoneNumberRequest) (*google_protobuf2.Empty, error) { +func (c *phoneNumberServiceProtobufClient) GetPurchasedPhoneNumber(ctx context.Context, in *GetPurchasedPhoneNumberRequest) (*GetPurchasedPhoneNumberResponse, error) { ctx = ctxsetters.WithPackageName(ctx, "livekit") ctx = ctxsetters.WithServiceName(ctx, "PhoneNumberService") - ctx = ctxsetters.WithMethodName(ctx, "ReleasePhoneNumber") - caller := c.callReleasePhoneNumber + ctx = ctxsetters.WithMethodName(ctx, "GetPurchasedPhoneNumber") + caller := c.callGetPurchasedPhoneNumber if c.interceptor != nil { - caller = func(ctx context.Context, req *ReleasePhoneNumberRequest) (*google_protobuf2.Empty, error) { + caller = func(ctx context.Context, req *GetPurchasedPhoneNumberRequest) (*GetPurchasedPhoneNumberResponse, error) { resp, err := c.interceptor( func(ctx context.Context, req interface{}) (interface{}, error) { - typedReq, ok := req.(*ReleasePhoneNumberRequest) + typedReq, ok := req.(*GetPurchasedPhoneNumberRequest) if !ok { - return nil, twirp.InternalError("failed type assertion req.(*ReleasePhoneNumberRequest) when calling interceptor") + return nil, twirp.InternalError("failed type assertion req.(*GetPurchasedPhoneNumberRequest) when calling interceptor") } - return c.callReleasePhoneNumber(ctx, typedReq) + return c.callGetPurchasedPhoneNumber(ctx, typedReq) }, )(ctx, req) if resp != nil { - typedResp, ok := resp.(*google_protobuf2.Empty) + typedResp, ok := resp.(*GetPurchasedPhoneNumberResponse) if !ok { - return nil, twirp.InternalError("failed type assertion resp.(*google_protobuf2.Empty) when calling interceptor") + return nil, twirp.InternalError("failed type assertion resp.(*GetPurchasedPhoneNumberResponse) when calling interceptor") } return typedResp, err } @@ -259,8 +265,8 @@ func (c *phoneNumberServiceProtobufClient) ReleasePhoneNumber(ctx context.Contex return caller(ctx, in) } -func (c *phoneNumberServiceProtobufClient) callReleasePhoneNumber(ctx context.Context, in *ReleasePhoneNumberRequest) (*google_protobuf2.Empty, error) { - out := new(google_protobuf2.Empty) +func (c *phoneNumberServiceProtobufClient) callGetPurchasedPhoneNumber(ctx context.Context, in *GetPurchasedPhoneNumberRequest) (*GetPurchasedPhoneNumberResponse, error) { + out := new(GetPurchasedPhoneNumberResponse) ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[3], in, out) if err != nil { twerr, ok := err.(twirp.Error) @@ -276,13 +282,105 @@ func (c *phoneNumberServiceProtobufClient) callReleasePhoneNumber(ctx context.Co return out, nil } +func (c *phoneNumberServiceProtobufClient) UpdatePurchasedPhoneNumber(ctx context.Context, in *UpdatePurchasedPhoneNumberRequest) (*UpdatePurchasedPhoneNumberResponse, error) { + ctx = ctxsetters.WithPackageName(ctx, "livekit") + ctx = ctxsetters.WithServiceName(ctx, "PhoneNumberService") + ctx = ctxsetters.WithMethodName(ctx, "UpdatePurchasedPhoneNumber") + caller := c.callUpdatePurchasedPhoneNumber + if c.interceptor != nil { + caller = func(ctx context.Context, req *UpdatePurchasedPhoneNumberRequest) (*UpdatePurchasedPhoneNumberResponse, error) { + resp, err := c.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*UpdatePurchasedPhoneNumberRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*UpdatePurchasedPhoneNumberRequest) when calling interceptor") + } + return c.callUpdatePurchasedPhoneNumber(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*UpdatePurchasedPhoneNumberResponse) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*UpdatePurchasedPhoneNumberResponse) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + return caller(ctx, in) +} + +func (c *phoneNumberServiceProtobufClient) callUpdatePurchasedPhoneNumber(ctx context.Context, in *UpdatePurchasedPhoneNumberRequest) (*UpdatePurchasedPhoneNumberResponse, error) { + out := new(UpdatePurchasedPhoneNumberResponse) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[4], 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) ReleasePurchasedPhoneNumber(ctx context.Context, in *ReleasePurchasedPhoneNumbersRequest) (*ReleasePurchasedPhoneNumbersResponse, error) { + ctx = ctxsetters.WithPackageName(ctx, "livekit") + ctx = ctxsetters.WithServiceName(ctx, "PhoneNumberService") + ctx = ctxsetters.WithMethodName(ctx, "ReleasePurchasedPhoneNumber") + caller := c.callReleasePurchasedPhoneNumber + if c.interceptor != nil { + caller = func(ctx context.Context, req *ReleasePurchasedPhoneNumbersRequest) (*ReleasePurchasedPhoneNumbersResponse, error) { + resp, err := c.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*ReleasePurchasedPhoneNumbersRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*ReleasePurchasedPhoneNumbersRequest) when calling interceptor") + } + return c.callReleasePurchasedPhoneNumber(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*ReleasePurchasedPhoneNumbersResponse) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*ReleasePurchasedPhoneNumbersResponse) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + return caller(ctx, in) +} + +func (c *phoneNumberServiceProtobufClient) callReleasePurchasedPhoneNumber(ctx context.Context, in *ReleasePurchasedPhoneNumbersRequest) (*ReleasePurchasedPhoneNumbersResponse, error) { + out := new(ReleasePurchasedPhoneNumbersResponse) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[5], 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 + urls [6]string interceptor twirp.Interceptor opts twirp.ClientOptions } @@ -310,11 +408,13 @@ func NewPhoneNumberServiceJSONClient(baseURL string, client HTTPClient, opts ... // Build method URLs: []/./ serviceURL := sanitizeBaseURL(baseURL) serviceURL += baseServicePath(pathPrefix, "livekit", "PhoneNumberService") - urls := [4]string{ + urls := [6]string{ serviceURL + "ListPhoneNumberInventory", serviceURL + "PurchasePhoneNumber", serviceURL + "ListPurchasedPhoneNumbers", - serviceURL + "ReleasePhoneNumber", + serviceURL + "GetPurchasedPhoneNumber", + serviceURL + "UpdatePurchasedPhoneNumber", + serviceURL + "ReleasePurchasedPhoneNumber", } return &phoneNumberServiceJSONClient{ @@ -463,26 +563,26 @@ func (c *phoneNumberServiceJSONClient) callListPurchasedPhoneNumbers(ctx context return out, nil } -func (c *phoneNumberServiceJSONClient) ReleasePhoneNumber(ctx context.Context, in *ReleasePhoneNumberRequest) (*google_protobuf2.Empty, error) { +func (c *phoneNumberServiceJSONClient) GetPurchasedPhoneNumber(ctx context.Context, in *GetPurchasedPhoneNumberRequest) (*GetPurchasedPhoneNumberResponse, error) { ctx = ctxsetters.WithPackageName(ctx, "livekit") ctx = ctxsetters.WithServiceName(ctx, "PhoneNumberService") - ctx = ctxsetters.WithMethodName(ctx, "ReleasePhoneNumber") - caller := c.callReleasePhoneNumber + ctx = ctxsetters.WithMethodName(ctx, "GetPurchasedPhoneNumber") + caller := c.callGetPurchasedPhoneNumber if c.interceptor != nil { - caller = func(ctx context.Context, req *ReleasePhoneNumberRequest) (*google_protobuf2.Empty, error) { + caller = func(ctx context.Context, req *GetPurchasedPhoneNumberRequest) (*GetPurchasedPhoneNumberResponse, error) { resp, err := c.interceptor( func(ctx context.Context, req interface{}) (interface{}, error) { - typedReq, ok := req.(*ReleasePhoneNumberRequest) + typedReq, ok := req.(*GetPurchasedPhoneNumberRequest) if !ok { - return nil, twirp.InternalError("failed type assertion req.(*ReleasePhoneNumberRequest) when calling interceptor") + return nil, twirp.InternalError("failed type assertion req.(*GetPurchasedPhoneNumberRequest) when calling interceptor") } - return c.callReleasePhoneNumber(ctx, typedReq) + return c.callGetPurchasedPhoneNumber(ctx, typedReq) }, )(ctx, req) if resp != nil { - typedResp, ok := resp.(*google_protobuf2.Empty) + typedResp, ok := resp.(*GetPurchasedPhoneNumberResponse) if !ok { - return nil, twirp.InternalError("failed type assertion resp.(*google_protobuf2.Empty) when calling interceptor") + return nil, twirp.InternalError("failed type assertion resp.(*GetPurchasedPhoneNumberResponse) when calling interceptor") } return typedResp, err } @@ -492,8 +592,8 @@ func (c *phoneNumberServiceJSONClient) ReleasePhoneNumber(ctx context.Context, i return caller(ctx, in) } -func (c *phoneNumberServiceJSONClient) callReleasePhoneNumber(ctx context.Context, in *ReleasePhoneNumberRequest) (*google_protobuf2.Empty, error) { - out := new(google_protobuf2.Empty) +func (c *phoneNumberServiceJSONClient) callGetPurchasedPhoneNumber(ctx context.Context, in *GetPurchasedPhoneNumberRequest) (*GetPurchasedPhoneNumberResponse, error) { + out := new(GetPurchasedPhoneNumberResponse) ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[3], in, out) if err != nil { twerr, ok := err.(twirp.Error) @@ -509,6 +609,98 @@ func (c *phoneNumberServiceJSONClient) callReleasePhoneNumber(ctx context.Contex return out, nil } +func (c *phoneNumberServiceJSONClient) UpdatePurchasedPhoneNumber(ctx context.Context, in *UpdatePurchasedPhoneNumberRequest) (*UpdatePurchasedPhoneNumberResponse, error) { + ctx = ctxsetters.WithPackageName(ctx, "livekit") + ctx = ctxsetters.WithServiceName(ctx, "PhoneNumberService") + ctx = ctxsetters.WithMethodName(ctx, "UpdatePurchasedPhoneNumber") + caller := c.callUpdatePurchasedPhoneNumber + if c.interceptor != nil { + caller = func(ctx context.Context, req *UpdatePurchasedPhoneNumberRequest) (*UpdatePurchasedPhoneNumberResponse, error) { + resp, err := c.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*UpdatePurchasedPhoneNumberRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*UpdatePurchasedPhoneNumberRequest) when calling interceptor") + } + return c.callUpdatePurchasedPhoneNumber(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*UpdatePurchasedPhoneNumberResponse) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*UpdatePurchasedPhoneNumberResponse) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + return caller(ctx, in) +} + +func (c *phoneNumberServiceJSONClient) callUpdatePurchasedPhoneNumber(ctx context.Context, in *UpdatePurchasedPhoneNumberRequest) (*UpdatePurchasedPhoneNumberResponse, error) { + out := new(UpdatePurchasedPhoneNumberResponse) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[4], 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) ReleasePurchasedPhoneNumber(ctx context.Context, in *ReleasePurchasedPhoneNumbersRequest) (*ReleasePurchasedPhoneNumbersResponse, error) { + ctx = ctxsetters.WithPackageName(ctx, "livekit") + ctx = ctxsetters.WithServiceName(ctx, "PhoneNumberService") + ctx = ctxsetters.WithMethodName(ctx, "ReleasePurchasedPhoneNumber") + caller := c.callReleasePurchasedPhoneNumber + if c.interceptor != nil { + caller = func(ctx context.Context, req *ReleasePurchasedPhoneNumbersRequest) (*ReleasePurchasedPhoneNumbersResponse, error) { + resp, err := c.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*ReleasePurchasedPhoneNumbersRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*ReleasePurchasedPhoneNumbersRequest) when calling interceptor") + } + return c.callReleasePurchasedPhoneNumber(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*ReleasePurchasedPhoneNumbersResponse) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*ReleasePurchasedPhoneNumbersResponse) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + return caller(ctx, in) +} + +func (c *phoneNumberServiceJSONClient) callReleasePurchasedPhoneNumber(ctx context.Context, in *ReleasePurchasedPhoneNumbersRequest) (*ReleasePurchasedPhoneNumbersResponse, error) { + out := new(ReleasePurchasedPhoneNumbersResponse) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[5], 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 // ================================= @@ -615,8 +807,14 @@ func (s *phoneNumberServiceServer) ServeHTTP(resp http.ResponseWriter, req *http case "ListPurchasedPhoneNumbers": s.serveListPurchasedPhoneNumbers(ctx, resp, req) return - case "ReleasePhoneNumber": - s.serveReleasePhoneNumber(ctx, resp, req) + case "GetPurchasedPhoneNumber": + s.serveGetPurchasedPhoneNumber(ctx, resp, req) + return + case "UpdatePurchasedPhoneNumber": + s.serveUpdatePurchasedPhoneNumber(ctx, resp, req) + return + case "ReleasePurchasedPhoneNumber": + s.serveReleasePurchasedPhoneNumber(ctx, resp, req) return default: msg := fmt.Sprintf("no handler for path %q", req.URL.Path) @@ -1165,7 +1363,367 @@ func (s *phoneNumberServiceServer) serveListPurchasedPhoneNumbersProtobuf(ctx co callResponseSent(ctx, s.hooks) } -func (s *phoneNumberServiceServer) serveReleasePhoneNumber(ctx context.Context, resp http.ResponseWriter, req *http.Request) { +func (s *phoneNumberServiceServer) serveGetPurchasedPhoneNumber(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.serveGetPurchasedPhoneNumberJSON(ctx, resp, req) + case "application/protobuf": + s.serveGetPurchasedPhoneNumberProtobuf(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) serveGetPurchasedPhoneNumberJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) { + var err error + ctx = ctxsetters.WithMethodName(ctx, "GetPurchasedPhoneNumber") + 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(GetPurchasedPhoneNumberRequest) + 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.GetPurchasedPhoneNumber + if s.interceptor != nil { + handler = func(ctx context.Context, req *GetPurchasedPhoneNumberRequest) (*GetPurchasedPhoneNumberResponse, error) { + resp, err := s.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*GetPurchasedPhoneNumberRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*GetPurchasedPhoneNumberRequest) when calling interceptor") + } + return s.PhoneNumberService.GetPurchasedPhoneNumber(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*GetPurchasedPhoneNumberResponse) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*GetPurchasedPhoneNumberResponse) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + + // Call service method + var respContent *GetPurchasedPhoneNumberResponse + 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 *GetPurchasedPhoneNumberResponse and nil error while calling GetPurchasedPhoneNumber. 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) serveGetPurchasedPhoneNumberProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) { + var err error + ctx = ctxsetters.WithMethodName(ctx, "GetPurchasedPhoneNumber") + 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(GetPurchasedPhoneNumberRequest) + if err = proto.Unmarshal(buf, reqContent); err != nil { + s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded")) + return + } + + handler := s.PhoneNumberService.GetPurchasedPhoneNumber + if s.interceptor != nil { + handler = func(ctx context.Context, req *GetPurchasedPhoneNumberRequest) (*GetPurchasedPhoneNumberResponse, error) { + resp, err := s.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*GetPurchasedPhoneNumberRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*GetPurchasedPhoneNumberRequest) when calling interceptor") + } + return s.PhoneNumberService.GetPurchasedPhoneNumber(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*GetPurchasedPhoneNumberResponse) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*GetPurchasedPhoneNumberResponse) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + + // Call service method + var respContent *GetPurchasedPhoneNumberResponse + 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 *GetPurchasedPhoneNumberResponse and nil error while calling GetPurchasedPhoneNumber. 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) serveUpdatePurchasedPhoneNumber(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.serveUpdatePurchasedPhoneNumberJSON(ctx, resp, req) + case "application/protobuf": + s.serveUpdatePurchasedPhoneNumberProtobuf(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) serveUpdatePurchasedPhoneNumberJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) { + var err error + ctx = ctxsetters.WithMethodName(ctx, "UpdatePurchasedPhoneNumber") + 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(UpdatePurchasedPhoneNumberRequest) + 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.UpdatePurchasedPhoneNumber + if s.interceptor != nil { + handler = func(ctx context.Context, req *UpdatePurchasedPhoneNumberRequest) (*UpdatePurchasedPhoneNumberResponse, error) { + resp, err := s.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*UpdatePurchasedPhoneNumberRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*UpdatePurchasedPhoneNumberRequest) when calling interceptor") + } + return s.PhoneNumberService.UpdatePurchasedPhoneNumber(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*UpdatePurchasedPhoneNumberResponse) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*UpdatePurchasedPhoneNumberResponse) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + + // Call service method + var respContent *UpdatePurchasedPhoneNumberResponse + 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 *UpdatePurchasedPhoneNumberResponse and nil error while calling UpdatePurchasedPhoneNumber. 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) serveUpdatePurchasedPhoneNumberProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) { + var err error + ctx = ctxsetters.WithMethodName(ctx, "UpdatePurchasedPhoneNumber") + 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(UpdatePurchasedPhoneNumberRequest) + if err = proto.Unmarshal(buf, reqContent); err != nil { + s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded")) + return + } + + handler := s.PhoneNumberService.UpdatePurchasedPhoneNumber + if s.interceptor != nil { + handler = func(ctx context.Context, req *UpdatePurchasedPhoneNumberRequest) (*UpdatePurchasedPhoneNumberResponse, error) { + resp, err := s.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*UpdatePurchasedPhoneNumberRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*UpdatePurchasedPhoneNumberRequest) when calling interceptor") + } + return s.PhoneNumberService.UpdatePurchasedPhoneNumber(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*UpdatePurchasedPhoneNumberResponse) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*UpdatePurchasedPhoneNumberResponse) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + + // Call service method + var respContent *UpdatePurchasedPhoneNumberResponse + 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 *UpdatePurchasedPhoneNumberResponse and nil error while calling UpdatePurchasedPhoneNumber. 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) serveReleasePurchasedPhoneNumber(ctx context.Context, resp http.ResponseWriter, req *http.Request) { header := req.Header.Get("Content-Type") i := strings.Index(header, ";") if i == -1 { @@ -1173,9 +1731,9 @@ func (s *phoneNumberServiceServer) serveReleasePhoneNumber(ctx context.Context, } switch strings.TrimSpace(strings.ToLower(header[:i])) { case "application/json": - s.serveReleasePhoneNumberJSON(ctx, resp, req) + s.serveReleasePurchasedPhoneNumberJSON(ctx, resp, req) case "application/protobuf": - s.serveReleasePhoneNumberProtobuf(ctx, resp, req) + s.serveReleasePurchasedPhoneNumberProtobuf(ctx, resp, req) default: msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type")) twerr := badRouteError(msg, req.Method, req.URL.Path) @@ -1183,9 +1741,9 @@ func (s *phoneNumberServiceServer) serveReleasePhoneNumber(ctx context.Context, } } -func (s *phoneNumberServiceServer) serveReleasePhoneNumberJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) { +func (s *phoneNumberServiceServer) serveReleasePurchasedPhoneNumberJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) { var err error - ctx = ctxsetters.WithMethodName(ctx, "ReleasePhoneNumber") + ctx = ctxsetters.WithMethodName(ctx, "ReleasePurchasedPhoneNumber") ctx, err = callRequestRouted(ctx, s.hooks) if err != nil { s.writeError(ctx, resp, err) @@ -1198,29 +1756,29 @@ func (s *phoneNumberServiceServer) serveReleasePhoneNumberJSON(ctx context.Conte s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err) return } - reqContent := new(ReleasePhoneNumberRequest) + reqContent := new(ReleasePurchasedPhoneNumbersRequest) 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 + handler := s.PhoneNumberService.ReleasePurchasedPhoneNumber if s.interceptor != nil { - handler = func(ctx context.Context, req *ReleasePhoneNumberRequest) (*google_protobuf2.Empty, error) { + handler = func(ctx context.Context, req *ReleasePurchasedPhoneNumbersRequest) (*ReleasePurchasedPhoneNumbersResponse, error) { resp, err := s.interceptor( func(ctx context.Context, req interface{}) (interface{}, error) { - typedReq, ok := req.(*ReleasePhoneNumberRequest) + typedReq, ok := req.(*ReleasePurchasedPhoneNumbersRequest) if !ok { - return nil, twirp.InternalError("failed type assertion req.(*ReleasePhoneNumberRequest) when calling interceptor") + return nil, twirp.InternalError("failed type assertion req.(*ReleasePurchasedPhoneNumbersRequest) when calling interceptor") } - return s.PhoneNumberService.ReleasePhoneNumber(ctx, typedReq) + return s.PhoneNumberService.ReleasePurchasedPhoneNumber(ctx, typedReq) }, )(ctx, req) if resp != nil { - typedResp, ok := resp.(*google_protobuf2.Empty) + typedResp, ok := resp.(*ReleasePurchasedPhoneNumbersResponse) if !ok { - return nil, twirp.InternalError("failed type assertion resp.(*google_protobuf2.Empty) when calling interceptor") + return nil, twirp.InternalError("failed type assertion resp.(*ReleasePurchasedPhoneNumbersResponse) when calling interceptor") } return typedResp, err } @@ -1229,7 +1787,7 @@ func (s *phoneNumberServiceServer) serveReleasePhoneNumberJSON(ctx context.Conte } // Call service method - var respContent *google_protobuf2.Empty + var respContent *ReleasePurchasedPhoneNumbersResponse func() { defer ensurePanicResponses(ctx, resp, s.hooks) respContent, err = handler(ctx, reqContent) @@ -1240,7 +1798,7 @@ func (s *phoneNumberServiceServer) serveReleasePhoneNumberJSON(ctx context.Conte 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")) + s.writeError(ctx, resp, twirp.InternalError("received a nil *ReleasePurchasedPhoneNumbersResponse and nil error while calling ReleasePurchasedPhoneNumber. nil responses are not supported")) return } @@ -1266,9 +1824,9 @@ func (s *phoneNumberServiceServer) serveReleasePhoneNumberJSON(ctx context.Conte callResponseSent(ctx, s.hooks) } -func (s *phoneNumberServiceServer) serveReleasePhoneNumberProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) { +func (s *phoneNumberServiceServer) serveReleasePurchasedPhoneNumberProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) { var err error - ctx = ctxsetters.WithMethodName(ctx, "ReleasePhoneNumber") + ctx = ctxsetters.WithMethodName(ctx, "ReleasePurchasedPhoneNumber") ctx, err = callRequestRouted(ctx, s.hooks) if err != nil { s.writeError(ctx, resp, err) @@ -1280,28 +1838,28 @@ func (s *phoneNumberServiceServer) serveReleasePhoneNumberProtobuf(ctx context.C s.handleRequestBodyError(ctx, resp, "failed to read request body", err) return } - reqContent := new(ReleasePhoneNumberRequest) + reqContent := new(ReleasePurchasedPhoneNumbersRequest) 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 + handler := s.PhoneNumberService.ReleasePurchasedPhoneNumber if s.interceptor != nil { - handler = func(ctx context.Context, req *ReleasePhoneNumberRequest) (*google_protobuf2.Empty, error) { + handler = func(ctx context.Context, req *ReleasePurchasedPhoneNumbersRequest) (*ReleasePurchasedPhoneNumbersResponse, error) { resp, err := s.interceptor( func(ctx context.Context, req interface{}) (interface{}, error) { - typedReq, ok := req.(*ReleasePhoneNumberRequest) + typedReq, ok := req.(*ReleasePurchasedPhoneNumbersRequest) if !ok { - return nil, twirp.InternalError("failed type assertion req.(*ReleasePhoneNumberRequest) when calling interceptor") + return nil, twirp.InternalError("failed type assertion req.(*ReleasePurchasedPhoneNumbersRequest) when calling interceptor") } - return s.PhoneNumberService.ReleasePhoneNumber(ctx, typedReq) + return s.PhoneNumberService.ReleasePurchasedPhoneNumber(ctx, typedReq) }, )(ctx, req) if resp != nil { - typedResp, ok := resp.(*google_protobuf2.Empty) + typedResp, ok := resp.(*ReleasePurchasedPhoneNumbersResponse) if !ok { - return nil, twirp.InternalError("failed type assertion resp.(*google_protobuf2.Empty) when calling interceptor") + return nil, twirp.InternalError("failed type assertion resp.(*ReleasePurchasedPhoneNumbersResponse) when calling interceptor") } return typedResp, err } @@ -1310,7 +1868,7 @@ func (s *phoneNumberServiceServer) serveReleasePhoneNumberProtobuf(ctx context.C } // Call service method - var respContent *google_protobuf2.Empty + var respContent *ReleasePurchasedPhoneNumbersResponse func() { defer ensurePanicResponses(ctx, resp, s.hooks) respContent, err = handler(ctx, reqContent) @@ -1321,7 +1879,7 @@ func (s *phoneNumberServiceServer) serveReleasePhoneNumberProtobuf(ctx context.C 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")) + s.writeError(ctx, resp, twirp.InternalError("received a nil *ReleasePurchasedPhoneNumbersResponse and nil error while calling ReleasePurchasedPhoneNumber. nil responses are not supported")) return } @@ -1361,74 +1919,83 @@ func (s *phoneNumberServiceServer) PathPrefix() string { } 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, + // 1236 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x57, 0xdd, 0x8e, 0xdb, 0x44, + 0x14, 0xae, 0x93, 0xcd, 0x76, 0x73, 0xd2, 0x96, 0xec, 0xb0, 0x6a, 0x5d, 0x2f, 0x6d, 0xb2, 0xde, + 0xb6, 0x84, 0x52, 0xb2, 0x22, 0x45, 0xad, 0xaa, 0xaa, 0x52, 0xb3, 0x59, 0xb7, 0x44, 0xda, 0x66, + 0x23, 0xc7, 0xa9, 0x54, 0x6e, 0x2c, 0xc7, 0x99, 0xcd, 0x8e, 0xea, 0x78, 0x5c, 0xcf, 0x78, 0x21, + 0x12, 0xe2, 0x96, 0x87, 0x00, 0x9e, 0x80, 0x1b, 0xc4, 0x2d, 0x2f, 0xc0, 0x13, 0xf0, 0x18, 0x70, + 0xcd, 0x1d, 0xf2, 0x6f, 0x92, 0x8d, 0x9d, 0x04, 0x51, 0x89, 0x4b, 0x9f, 0xf9, 0xce, 0x9c, 0x33, + 0xdf, 0xf9, 0x35, 0x48, 0x16, 0x39, 0xc7, 0x6f, 0x09, 0xd7, 0x9d, 0x33, 0x6a, 0x63, 0xdd, 0xf6, + 0xc6, 0x03, 0xec, 0xd6, 0x1d, 0x97, 0x72, 0x8a, 0x2e, 0x47, 0x67, 0x52, 0x65, 0x44, 0xe9, 0xc8, + 0xc2, 0x07, 0x81, 0x78, 0xe0, 0x9d, 0x1e, 0x70, 0x32, 0xc6, 0x8c, 0x1b, 0x63, 0x27, 0x44, 0x4a, + 0x3b, 0xf1, 0x2d, 0x63, 0x3a, 0xc4, 0x16, 0x0b, 0xa5, 0xf2, 0x2f, 0x02, 0x54, 0x8e, 0x09, 0xe3, + 0x5d, 0xff, 0xea, 0x4e, 0x70, 0x73, 0xdb, 0x3e, 0xc7, 0x36, 0xa7, 0xee, 0x44, 0xc5, 0xef, 0x3c, + 0xcc, 0x38, 0xda, 0x83, 0x2b, 0x26, 0xf5, 0x6c, 0xee, 0x4e, 0x74, 0x93, 0x0e, 0xb1, 0x28, 0x54, + 0x85, 0x5a, 0x51, 0x2d, 0x45, 0xb2, 0x16, 0x1d, 0x62, 0xb4, 0x0b, 0x45, 0xc3, 0xc5, 0x46, 0x78, + 0x9e, 0x0b, 0xce, 0xb7, 0x7c, 0x41, 0x70, 0xb8, 0x03, 0x05, 0x8b, 0x8c, 0x09, 0x17, 0xf3, 0x55, + 0xa1, 0x56, 0x50, 0xc3, 0x0f, 0xf4, 0x18, 0xc0, 0x31, 0x46, 0x58, 0xe7, 0xf4, 0x2d, 0xb6, 0xc5, + 0x8d, 0xaa, 0x50, 0x2b, 0x35, 0xc4, 0x7a, 0xe4, 0x64, 0x5d, 0xf3, 0xa5, 0x5d, 0x63, 0x44, 0x6c, + 0x83, 0x13, 0x6a, 0xab, 0x45, 0x1f, 0x1b, 0x08, 0xe5, 0x9f, 0x04, 0xa8, 0x66, 0xbb, 0xcc, 0x1c, + 0x6a, 0x33, 0x8c, 0x1e, 0x43, 0x81, 0x70, 0x3c, 0x66, 0xa2, 0x50, 0xcd, 0xd7, 0x4a, 0x8d, 0xbd, + 0xe4, 0xe2, 0x34, 0xad, 0x36, 0xc7, 0x63, 0x35, 0xc4, 0xa3, 0xe7, 0xf0, 0x81, 0x8d, 0xbf, 0xe1, + 0xfa, 0x8c, 0x6f, 0xb9, 0x15, 0xbe, 0x5d, 0xf5, 0x15, 0xba, 0x89, 0x7f, 0x2e, 0x48, 0x5d, 0xcf, + 0x35, 0xcf, 0x0c, 0x86, 0x67, 0x8c, 0xc5, 0x64, 0xee, 0xc3, 0xd5, 0xd9, 0x30, 0x86, 0x0e, 0x16, + 0xd5, 0x2b, 0xce, 0x14, 0xca, 0xd0, 0x01, 0xec, 0x30, 0xe2, 0xe8, 0x43, 0xc2, 0x1c, 0x83, 0x9b, + 0x67, 0xba, 0xeb, 0x59, 0x58, 0x27, 0xc3, 0x88, 0xd9, 0x6d, 0x46, 0x9c, 0xa3, 0xe8, 0x48, 0xf5, + 0x2c, 0xdc, 0x1e, 0xca, 0x06, 0xec, 0xa6, 0xda, 0x8c, 0xd8, 0x38, 0x4c, 0x33, 0x5a, 0x6a, 0xdc, + 0x9a, 0xb2, 0x12, 0x29, 0x0f, 0x67, 0xb5, 0xe7, 0x7c, 0x92, 0xff, 0x88, 0x69, 0x4f, 0x81, 0xb2, + 0xf8, 0x75, 0x49, 0xa8, 0x85, 0xd9, 0x50, 0x37, 0x60, 0x93, 0x71, 0x83, 0x7b, 0x2c, 0x78, 0xc0, + 0xb5, 0x86, 0x94, 0x16, 0x8d, 0x5e, 0x80, 0x50, 0x23, 0xe4, 0x85, 0xf4, 0xc8, 0xaf, 0x9d, 0x1e, + 0x99, 0xdc, 0x6d, 0x64, 0x71, 0xf7, 0x9b, 0x00, 0x7b, 0x4b, 0x1e, 0x16, 0x51, 0xf8, 0x70, 0x3e, + 0xa1, 0x56, 0x50, 0xf7, 0xbe, 0x92, 0x09, 0x55, 0xa0, 0xc4, 0x29, 0x37, 0x2c, 0x3d, 0xa8, 0xb6, + 0xa8, 0x82, 0x20, 0x10, 0xb5, 0x7c, 0x89, 0xfc, 0x1d, 0xdc, 0x7e, 0x89, 0x53, 0x7d, 0x8f, 0x63, + 0xf2, 0x04, 0x6e, 0x3a, 0xf1, 0xf1, 0x5c, 0x0b, 0xf1, 0x59, 0x09, 0x6b, 0xf9, 0xba, 0x93, 0xa2, + 0xdf, 0x1e, 0xfa, 0x95, 0x3f, 0xab, 0x10, 0xe5, 0x5f, 0x69, 0x26, 0x2f, 0x64, 0x13, 0x2a, 0x99, + 0xf6, 0x23, 0xea, 0x9e, 0x5f, 0xb8, 0x45, 0x08, 0x28, 0x58, 0xc1, 0xe0, 0x9c, 0x91, 0x5f, 0x05, + 0xd8, 0xeb, 0x3b, 0x43, 0x83, 0xe3, 0xff, 0xed, 0xa1, 0x99, 0x79, 0x95, 0xcf, 0xca, 0xab, 0x53, + 0x90, 0x97, 0xf9, 0xfc, 0xde, 0xc8, 0xf9, 0x5e, 0x80, 0x7d, 0x15, 0x5b, 0xd8, 0xaf, 0xfd, 0x65, + 0xb5, 0xf9, 0x14, 0xa4, 0x4c, 0x7a, 0xe2, 0x36, 0x74, 0x23, 0x9d, 0x1f, 0xb6, 0xd8, 0xb6, 0x72, + 0x8b, 0x6d, 0x4b, 0xbe, 0x07, 0x77, 0x96, 0x3b, 0x12, 0xbe, 0x59, 0xfe, 0x33, 0x07, 0xdb, 0x2f, + 0x2d, 0x3a, 0x30, 0xac, 0x99, 0x63, 0x74, 0x0d, 0x72, 0x49, 0x9c, 0x72, 0x64, 0xe8, 0xa7, 0x3e, + 0xfe, 0xfc, 0xd1, 0x17, 0xfa, 0x29, 0x75, 0xc7, 0x06, 0x8f, 0x42, 0x02, 0xbe, 0xe8, 0x45, 0x20, + 0x59, 0x98, 0x4b, 0xf9, 0x15, 0x73, 0x69, 0xe3, 0xc2, 0x5c, 0xaa, 0x40, 0x29, 0x22, 0x80, 0x4f, + 0x1c, 0x2c, 0x16, 0x42, 0x03, 0xa1, 0x48, 0x9b, 0x38, 0x18, 0x49, 0xb0, 0x65, 0x51, 0xd3, 0xb0, + 0x08, 0x9f, 0x88, 0x9b, 0xa1, 0x72, 0xfc, 0x8d, 0xae, 0xc3, 0xa6, 0x8b, 0x47, 0x84, 0xda, 0xe2, + 0xe5, 0xe0, 0x24, 0xfa, 0x42, 0xb7, 0x00, 0x98, 0x63, 0x8c, 0x75, 0x66, 0x52, 0x17, 0x8b, 0x5b, + 0x55, 0xa1, 0x26, 0xa8, 0x45, 0x5f, 0xd2, 0xf3, 0x05, 0xe8, 0x09, 0x80, 0xe9, 0x62, 0x83, 0xe3, + 0xa1, 0x6e, 0x70, 0xb1, 0x18, 0x04, 0x5b, 0xaa, 0x87, 0xb3, 0xbb, 0x1e, 0xcf, 0xee, 0xba, 0x16, + 0xcf, 0x6e, 0xb5, 0x18, 0xa1, 0x9b, 0x7e, 0x7a, 0x83, 0x17, 0xe4, 0x53, 0xa0, 0x0a, 0xab, 0x55, + 0x23, 0x74, 0x93, 0xcb, 0x3f, 0x0a, 0x70, 0x55, 0xc3, 0x16, 0xf6, 0xa3, 0x35, 0x69, 0x51, 0xc6, + 0xd1, 0x23, 0xd8, 0x72, 0x31, 0xa3, 0x9e, 0x6b, 0x86, 0xf3, 0x7c, 0xb6, 0x29, 0xcf, 0x21, 0x7d, + 0x22, 0xd4, 0x04, 0xeb, 0x53, 0x62, 0x7a, 0xae, 0x8b, 0x6d, 0x73, 0x12, 0xcf, 0xf9, 0xf8, 0xdb, + 0x6f, 0xfe, 0x8e, 0x4b, 0xcc, 0x30, 0x10, 0x82, 0x1a, 0x7e, 0xf8, 0x51, 0x1a, 0x10, 0xcb, 0x22, + 0xf6, 0x48, 0xf7, 0x6c, 0xc2, 0xa3, 0x28, 0x94, 0x22, 0x59, 0xdf, 0x26, 0x5c, 0xfe, 0x59, 0x00, + 0x31, 0x6b, 0x2e, 0xa3, 0x67, 0xa9, 0x05, 0x32, 0xf5, 0x76, 0x21, 0x91, 0xe6, 0xcb, 0x56, 0x86, + 0x2b, 0xa6, 0xe1, 0x18, 0x03, 0x62, 0x11, 0x4e, 0x70, 0x92, 0xb7, 0xb3, 0x32, 0xf4, 0x00, 0x0a, + 0x26, 0x65, 0x9c, 0x89, 0xf9, 0xa0, 0xb7, 0x5f, 0x4f, 0x67, 0x42, 0x0d, 0x41, 0xf2, 0x5f, 0x39, + 0xd8, 0x49, 0xcb, 0xef, 0xff, 0xd2, 0x7f, 0x9e, 0xa5, 0xf4, 0x9f, 0x7f, 0xf1, 0xc8, 0xe9, 0x80, + 0xcd, 0xaf, 0x3d, 0x60, 0x9f, 0x42, 0xc9, 0x60, 0x8c, 0x8c, 0xec, 0x30, 0x9f, 0x36, 0x56, 0xe6, + 0x13, 0xc4, 0xf0, 0xa6, 0xdf, 0x4b, 0x4a, 0x6e, 0x58, 0xe9, 0x81, 0x72, 0x61, 0xb5, 0x72, 0x0c, + 0x6f, 0xf2, 0xcc, 0x4e, 0xba, 0x99, 0xd1, 0x49, 0xef, 0xff, 0x2d, 0xc0, 0xf6, 0x42, 0x52, 0xa2, + 0x7d, 0xa8, 0x68, 0xca, 0xb1, 0xd2, 0xfd, 0xf2, 0xa4, 0xf3, 0x46, 0x6f, 0x9d, 0xf4, 0x34, 0x5d, + 0x7b, 0xd3, 0x55, 0xf4, 0x7e, 0xa7, 0xd7, 0x55, 0x5a, 0xed, 0x17, 0x6d, 0xe5, 0xa8, 0x7c, 0x09, + 0xdd, 0x85, 0xbd, 0x34, 0x50, 0xa7, 0xff, 0xea, 0x50, 0x51, 0x75, 0x55, 0xe9, 0x68, 0xcd, 0xe3, + 0xb2, 0x90, 0x05, 0x7b, 0x7d, 0xd2, 0x6e, 0x29, 0x7a, 0xbb, 0x73, 0x78, 0xd2, 0xef, 0x1c, 0x95, + 0x73, 0xe8, 0x1e, 0xc8, 0xd9, 0xb0, 0x93, 0xbe, 0x16, 0xe2, 0xf2, 0x59, 0xae, 0xf5, 0x5e, 0xf5, + 0x92, 0xcb, 0x36, 0xd0, 0x1d, 0xa8, 0x66, 0x81, 0x92, 0xab, 0x0a, 0xf7, 0x7f, 0x10, 0x60, 0x7b, + 0x21, 0x88, 0xbe, 0x01, 0x5f, 0x2f, 0x79, 0x48, 0x4f, 0x6b, 0x6a, 0xfd, 0xde, 0x85, 0xb7, 0xdf, + 0x06, 0x29, 0x0d, 0xd4, 0x6c, 0x69, 0xed, 0xd7, 0x4a, 0x59, 0x40, 0x15, 0xd8, 0x4d, 0x3b, 0xef, + 0x2a, 0x9d, 0xa3, 0x76, 0xe7, 0x65, 0x39, 0x87, 0xaa, 0xf0, 0x51, 0x1a, 0x40, 0x55, 0x8e, 0x95, + 0x66, 0x4f, 0x39, 0x2a, 0xe7, 0x1b, 0xbf, 0x17, 0x00, 0xcd, 0x7a, 0x87, 0xdd, 0x73, 0xbf, 0xe6, + 0xdf, 0x81, 0x98, 0xb5, 0xa1, 0xa3, 0x5a, 0x92, 0x9b, 0x2b, 0xfe, 0x3b, 0xa4, 0x4f, 0xd6, 0x40, + 0x46, 0x13, 0xe5, 0x12, 0x1a, 0xc0, 0x87, 0x29, 0x1b, 0x30, 0xda, 0x5f, 0x18, 0xa4, 0x8b, 0x8b, + 0x83, 0x74, 0x67, 0x39, 0x28, 0xb1, 0xc1, 0xe1, 0x66, 0xe6, 0xa2, 0x88, 0x2e, 0x78, 0xbb, 0x64, + 0x12, 0x4b, 0xf7, 0xd7, 0x81, 0x26, 0x56, 0x6d, 0xb8, 0x91, 0xb1, 0x61, 0xa1, 0x8f, 0xa7, 0x0d, + 0x62, 0xe9, 0x0e, 0x28, 0xd5, 0x56, 0x03, 0x13, 0x7b, 0x5f, 0x83, 0x94, 0xbd, 0xb7, 0xa0, 0xa9, + 0xef, 0x2b, 0x17, 0x32, 0xe9, 0xd3, 0xb5, 0xb0, 0x89, 0xe1, 0x6f, 0x61, 0x77, 0xc9, 0xfa, 0x80, + 0x1e, 0x24, 0xb7, 0xad, 0xb1, 0xed, 0x48, 0x9f, 0xad, 0x89, 0x8e, 0xad, 0x1f, 0xde, 0xfd, 0x6a, + 0x7f, 0x44, 0xf8, 0x99, 0x37, 0xa8, 0x9b, 0x74, 0x7c, 0x10, 0x29, 0x87, 0xbf, 0xd3, 0x26, 0xb5, + 0x62, 0xc1, 0x60, 0x33, 0x90, 0x3c, 0xfc, 0x27, 0x00, 0x00, 0xff, 0xff, 0x82, 0x3a, 0x98, 0x8a, + 0x95, 0x0f, 0x00, 0x00, } diff --git a/livekit/livekit_phone_number_grpc.pb.go b/livekit/livekit_phone_number_grpc.pb.go deleted file mode 100644 index 0864e1609..000000000 --- a/livekit/livekit_phone_number_grpc.pb.go +++ /dev/null @@ -1,248 +0,0 @@ -// 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/protobufs/livekit_phone_number.proto b/protobufs/livekit_phone_number.proto index f92049aeb..935fcff80 100644 --- a/protobufs/livekit_phone_number.proto +++ b/protobufs/livekit_phone_number.proto @@ -4,10 +4,8 @@ package livekit; option go_package = "github.com/livekit/protocol/livekit"; -import "google/protobuf/empty.proto"; import "google/protobuf/timestamp.proto"; import "livekit_models.proto"; -import "livekit_sip.proto"; // Telephony cost type enumeration enum TelephonyCostType { @@ -32,18 +30,26 @@ 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) {} - + + // Get a purchased phone number + rpc GetPurchasedPhoneNumber(GetPurchasedPhoneNumberRequest) + returns (GetPurchasedPhoneNumberResponse) {} + + // Update a purchased phone number + rpc UpdatePurchasedPhoneNumber(UpdatePurchasedPhoneNumberRequest) + returns (UpdatePurchasedPhoneNumberResponse) {} + // Release a purchased phone number - rpc ReleasePhoneNumber(ReleasePhoneNumberRequest) - returns (google.protobuf.Empty) {} + rpc ReleasePurchasedPhoneNumber(ReleasePurchasedPhoneNumbersRequest) + returns (ReleasePurchasedPhoneNumbersResponse) {} } // ListPhoneNumberInventoryRequest - Request to list available phone numbers @@ -63,6 +69,7 @@ message ListPhoneNumberInventoryResponse { // PurchasePhoneNumberRequest - Request to purchase phone numbers message PurchasePhoneNumberRequest { repeated string phone_numbers = 1; // Phone numbers to purchase (e.g., ["+1234567890", "+1234567891"]) + string sip_dispatch_rule_id = 2; // Optional: SIP dispatch rule ID to apply to all purchased numbers } // PurchasePhoneNumberResponse - Response containing the purchased phone numbers @@ -73,7 +80,9 @@ message PurchasePhoneNumberResponse { // 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) + PhoneNumberStatus status = 2; // Optional: Filter by status (active, pending, released) + TokenPagination page_token = 3; // Optional: Token for pagination (empty for first page) + string sip_dispatch_rule_id = 4; // Optional: Filter by SIP dispatch rule ID } // ListPurchasedPhoneNumbersResponse - Response containing purchased phone numbers @@ -83,9 +92,38 @@ message ListPurchasedPhoneNumbersResponse { 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"]) +// GetPurchasedPhoneNumberRequest - Request to get a purchased phone number +message GetPurchasedPhoneNumberRequest { + string purchased_phone_number_id = 1; // Optional: Use purchased phone number ID for direct lookup + string phone_number = 2; // Optional: Use phone number string for lookup +} + +// GetPurchasedPhoneNumberResponse - Response containing the purchased phone number +message GetPurchasedPhoneNumberResponse { + PurchasedPhoneNumber phone_number = 1; // The purchased phone number details +} + +// UpdatePurchasedPhoneNumberRequest - Request to update a purchased phone number +message UpdatePurchasedPhoneNumberRequest { + string purchased_phone_number_id = 1; // Optional: Use purchased phone number ID for direct lookup + string phone_number = 2; // Optional: Use phone number string for lookup + string sip_dispatch_rule_id = 3; // Optional: SIP dispatch rule ID to assign to the phone number +} + +// UpdatePurchasedPhoneNumberResponse - Response containing the updated purchased phone number +message UpdatePurchasedPhoneNumberResponse { + PurchasedPhoneNumber phone_number = 1; // The updated purchased phone number details +} + +// ReleasePurchasedPhoneNumbersRequest - Request to release purchased phone numbers +message ReleasePurchasedPhoneNumbersRequest { + repeated string purchased_phone_number_ids = 1; // Optional: Use purchased phone number IDs for direct lookup + repeated string phone_numbers = 2; // Optional: Use phone number strings for lookup +} + +// ReleasePurchasedPhoneNumbersResponse - Response for releasing purchased phone numbers +message ReleasePurchasedPhoneNumbersResponse { + // Empty response - operation completed successfully } // GlobalPhoneNumber represents a phone number with standardized format @@ -121,9 +159,10 @@ message PhoneNumberInventoryItem { // 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 + string purchased_phone_number_id = 1; // Unique identifier for the purchased phone number + GlobalPhoneNumber phone_number = 2; // Common phone number fields + PhoneNumberStatus status = 3; // Current status of the phone number + google.protobuf.Timestamp assigned_at = 4; // Timestamp when the number was assigned + google.protobuf.Timestamp released_at = 5; // Timestamp when the number was released (if applicable) + string sip_dispatch_rule_id = 6; // Optional: Associated SIP dispatch rule }