use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
fn default_tts_model() -> String {
"eleven_multilingual_v2".to_string()
}
fn default_output_format() -> String {
"mp3_44100_128".to_string()
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct TextToSpeechInput {
pub text: String,
pub voice: String,
#[serde(default = "default_tts_model")]
pub model: String,
#[serde(default = "default_output_format")]
pub output_format: String,
#[serde(default)]
pub stability: Option<f32>,
#[serde(default)]
pub similarity_boost: Option<f32>,
#[serde(default)]
pub style: Option<f32>,
#[serde(default)]
pub speaker_boost: bool,
#[serde(default)]
pub output_file: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct TextToSpeechOutput {
pub success: bool,
pub output_file: Option<String>,
pub audio_base64: Option<String>,
pub duration_seconds: Option<f64>,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct SpeechToTextInput {
pub file: String,
#[serde(default = "default_stt_model")]
pub model: String,
#[serde(default)]
pub language: Option<String>,
#[serde(default)]
pub diarize: bool,
#[serde(default)]
pub num_speakers: Option<u32>,
#[serde(default = "default_timestamps")]
pub timestamps: String,
}
fn default_stt_model() -> String {
"scribe_v1".to_string()
}
fn default_timestamps() -> String {
"word".to_string()
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct SpeechToTextOutput {
pub success: bool,
pub text: Option<String>,
pub language_code: Option<String>,
pub language_probability: Option<f64>,
pub words: Option<Vec<WordTimestamp>>,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct WordTimestamp {
pub text: String,
pub start: Option<f64>,
pub end: Option<f64>,
pub speaker_id: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct ListVoicesInput {
#[serde(default)]
pub detailed: bool,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct VoiceInfo {
pub voice_id: String,
pub name: String,
pub category: Option<String>,
pub description: Option<String>,
pub labels: Option<std::collections::HashMap<String, String>>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct ListVoicesOutput {
pub success: bool,
pub voices: Vec<VoiceInfo>,
pub total_count: usize,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct CloneVoiceInput {
pub name: String,
#[serde(default)]
pub description: Option<String>,
pub samples: Vec<String>,
#[serde(default)]
pub labels: Option<std::collections::HashMap<String, String>>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct CloneVoiceOutput {
pub success: bool,
pub voice_id: Option<String>,
pub requires_verification: Option<bool>,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct GenerateSfxInput {
pub text: String,
#[serde(default)]
pub duration: Option<f32>,
#[serde(default)]
pub influence: Option<f32>,
#[serde(default)]
pub output_file: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct GenerateSfxOutput {
pub success: bool,
pub output_file: Option<String>,
pub audio_base64: Option<String>,
pub duration_seconds: Option<f64>,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct AudioIsolationInput {
pub file: String,
#[serde(default)]
pub output_file: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct AudioIsolationOutput {
pub success: bool,
pub output_file: Option<String>,
pub audio_base64: Option<String>,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct VoiceChangerInput {
pub file: String,
pub voice: String,
#[serde(default = "default_vc_model")]
pub model: String,
#[serde(default)]
pub output_file: Option<String>,
}
fn default_vc_model() -> String {
"eleven_multilingual_sts_v2".to_string()
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct VoiceChangerOutput {
pub success: bool,
pub output_file: Option<String>,
pub audio_base64: Option<String>,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct CreateDubbingInput {
pub file: String,
pub source_lang: String,
pub target_lang: String,
#[serde(default)]
pub num_speakers: Option<u32>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct CreateDubbingOutput {
pub success: bool,
pub dubbing_id: Option<String>,
pub expected_duration_sec: Option<f64>,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct GetDubbingStatusInput {
pub dubbing_id: String,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct GetDubbingStatusOutput {
pub success: bool,
pub status: Option<String>,
pub name: Option<String>,
pub target_languages: Option<Vec<String>>,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct ListAgentsInput {
#[serde(default)]
pub limit: Option<u32>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct AgentInfo {
pub agent_id: String,
pub name: String,
pub description: Option<String>,
pub created_at: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct ListAgentsOutput {
pub success: bool,
pub agents: Vec<AgentInfo>,
pub total_count: usize,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct CreateAgentInput {
pub name: String,
#[serde(default)]
pub description: Option<String>,
#[serde(default)]
pub voice_id: Option<String>,
#[serde(default)]
pub first_message: Option<String>,
#[serde(default)]
pub system_prompt: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct CreateAgentOutput {
pub success: bool,
pub agent_id: Option<String>,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct ListHistoryInput {
#[serde(default = "default_history_limit")]
pub limit: u32,
}
fn default_history_limit() -> u32 {
10
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct HistoryItemInfo {
pub history_item_id: String,
pub voice_name: String,
pub voice_id: String,
pub model_id: Option<String>,
pub text: String,
pub date_unix: i64,
pub character_count: i32,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct ListHistoryOutput {
pub success: bool,
pub items: Vec<HistoryItemInfo>,
pub total_count: usize,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct GetUsageInput {
#[serde(default)]
pub start: Option<u64>,
#[serde(default)]
pub end: Option<u64>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct GetUsageOutput {
pub success: bool,
pub total_characters: u64,
pub usage_by_type: Option<std::collections::HashMap<String, u64>>,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct GetUserInfoInput;
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct GetUserInfoOutput {
pub success: bool,
pub user_id: Option<String>,
pub subscription_tier: Option<String>,
pub character_count: Option<i32>,
pub character_limit: Option<i32>,
pub usage_percentage: Option<f64>,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct ListModelsInput;
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct ModelInfo {
pub model_id: String,
pub name: String,
pub description: Option<String>,
pub languages: Vec<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct ListModelsOutput {
pub success: bool,
pub models: Vec<ModelInfo>,
pub total_count: usize,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct CreateDialogueInput {
pub inputs: Vec<DialogueInputItem>,
#[serde(default = "default_dialogue_model")]
pub model: String,
#[serde(default)]
pub output_file: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct DialogueInputItem {
pub text: String,
pub voice_id: String,
}
fn default_dialogue_model() -> String {
"eleven_v3".to_string()
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct CreateDialogueOutput {
pub success: bool,
pub output_file: Option<String>,
pub audio_base64: Option<String>,
pub voice_segments: Option<Vec<VoiceSegmentInfo>>,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct VoiceSegmentInfo {
pub voice_id: String,
pub start_time_seconds: f64,
pub end_time_seconds: f64,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct AddKnowledgeInput {
pub source_type: String,
pub content: String,
pub name: String,
#[serde(default)]
pub description: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct AddKnowledgeOutput {
pub success: bool,
pub document_id: Option<String>,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct ListKnowledgeInput {
#[serde(default)]
pub limit: Option<u32>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct KnowledgeDocumentInfo {
pub id: String,
pub name: String,
pub document_type: Option<String>,
pub created_at: String,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct ListKnowledgeOutput {
pub success: bool,
pub documents: Vec<KnowledgeDocumentInfo>,
pub total_count: usize,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct CreateWebhookInput {
pub name: String,
pub url: String,
pub events: Vec<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct CreateWebhookOutput {
pub success: bool,
pub webhook_id: Option<String>,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct ListWebhooksInput;
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct WebhookInfo {
pub id: String,
pub name: String,
pub url: String,
pub events: Vec<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct ListWebhooksOutput {
pub success: bool,
pub webhooks: Vec<WebhookInfo>,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct ListVoicesFromLibraryInput {
#[serde(default)]
pub limit: Option<u32>,
#[serde(default)]
pub category: Option<String>,
#[serde(default)]
pub gender: Option<String>,
#[serde(default)]
pub age: Option<String>,
#[serde(default)]
pub search: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct ListVoicesFromLibraryOutput {
pub success: bool,
pub voices: Vec<VoiceInfo>,
pub total_count: usize,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct AddVoiceToLibraryInput {
pub public_user_id: String,
pub voice_id: String,
pub name: String,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct AddVoiceToLibraryOutput {
pub success: bool,
pub voice_id: Option<String>,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct ListCollectionsInput {
#[serde(default)]
pub page_size: Option<u32>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct CollectionInfo {
pub collection_id: String,
pub name: String,
pub voice_count: Option<u32>,
pub created_at: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct ListCollectionsOutput {
pub success: bool,
pub collections: Vec<CollectionInfo>,
pub total_count: usize,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct CollectionVoicesInput {
pub collection_id: String,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct CollectionVoiceInfo {
pub voice_id: String,
pub name: String,
pub category: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct CollectionVoicesOutput {
pub success: bool,
pub voices: Vec<CollectionVoiceInfo>,
pub total_count: usize,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct GetSampleAudioInput {
pub voice_id: String,
pub sample_id: String,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct GetSampleAudioOutput {
pub success: bool,
pub audio_base64: Option<String>,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct ListDictionariesInput;
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct DictionaryInfo {
pub id: String,
pub name: String,
pub latest_version_id: String,
pub creation_time_unix: i64,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct ListDictionariesOutput {
pub success: bool,
pub dictionaries: Vec<DictionaryInfo>,
pub total_count: usize,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct AddDictionaryInput {
pub file: String,
pub name: String,
#[serde(default)]
pub description: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct AddDictionaryOutput {
pub success: bool,
pub dictionary_id: Option<String>,
pub version_id: Option<String>,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct GetDictionaryInput {
pub dictionary_id: String,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct DictionaryDetailInfo {
pub id: String,
pub name: String,
pub description: Option<String>,
pub latest_version_id: String,
pub creation_time_unix: i64,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct GetDictionaryOutput {
pub success: bool,
pub dictionary: Option<DictionaryDetailInfo>,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct DeleteDictionaryInput {
pub dictionary_id: String,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct DeleteDictionaryOutput {
pub success: bool,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct ListRulesInput {
pub dictionary_id: String,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct PronunciationRule {
pub word: String,
pub phoneme: Option<String>,
pub aliases: Option<Vec<String>>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct ListRulesOutput {
pub success: bool,
pub rules: Vec<PronunciationRule>,
pub total_count: usize,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct AddRulesInput {
pub dictionary_id: String,
pub rules_file: String,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct AddRulesOutput {
pub success: bool,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct RemoveRulesInput {
pub dictionary_id: String,
pub rules_file: String,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct RemoveRulesOutput {
pub success: bool,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct GetHistoryItemInput {
pub history_item_id: String,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct GetHistoryItemOutput {
pub success: bool,
pub history_item: Option<HistoryItemInfo>,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct DeleteHistoryItemInput {
pub history_item_id: String,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct DeleteHistoryItemOutput {
pub success: bool,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct SubmitFeedbackInput {
pub history_item_id: String,
pub thumbs_up: bool,
#[serde(default)]
pub feedback: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct SubmitFeedbackOutput {
pub success: bool,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct RebuildIndexInput {
pub document_id: String,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct RebuildIndexOutput {
pub success: bool,
pub index_id: Option<String>,
pub status: Option<String>,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct GetIndexStatusInput {
pub document_id: String,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct IndexStatusInfo {
pub id: Option<String>,
pub status: Option<String>,
pub active: Option<bool>,
pub document_id: Option<String>,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct GetIndexStatusOutput {
pub success: bool,
pub status: Option<IndexStatusInfo>,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct ListAudioNativeInput {
#[serde(default = "default_limit_10")]
pub limit: u32,
#[serde(default = "default_page_1")]
pub page: u32,
}
fn default_limit_10() -> u32 {
10
}
fn default_page_1() -> u32 {
1
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct AudioNativeProjectInfo {
pub project_id: String,
pub name: String,
pub author: Option<String>,
pub title: Option<String>,
pub voice_id: Option<String>,
pub model_id: Option<String>,
pub created_at: String,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct ListAudioNativeOutput {
pub success: bool,
pub projects: Vec<AudioNativeProjectInfo>,
pub total_count: usize,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct GetAudioNativeInput {
pub project_id: String,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct GetAudioNativeOutput {
pub success: bool,
pub project: Option<AudioNativeProjectInfo>,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct GetConversationInput {
pub conversation_id: String,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct TranscriptMessage {
pub role: String,
pub content: String,
pub timestamp: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct ConversationDetailInfo {
pub conversation_id: String,
pub agent_id: Option<String>,
pub version_id: Option<String>,
pub status: Option<String>,
pub created_at: Option<String>,
pub transcript: Option<Vec<TranscriptMessage>>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct GetConversationOutput {
pub success: bool,
pub conversation: Option<ConversationDetailInfo>,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct DeleteConversationInput {
pub conversation_id: String,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct DeleteConversationOutput {
pub success: bool,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct GetConversationAudioInput {
pub conversation_id: String,
#[serde(default)]
pub output: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct GetConversationAudioOutput {
pub success: bool,
pub output_file: Option<String>,
pub audio_base64: Option<String>,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct ListMembersInput;
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct MemberInfo {
pub user_id: String,
pub email: String,
pub role: String,
pub joined_at: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct ListMembersOutput {
pub success: bool,
pub members: Vec<MemberInfo>,
pub total_count: usize,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct InviteMemberInput {
pub email: String,
pub role: String,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct InviteMemberOutput {
pub success: bool,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct RevokeInviteInput {
pub email: String,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct RevokeInviteOutput {
pub success: bool,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct ListSecretsInput;
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct SecretInfo {
pub name: String,
pub secret_type: String,
pub created_at: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct ListSecretsOutput {
pub success: bool,
pub secrets: Vec<SecretInfo>,
pub total_count: usize,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct AddSecretInput {
pub name: String,
pub value: String,
pub secret_type: String,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct AddSecretOutput {
pub success: bool,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct DeleteSecretInput {
pub name: String,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct DeleteSecretOutput {
pub success: bool,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct GetPhoneNumberInput {
pub phone_id: String,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct PhoneNumberInfo {
pub phone_number_id: String,
pub phone_number: String,
pub label: Option<String>,
pub provider: Option<String>,
pub agent_id: Option<String>,
pub status: Option<String>,
pub created_at: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct GetPhoneNumberOutput {
pub success: bool,
pub phone_number: Option<PhoneNumberInfo>,
pub error: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct DeletePhoneNumberInput {
pub phone_id: String,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct DeletePhoneNumberOutput {
pub success: bool,
pub error: Option<String>,
}