thunderphone 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- thunderphone-0.1.0/LICENSE +21 -0
- thunderphone-0.1.0/PKG-INFO +75 -0
- thunderphone-0.1.0/README.md +59 -0
- thunderphone-0.1.0/pyproject.toml +23 -0
- thunderphone-0.1.0/setup.cfg +4 -0
- thunderphone-0.1.0/tests/test_client.py +211 -0
- thunderphone-0.1.0/thunderphone/__init__.py +6 -0
- thunderphone-0.1.0/thunderphone/facade.py +137 -0
- thunderphone-0.1.0/thunderphone/generated/__init__.py +8 -0
- thunderphone-0.1.0/thunderphone/generated/api/__init__.py +1 -0
- thunderphone-0.1.0/thunderphone/generated/api/agent_imports/__init__.py +1 -0
- thunderphone-0.1.0/thunderphone/generated/api/agent_imports/agent_imports_commit.py +186 -0
- thunderphone-0.1.0/thunderphone/generated/api/agent_imports/agent_imports_create.py +168 -0
- thunderphone-0.1.0/thunderphone/generated/api/agent_imports/agent_imports_delete.py +107 -0
- thunderphone-0.1.0/thunderphone/generated/api/agent_imports/agent_imports_items_partial_update.py +202 -0
- thunderphone-0.1.0/thunderphone/generated/api/agent_imports/agent_imports_list.py +141 -0
- thunderphone-0.1.0/thunderphone/generated/api/agent_imports/agent_imports_retrieve.py +164 -0
- thunderphone-0.1.0/thunderphone/generated/api/agents/__init__.py +1 -0
- thunderphone-0.1.0/thunderphone/generated/api/agents/agents_consent_attestations.py +218 -0
- thunderphone-0.1.0/thunderphone/generated/api/agents/agents_consent_attestations_list.py +162 -0
- thunderphone-0.1.0/thunderphone/generated/api/agents/agents_create.py +168 -0
- thunderphone-0.1.0/thunderphone/generated/api/agents/agents_delete.py +106 -0
- thunderphone-0.1.0/thunderphone/generated/api/agents/agents_deploy.py +177 -0
- thunderphone-0.1.0/thunderphone/generated/api/agents/agents_discard_draft.py +177 -0
- thunderphone-0.1.0/thunderphone/generated/api/agents/agents_duplicate.py +185 -0
- thunderphone-0.1.0/thunderphone/generated/api/agents/agents_generate_acknowledgement_prompt_create.py +169 -0
- thunderphone-0.1.0/thunderphone/generated/api/agents/agents_list.py +141 -0
- thunderphone-0.1.0/thunderphone/generated/api/agents/agents_partial_update.py +185 -0
- thunderphone-0.1.0/thunderphone/generated/api/agents/agents_prompt_analysis.py +181 -0
- thunderphone-0.1.0/thunderphone/generated/api/agents/agents_prompt_language_check_create.py +168 -0
- thunderphone-0.1.0/thunderphone/generated/api/agents/agents_retrieve.py +163 -0
- thunderphone-0.1.0/thunderphone/generated/api/agents/agents_split_testing.py +177 -0
- thunderphone-0.1.0/thunderphone/generated/api/agents/agents_test_runs_execute.py +176 -0
- thunderphone-0.1.0/thunderphone/generated/api/agents/agents_test_runs_list.py +160 -0
- thunderphone-0.1.0/thunderphone/generated/api/agents/agents_test_runs_retrieve.py +169 -0
- thunderphone-0.1.0/thunderphone/generated/api/agents/agents_test_scenarios.py +184 -0
- thunderphone-0.1.0/thunderphone/generated/api/agents/agents_test_scenarios_delete.py +114 -0
- thunderphone-0.1.0/thunderphone/generated/api/agents/agents_test_scenarios_generate.py +185 -0
- thunderphone-0.1.0/thunderphone/generated/api/agents/agents_test_scenarios_list.py +168 -0
- thunderphone-0.1.0/thunderphone/generated/api/agents/agents_test_scenarios_partial_update.py +201 -0
- thunderphone-0.1.0/thunderphone/generated/api/agents/agents_test_scenarios_refresh.py +185 -0
- thunderphone-0.1.0/thunderphone/generated/api/agents/agents_test_scenarios_retrieve.py +177 -0
- thunderphone-0.1.0/thunderphone/generated/api/agents/agents_transfer.py +189 -0
- thunderphone-0.1.0/thunderphone/generated/api/agents/agents_translate_prompt_create.py +168 -0
- thunderphone-0.1.0/thunderphone/generated/api/agents/agents_update.py +184 -0
- thunderphone-0.1.0/thunderphone/generated/api/agents/agents_validation_examples_list.py +163 -0
- thunderphone-0.1.0/thunderphone/generated/api/agents/agents_validation_runs.py +185 -0
- thunderphone-0.1.0/thunderphone/generated/api/agents/agents_validation_runs_list.py +163 -0
- thunderphone-0.1.0/thunderphone/generated/api/agents/agents_validation_status_list.py +163 -0
- thunderphone-0.1.0/thunderphone/generated/api/agents/agents_variant_stats_list.py +160 -0
- thunderphone-0.1.0/thunderphone/generated/api/agents/agents_variants.py +176 -0
- thunderphone-0.1.0/thunderphone/generated/api/agents/agents_variants_delete.py +110 -0
- thunderphone-0.1.0/thunderphone/generated/api/agents/agents_variants_list.py +160 -0
- thunderphone-0.1.0/thunderphone/generated/api/agents/agents_variants_partial_update.py +191 -0
- thunderphone-0.1.0/thunderphone/generated/api/agents/agents_versions_list.py +163 -0
- thunderphone-0.1.0/thunderphone/generated/api/billing/__init__.py +1 -0
- thunderphone-0.1.0/thunderphone/generated/api/billing/billing_bulk_update.py +169 -0
- thunderphone-0.1.0/thunderphone/generated/api/billing/billing_default_payment_method_create.py +168 -0
- thunderphone-0.1.0/thunderphone/generated/api/billing/billing_list.py +136 -0
- thunderphone-0.1.0/thunderphone/generated/api/billing/billing_setup_intent_create.py +169 -0
- thunderphone-0.1.0/thunderphone/generated/api/billing/billing_top_up_create.py +168 -0
- thunderphone-0.1.0/thunderphone/generated/api/billing/billing_transactions_list.py +141 -0
- thunderphone-0.1.0/thunderphone/generated/api/calls/__init__.py +1 -0
- thunderphone-0.1.0/thunderphone/generated/api/calls/calls_audio_list.py +163 -0
- thunderphone-0.1.0/thunderphone/generated/api/calls/calls_caller_audio_list.py +102 -0
- thunderphone-0.1.0/thunderphone/generated/api/calls/calls_export_list.py +293 -0
- thunderphone-0.1.0/thunderphone/generated/api/calls/calls_grade.py +222 -0
- thunderphone-0.1.0/thunderphone/generated/api/calls/calls_grade_list.py +175 -0
- thunderphone-0.1.0/thunderphone/generated/api/calls/calls_history_list.py +172 -0
- thunderphone-0.1.0/thunderphone/generated/api/calls/calls_issue_reports.py +184 -0
- thunderphone-0.1.0/thunderphone/generated/api/calls/calls_issue_reports_list.py +168 -0
- thunderphone-0.1.0/thunderphone/generated/api/calls/calls_list.py +303 -0
- thunderphone-0.1.0/thunderphone/generated/api/calls/calls_listen.py +185 -0
- thunderphone-0.1.0/thunderphone/generated/api/calls/calls_party_numbers_list.py +144 -0
- thunderphone-0.1.0/thunderphone/generated/api/calls/calls_place.py +173 -0
- thunderphone-0.1.0/thunderphone/generated/api/calls/calls_promote_to_scenario.py +182 -0
- thunderphone-0.1.0/thunderphone/generated/api/calls/calls_retrieve.py +163 -0
- thunderphone-0.1.0/thunderphone/generated/api/calls/calls_span_audio_list.py +102 -0
- thunderphone-0.1.0/thunderphone/generated/api/calls/calls_transcript_list.py +184 -0
- thunderphone-0.1.0/thunderphone/generated/api/calls/calls_validation_examples.py +184 -0
- thunderphone-0.1.0/thunderphone/generated/api/calls/calls_whisper.py +176 -0
- thunderphone-0.1.0/thunderphone/generated/api/campaigns/__init__.py +1 -0
- thunderphone-0.1.0/thunderphone/generated/api/campaigns/campaigns_action.py +201 -0
- thunderphone-0.1.0/thunderphone/generated/api/campaigns/campaigns_contacts.py +216 -0
- thunderphone-0.1.0/thunderphone/generated/api/campaigns/campaigns_create.py +168 -0
- thunderphone-0.1.0/thunderphone/generated/api/campaigns/campaigns_delete.py +107 -0
- thunderphone-0.1.0/thunderphone/generated/api/campaigns/campaigns_list.py +141 -0
- thunderphone-0.1.0/thunderphone/generated/api/campaigns/campaigns_partial_update.py +186 -0
- thunderphone-0.1.0/thunderphone/generated/api/campaigns/campaigns_retrieve.py +164 -0
- thunderphone-0.1.0/thunderphone/generated/api/campaigns/campaigns_stats_list.py +164 -0
- thunderphone-0.1.0/thunderphone/generated/api/consent_announcements/__init__.py +1 -0
- thunderphone-0.1.0/thunderphone/generated/api/consent_announcements/consent_announcements_retrieve.py +171 -0
- thunderphone-0.1.0/thunderphone/generated/api/developer/__init__.py +1 -0
- thunderphone-0.1.0/thunderphone/generated/api/developer/developer_api_keys_create.py +165 -0
- thunderphone-0.1.0/thunderphone/generated/api/developer/developer_api_keys_delete.py +105 -0
- thunderphone-0.1.0/thunderphone/generated/api/developer/developer_api_keys_list.py +137 -0
- thunderphone-0.1.0/thunderphone/generated/api/developer/developer_webhook_endpoints_create.py +170 -0
- thunderphone-0.1.0/thunderphone/generated/api/developer/developer_webhook_endpoints_delete.py +107 -0
- thunderphone-0.1.0/thunderphone/generated/api/developer/developer_webhook_endpoints_list.py +143 -0
- thunderphone-0.1.0/thunderphone/generated/api/developer/developer_webhook_endpoints_partial_update.py +188 -0
- thunderphone-0.1.0/thunderphone/generated/api/healthz/__init__.py +1 -0
- thunderphone-0.1.0/thunderphone/generated/api/healthz/healthz_list.py +136 -0
- thunderphone-0.1.0/thunderphone/generated/api/integrations/__init__.py +1 -0
- thunderphone-0.1.0/thunderphone/generated/api/integrations/integrations_create.py +168 -0
- thunderphone-0.1.0/thunderphone/generated/api/integrations/integrations_delete.py +106 -0
- thunderphone-0.1.0/thunderphone/generated/api/integrations/integrations_list.py +143 -0
- thunderphone-0.1.0/thunderphone/generated/api/integrations/integrations_partial_update.py +185 -0
- thunderphone-0.1.0/thunderphone/generated/api/integrations/integrations_retrieve.py +163 -0
- thunderphone-0.1.0/thunderphone/generated/api/integrations/integrations_test_request_create.py +168 -0
- thunderphone-0.1.0/thunderphone/generated/api/integrations/integrations_transfer.py +190 -0
- thunderphone-0.1.0/thunderphone/generated/api/integrations/integrations_update.py +184 -0
- thunderphone-0.1.0/thunderphone/generated/api/integrations/integrations_versions_list.py +164 -0
- thunderphone-0.1.0/thunderphone/generated/api/investigations/__init__.py +1 -0
- thunderphone-0.1.0/thunderphone/generated/api/investigations/investigations_apply.py +178 -0
- thunderphone-0.1.0/thunderphone/generated/api/investigations/investigations_candidates_experiments.py +192 -0
- thunderphone-0.1.0/thunderphone/generated/api/investigations/investigations_candidates_manual.py +177 -0
- thunderphone-0.1.0/thunderphone/generated/api/investigations/investigations_create.py +164 -0
- thunderphone-0.1.0/thunderphone/generated/api/investigations/investigations_experiments_retrieve.py +170 -0
- thunderphone-0.1.0/thunderphone/generated/api/investigations/investigations_hypotheses.py +178 -0
- thunderphone-0.1.0/thunderphone/generated/api/investigations/investigations_list.py +137 -0
- thunderphone-0.1.0/thunderphone/generated/api/investigations/investigations_partial_update.py +188 -0
- thunderphone-0.1.0/thunderphone/generated/api/investigations/investigations_retrieve.py +160 -0
- thunderphone-0.1.0/thunderphone/generated/api/investigations/investigations_search.py +178 -0
- thunderphone-0.1.0/thunderphone/generated/api/invites/__init__.py +1 -0
- thunderphone-0.1.0/thunderphone/generated/api/invites/invites_accept.py +185 -0
- thunderphone-0.1.0/thunderphone/generated/api/invites/invites_create.py +168 -0
- thunderphone-0.1.0/thunderphone/generated/api/invites/invites_decline.py +185 -0
- thunderphone-0.1.0/thunderphone/generated/api/invites/invites_delete.py +106 -0
- thunderphone-0.1.0/thunderphone/generated/api/invites/invites_list.py +141 -0
- thunderphone-0.1.0/thunderphone/generated/api/invites/invites_request_access.py +122 -0
- thunderphone-0.1.0/thunderphone/generated/api/invites/invites_retrieve.py +163 -0
- thunderphone-0.1.0/thunderphone/generated/api/issue_clusters/__init__.py +1 -0
- thunderphone-0.1.0/thunderphone/generated/api/issue_clusters/issue_clusters_escalate.py +190 -0
- thunderphone-0.1.0/thunderphone/generated/api/issue_clusters/issue_clusters_list.py +136 -0
- thunderphone-0.1.0/thunderphone/generated/api/issue_clusters/issue_clusters_partial_update.py +188 -0
- thunderphone-0.1.0/thunderphone/generated/api/issue_reports/__init__.py +1 -0
- thunderphone-0.1.0/thunderphone/generated/api/issue_reports/issue_reports_bulk_update.py +227 -0
- thunderphone-0.1.0/thunderphone/generated/api/issue_reports/issue_reports_list.py +136 -0
- thunderphone-0.1.0/thunderphone/generated/api/issue_reports/issue_reports_partial_update.py +184 -0
- thunderphone-0.1.0/thunderphone/generated/api/knowledge/__init__.py +1 -0
- thunderphone-0.1.0/thunderphone/generated/api/knowledge/knowledge_documents_create.py +178 -0
- thunderphone-0.1.0/thunderphone/generated/api/knowledge/knowledge_documents_delete.py +107 -0
- thunderphone-0.1.0/thunderphone/generated/api/knowledge/knowledge_documents_import_url.py +168 -0
- thunderphone-0.1.0/thunderphone/generated/api/knowledge/knowledge_documents_list.py +141 -0
- thunderphone-0.1.0/thunderphone/generated/api/knowledge/knowledge_documents_original_list.py +164 -0
- thunderphone-0.1.0/thunderphone/generated/api/knowledge/knowledge_documents_partial_update.py +195 -0
- thunderphone-0.1.0/thunderphone/generated/api/knowledge/knowledge_documents_refresh.py +178 -0
- thunderphone-0.1.0/thunderphone/generated/api/knowledge/knowledge_documents_replace.py +183 -0
- thunderphone-0.1.0/thunderphone/generated/api/knowledge/knowledge_documents_retrieve.py +164 -0
- thunderphone-0.1.0/thunderphone/generated/api/knowledge/knowledge_documents_retry.py +186 -0
- thunderphone-0.1.0/thunderphone/generated/api/knowledge/knowledge_search_create.py +168 -0
- thunderphone-0.1.0/thunderphone/generated/api/knowledge_bases/__init__.py +1 -0
- thunderphone-0.1.0/thunderphone/generated/api/knowledge_bases/knowledge_bases_create.py +168 -0
- thunderphone-0.1.0/thunderphone/generated/api/knowledge_bases/knowledge_bases_delete.py +107 -0
- thunderphone-0.1.0/thunderphone/generated/api/knowledge_bases/knowledge_bases_documents.py +193 -0
- thunderphone-0.1.0/thunderphone/generated/api/knowledge_bases/knowledge_bases_documents_delete.py +115 -0
- thunderphone-0.1.0/thunderphone/generated/api/knowledge_bases/knowledge_bases_documents_list.py +169 -0
- thunderphone-0.1.0/thunderphone/generated/api/knowledge_bases/knowledge_bases_documents_partial_update.py +209 -0
- thunderphone-0.1.0/thunderphone/generated/api/knowledge_bases/knowledge_bases_documents_retry.py +202 -0
- thunderphone-0.1.0/thunderphone/generated/api/knowledge_bases/knowledge_bases_list.py +141 -0
- thunderphone-0.1.0/thunderphone/generated/api/knowledge_bases/knowledge_bases_partial_update.py +186 -0
- thunderphone-0.1.0/thunderphone/generated/api/knowledge_bases/knowledge_bases_retrieve.py +164 -0
- thunderphone-0.1.0/thunderphone/generated/api/knowledge_bases/knowledge_bases_search.py +185 -0
- thunderphone-0.1.0/thunderphone/generated/api/leave/__init__.py +1 -0
- thunderphone-0.1.0/thunderphone/generated/api/leave/leave_create.py +112 -0
- thunderphone-0.1.0/thunderphone/generated/api/mcp/__init__.py +1 -0
- thunderphone-0.1.0/thunderphone/generated/api/mcp/mcp_create.py +168 -0
- thunderphone-0.1.0/thunderphone/generated/api/mcp_servers/__init__.py +1 -0
- thunderphone-0.1.0/thunderphone/generated/api/mcp_servers/mcp_servers_create.py +169 -0
- thunderphone-0.1.0/thunderphone/generated/api/mcp_servers/mcp_servers_delete.py +107 -0
- thunderphone-0.1.0/thunderphone/generated/api/mcp_servers/mcp_servers_list.py +141 -0
- thunderphone-0.1.0/thunderphone/generated/api/mcp_servers/mcp_servers_partial_update.py +188 -0
- thunderphone-0.1.0/thunderphone/generated/api/mcp_servers/mcp_servers_retrieve.py +164 -0
- thunderphone-0.1.0/thunderphone/generated/api/mcp_servers/mcp_servers_sync_tools.py +186 -0
- thunderphone-0.1.0/thunderphone/generated/api/members/__init__.py +1 -0
- thunderphone-0.1.0/thunderphone/generated/api/members/members_delete.py +106 -0
- thunderphone-0.1.0/thunderphone/generated/api/members/members_list.py +141 -0
- thunderphone-0.1.0/thunderphone/generated/api/members/members_role_bulk_update.py +187 -0
- thunderphone-0.1.0/thunderphone/generated/api/members/members_transfer_ownership.py +185 -0
- thunderphone-0.1.0/thunderphone/generated/api/mic_session/__init__.py +1 -0
- thunderphone-0.1.0/thunderphone/generated/api/mic_session/mic_session_create.py +168 -0
- thunderphone-0.1.0/thunderphone/generated/api/monitoring/__init__.py +1 -0
- thunderphone-0.1.0/thunderphone/generated/api/monitoring/monitoring_ack_retrieve.py +161 -0
- thunderphone-0.1.0/thunderphone/generated/api/monitoring/monitoring_auto_ack_create.py +173 -0
- thunderphone-0.1.0/thunderphone/generated/api/monitoring/monitoring_azure_alert_create.py +169 -0
- thunderphone-0.1.0/thunderphone/generated/api/monitoring/monitoring_glitchtip_alert_create.py +163 -0
- thunderphone-0.1.0/thunderphone/generated/api/onboarding/__init__.py +1 -0
- thunderphone-0.1.0/thunderphone/generated/api/onboarding/onboarding_agent_talk_skip.py +169 -0
- thunderphone-0.1.0/thunderphone/generated/api/onboarding/onboarding_dismiss_create.py +161 -0
- thunderphone-0.1.0/thunderphone/generated/api/onboarding/onboarding_list.py +128 -0
- thunderphone-0.1.0/thunderphone/generated/api/onboarding/onboarding_undismiss_create.py +161 -0
- thunderphone-0.1.0/thunderphone/generated/api/orgs/__init__.py +1 -0
- thunderphone-0.1.0/thunderphone/generated/api/orgs/orgs_create.py +168 -0
- thunderphone-0.1.0/thunderphone/generated/api/orgs/orgs_delete.py +106 -0
- thunderphone-0.1.0/thunderphone/generated/api/orgs/orgs_list.py +141 -0
- thunderphone-0.1.0/thunderphone/generated/api/orgs/orgs_partial_update.py +185 -0
- thunderphone-0.1.0/thunderphone/generated/api/orgs/orgs_retrieve.py +163 -0
- thunderphone-0.1.0/thunderphone/generated/api/orgs/orgs_update.py +184 -0
- thunderphone-0.1.0/thunderphone/generated/api/outbound_tcpa_confirmation/__init__.py +1 -0
- thunderphone-0.1.0/thunderphone/generated/api/outbound_tcpa_confirmation/outbound_tcpa_confirmation_create.py +167 -0
- thunderphone-0.1.0/thunderphone/generated/api/outbound_tcpa_confirmation/outbound_tcpa_confirmation_list.py +128 -0
- thunderphone-0.1.0/thunderphone/generated/api/phone_number_labels/__init__.py +1 -0
- thunderphone-0.1.0/thunderphone/generated/api/phone_number_labels/phone_number_labels_create.py +160 -0
- thunderphone-0.1.0/thunderphone/generated/api/phone_number_labels/phone_number_labels_delete.py +102 -0
- thunderphone-0.1.0/thunderphone/generated/api/phone_number_labels/phone_number_labels_list.py +133 -0
- thunderphone-0.1.0/thunderphone/generated/api/phone_numbers/__init__.py +1 -0
- thunderphone-0.1.0/thunderphone/generated/api/phone_numbers/phone_numbers_create.py +169 -0
- thunderphone-0.1.0/thunderphone/generated/api/phone_numbers/phone_numbers_delete.py +199 -0
- thunderphone-0.1.0/thunderphone/generated/api/phone_numbers/phone_numbers_limits_list.py +136 -0
- thunderphone-0.1.0/thunderphone/generated/api/phone_numbers/phone_numbers_list.py +141 -0
- thunderphone-0.1.0/thunderphone/generated/api/phone_numbers/phone_numbers_partial_update.py +187 -0
- thunderphone-0.1.0/thunderphone/generated/api/phone_numbers/phone_numbers_retrieve.py +163 -0
- thunderphone-0.1.0/thunderphone/generated/api/phone_numbers/phone_numbers_transfer.py +266 -0
- thunderphone-0.1.0/thunderphone/generated/api/phone_numbers/phone_numbers_update.py +185 -0
- thunderphone-0.1.0/thunderphone/generated/api/phone_numbers/phone_numbers_verify_voip.py +185 -0
- thunderphone-0.1.0/thunderphone/generated/api/phone_numbers/phone_numbers_versions_list.py +163 -0
- thunderphone-0.1.0/thunderphone/generated/api/provider_connections/__init__.py +1 -0
- thunderphone-0.1.0/thunderphone/generated/api/provider_connections/provider_connections_agents_delete.py +115 -0
- thunderphone-0.1.0/thunderphone/generated/api/provider_connections/provider_connections_agents_update.py +200 -0
- thunderphone-0.1.0/thunderphone/generated/api/provider_connections/provider_connections_api_key.py +184 -0
- thunderphone-0.1.0/thunderphone/generated/api/provider_connections/provider_connections_delete.py +107 -0
- thunderphone-0.1.0/thunderphone/generated/api/provider_connections/provider_connections_list.py +136 -0
- thunderphone-0.1.0/thunderphone/generated/api/provider_connections/provider_connections_partial_update.py +188 -0
- thunderphone-0.1.0/thunderphone/generated/api/provider_connections/provider_connections_retrieve.py +164 -0
- thunderphone-0.1.0/thunderphone/generated/api/provider_connections/provider_connections_sheets_configure.py +185 -0
- thunderphone-0.1.0/thunderphone/generated/api/provider_connections/provider_connections_sheets_inspect.py +181 -0
- thunderphone-0.1.0/thunderphone/generated/api/provider_connections/provider_connections_sheets_picker_token.py +212 -0
- thunderphone-0.1.0/thunderphone/generated/api/publishable_key/__init__.py +1 -0
- thunderphone-0.1.0/thunderphone/generated/api/publishable_key/publishable_key_create.py +169 -0
- thunderphone-0.1.0/thunderphone/generated/api/publishable_key/publishable_key_delete.py +106 -0
- thunderphone-0.1.0/thunderphone/generated/api/publishable_key/publishable_key_list.py +141 -0
- thunderphone-0.1.0/thunderphone/generated/api/publishable_key/publishable_key_partial_update.py +187 -0
- thunderphone-0.1.0/thunderphone/generated/api/publishable_key/publishable_key_retrieve.py +163 -0
- thunderphone-0.1.0/thunderphone/generated/api/publishable_key/publishable_key_transfer.py +183 -0
- thunderphone-0.1.0/thunderphone/generated/api/realtime/__init__.py +1 -0
- thunderphone-0.1.0/thunderphone/generated/api/realtime/realtime_sessions_create.py +169 -0
- thunderphone-0.1.0/thunderphone/generated/api/realtime/realtime_sessions_live_transcripts.py +189 -0
- thunderphone-0.1.0/thunderphone/generated/api/simulations/__init__.py +1 -0
- thunderphone-0.1.0/thunderphone/generated/api/simulations/simulations_batches_create.py +168 -0
- thunderphone-0.1.0/thunderphone/generated/api/simulations/simulations_batches_list.py +141 -0
- thunderphone-0.1.0/thunderphone/generated/api/simulations/simulations_batches_retrieve.py +155 -0
- thunderphone-0.1.0/thunderphone/generated/api/simulations/simulations_create.py +168 -0
- thunderphone-0.1.0/thunderphone/generated/api/simulations/simulations_list.py +141 -0
- thunderphone-0.1.0/thunderphone/generated/api/status/__init__.py +1 -0
- thunderphone-0.1.0/thunderphone/generated/api/status/status_heartbeat_list.py +136 -0
- thunderphone-0.1.0/thunderphone/generated/api/suites/__init__.py +1 -0
- thunderphone-0.1.0/thunderphone/generated/api/suites/suites_create.py +169 -0
- thunderphone-0.1.0/thunderphone/generated/api/suites/suites_delete.py +107 -0
- thunderphone-0.1.0/thunderphone/generated/api/suites/suites_list.py +141 -0
- thunderphone-0.1.0/thunderphone/generated/api/suites/suites_partial_update.py +186 -0
- thunderphone-0.1.0/thunderphone/generated/api/suites/suites_retrieve.py +164 -0
- thunderphone-0.1.0/thunderphone/generated/api/test_call_batches/__init__.py +1 -0
- thunderphone-0.1.0/thunderphone/generated/api/test_call_batches/test_call_batches_create.py +168 -0
- thunderphone-0.1.0/thunderphone/generated/api/test_call_batches/test_call_batches_list.py +141 -0
- thunderphone-0.1.0/thunderphone/generated/api/test_call_batches/test_call_batches_retrieve.py +155 -0
- thunderphone-0.1.0/thunderphone/generated/api/test_calls/__init__.py +1 -0
- thunderphone-0.1.0/thunderphone/generated/api/test_calls/test_calls_create.py +168 -0
- thunderphone-0.1.0/thunderphone/generated/api/test_calls/test_calls_list.py +141 -0
- thunderphone-0.1.0/thunderphone/generated/api/validation_examples/__init__.py +1 -0
- thunderphone-0.1.0/thunderphone/generated/api/validation_examples/validation_examples_audio_retrieve.py +177 -0
- thunderphone-0.1.0/thunderphone/generated/api/validation_examples/validation_examples_delete.py +106 -0
- thunderphone-0.1.0/thunderphone/generated/api/validation_examples/validation_examples_list.py +136 -0
- thunderphone-0.1.0/thunderphone/generated/api/validation_examples/validation_examples_partial_update.py +187 -0
- thunderphone-0.1.0/thunderphone/generated/api/validation_examples/validation_examples_replay.py +185 -0
- thunderphone-0.1.0/thunderphone/generated/api/validation_examples/validation_examples_retrieve.py +163 -0
- thunderphone-0.1.0/thunderphone/generated/api/validation_runs/__init__.py +1 -0
- thunderphone-0.1.0/thunderphone/generated/api/validation_runs/validation_runs_retrieve.py +163 -0
- thunderphone-0.1.0/thunderphone/generated/api/validation_sets/__init__.py +1 -0
- thunderphone-0.1.0/thunderphone/generated/api/validation_sets/validation_sets_list.py +136 -0
- thunderphone-0.1.0/thunderphone/generated/api/voices/__init__.py +1 -0
- thunderphone-0.1.0/thunderphone/generated/api/voices/voices_clones_create.py +166 -0
- thunderphone-0.1.0/thunderphone/generated/api/voices/voices_clones_delete.py +106 -0
- thunderphone-0.1.0/thunderphone/generated/api/voices/voices_clones_list.py +141 -0
- thunderphone-0.1.0/thunderphone/generated/api/voices/voices_clones_partial_update.py +185 -0
- thunderphone-0.1.0/thunderphone/generated/api/voices/voices_clones_preview_list.py +163 -0
- thunderphone-0.1.0/thunderphone/generated/api/voices/voices_clones_retrieve.py +163 -0
- thunderphone-0.1.0/thunderphone/generated/api/voices/voices_list.py +140 -0
- thunderphone-0.1.0/thunderphone/generated/api/voices/voices_policy_list.py +136 -0
- thunderphone-0.1.0/thunderphone/generated/api/voices/voices_preview_create.py +168 -0
- thunderphone-0.1.0/thunderphone/generated/api/voices/voices_previews_retrieve.py +163 -0
- thunderphone-0.1.0/thunderphone/generated/api/voices/voices_quota_requests_create.py +168 -0
- thunderphone-0.1.0/thunderphone/generated/api/voices/voices_quota_requests_current_list.py +136 -0
- thunderphone-0.1.0/thunderphone/generated/api/voip_connections/__init__.py +1 -0
- thunderphone-0.1.0/thunderphone/generated/api/voip_connections/voip_connections_available_numbers_list.py +174 -0
- thunderphone-0.1.0/thunderphone/generated/api/voip_connections/voip_connections_create.py +168 -0
- thunderphone-0.1.0/thunderphone/generated/api/voip_connections/voip_connections_delete.py +106 -0
- thunderphone-0.1.0/thunderphone/generated/api/voip_connections/voip_connections_import_numbers.py +184 -0
- thunderphone-0.1.0/thunderphone/generated/api/voip_connections/voip_connections_list.py +141 -0
- thunderphone-0.1.0/thunderphone/generated/api/voip_connections/voip_connections_partial_update.py +187 -0
- thunderphone-0.1.0/thunderphone/generated/api/voip_connections/voip_connections_provision_number.py +189 -0
- thunderphone-0.1.0/thunderphone/generated/api/voip_connections/voip_connections_search_numbers_list.py +218 -0
- thunderphone-0.1.0/thunderphone/generated/api/voip_connections/voip_connections_suggest_name_create.py +171 -0
- thunderphone-0.1.0/thunderphone/generated/api/voip_connections/voip_connections_test_create.py +168 -0
- thunderphone-0.1.0/thunderphone/generated/api/voip_connections/voip_connections_twilio_subaccounts.py +183 -0
- thunderphone-0.1.0/thunderphone/generated/api/voip_connections/voip_connections_twilio_subaccounts_connect.py +174 -0
- thunderphone-0.1.0/thunderphone/generated/api/webhook/__init__.py +1 -0
- thunderphone-0.1.0/thunderphone/generated/api/webhook/webhook_bulk_update.py +171 -0
- thunderphone-0.1.0/thunderphone/generated/api/webhook/webhook_list.py +136 -0
- thunderphone-0.1.0/thunderphone/generated/api/webhook/webhook_update.py +168 -0
- thunderphone-0.1.0/thunderphone/generated/api/webhooks/__init__.py +1 -0
- thunderphone-0.1.0/thunderphone/generated/api/webhooks/developer_webhook_endpoints_test.py +180 -0
- thunderphone-0.1.0/thunderphone/generated/api/widget/__init__.py +1 -0
- thunderphone-0.1.0/thunderphone/generated/api/widget/widget_session_create.py +169 -0
- thunderphone-0.1.0/thunderphone/generated/client.py +282 -0
- thunderphone-0.1.0/thunderphone/generated/errors.py +16 -0
- thunderphone-0.1.0/thunderphone/generated/models/__init__.py +985 -0
- thunderphone-0.1.0/thunderphone/generated/models/accent_enum.py +14 -0
- thunderphone-0.1.0/thunderphone/generated/models/ack_prompt_request_request.py +71 -0
- thunderphone-0.1.0/thunderphone/generated/models/acknowledgement_feedback_mode_enum.py +9 -0
- thunderphone-0.1.0/thunderphone/generated/models/acknowledgement_prompt.py +78 -0
- thunderphone-0.1.0/thunderphone/generated/models/acknowledgement_prompt_mode_288_enum.py +9 -0
- thunderphone-0.1.0/thunderphone/generated/models/acknowledgement_prompt_mode_836_enum.py +9 -0
- thunderphone-0.1.0/thunderphone/generated/models/agent.py +1743 -0
- thunderphone-0.1.0/thunderphone/generated/models/agent_import.py +219 -0
- thunderphone-0.1.0/thunderphone/generated/models/agent_import_create_auth_mode_enum.py +9 -0
- thunderphone-0.1.0/thunderphone/generated/models/agent_import_create_request.py +96 -0
- thunderphone-0.1.0/thunderphone/generated/models/agent_import_create_source_enum.py +11 -0
- thunderphone-0.1.0/thunderphone/generated/models/agent_import_item.py +149 -0
- thunderphone-0.1.0/thunderphone/generated/models/agent_import_item_status_enum.py +11 -0
- thunderphone-0.1.0/thunderphone/generated/models/agent_import_progress.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/agent_import_report.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/agent_import_summary.py +153 -0
- thunderphone-0.1.0/thunderphone/generated/models/agent_imports_commit_body.py +26 -0
- thunderphone-0.1.0/thunderphone/generated/models/agent_integration.py +135 -0
- thunderphone-0.1.0/thunderphone/generated/models/agent_integration_request.py +109 -0
- thunderphone-0.1.0/thunderphone/generated/models/agent_integrations_item.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/agent_mcp_servers_item.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/agent_provider_operations_request.py +112 -0
- thunderphone-0.1.0/thunderphone/generated/models/agent_provider_operations_request_allowed_operations_type_0.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/agent_request.py +1531 -0
- thunderphone-0.1.0/thunderphone/generated/models/agent_tool_collision_warnings_item.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/agent_transfer.py +95 -0
- thunderphone-0.1.0/thunderphone/generated/models/agent_transfer_request_request.py +91 -0
- thunderphone-0.1.0/thunderphone/generated/models/agent_variant.py +340 -0
- thunderphone-0.1.0/thunderphone/generated/models/agent_variant_request.py +314 -0
- thunderphone-0.1.0/thunderphone/generated/models/agent_write_request.py +1565 -0
- thunderphone-0.1.0/thunderphone/generated/models/alert_acknowledgement.py +70 -0
- thunderphone-0.1.0/thunderphone/generated/models/alert_delivery.py +70 -0
- thunderphone-0.1.0/thunderphone/generated/models/api_key_created.py +155 -0
- thunderphone-0.1.0/thunderphone/generated/models/apply_investigation_request.py +109 -0
- thunderphone-0.1.0/thunderphone/generated/models/audio_conditions_request.py +105 -0
- thunderphone-0.1.0/thunderphone/generated/models/audio_context_mode_3d0_enum.py +9 -0
- thunderphone-0.1.0/thunderphone/generated/models/auth_mode_f69_enum.py +9 -0
- thunderphone-0.1.0/thunderphone/generated/models/auto_ack_request.py +71 -0
- thunderphone-0.1.0/thunderphone/generated/models/available_numbers.py +84 -0
- thunderphone-0.1.0/thunderphone/generated/models/available_numbers_results_item.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/balance_transaction.py +162 -0
- thunderphone-0.1.0/thunderphone/generated/models/balance_transaction_kind_enum.py +14 -0
- thunderphone-0.1.0/thunderphone/generated/models/billing_account.py +269 -0
- thunderphone-0.1.0/thunderphone/generated/models/billing_setup_intent_create_body.py +26 -0
- thunderphone-0.1.0/thunderphone/generated/models/blank_enum.py +8 -0
- thunderphone-0.1.0/thunderphone/generated/models/call.py +666 -0
- thunderphone-0.1.0/thunderphone/generated/models/call_audio.py +62 -0
- thunderphone-0.1.0/thunderphone/generated/models/call_direction_enum.py +11 -0
- thunderphone-0.1.0/thunderphone/generated/models/call_export.py +92 -0
- thunderphone-0.1.0/thunderphone/generated/models/call_export_calls_item.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/call_grade.py +270 -0
- thunderphone-0.1.0/thunderphone/generated/models/call_grade_status_enum.py +11 -0
- thunderphone-0.1.0/thunderphone/generated/models/call_issue_report.py +338 -0
- thunderphone-0.1.0/thunderphone/generated/models/call_issue_report_create_request.py +183 -0
- thunderphone-0.1.0/thunderphone/generated/models/call_issue_report_linked_test_cases_item.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/call_list_response.py +100 -0
- thunderphone-0.1.0/thunderphone/generated/models/call_outcome_enum.py +11 -0
- thunderphone-0.1.0/thunderphone/generated/models/call_status_enum.py +10 -0
- thunderphone-0.1.0/thunderphone/generated/models/call_tool_snapshot_item.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/call_transcript.py +84 -0
- thunderphone-0.1.0/thunderphone/generated/models/call_whisper_request.py +62 -0
- thunderphone-0.1.0/thunderphone/generated/models/caller_behavior_request.py +80 -0
- thunderphone-0.1.0/thunderphone/generated/models/calls_grade_body.py +26 -0
- thunderphone-0.1.0/thunderphone/generated/models/calls_history_list_response_200_item.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/calls_listen_body.py +26 -0
- thunderphone-0.1.0/thunderphone/generated/models/campaign.py +282 -0
- thunderphone-0.1.0/thunderphone/generated/models/campaign_action_request.py +62 -0
- thunderphone-0.1.0/thunderphone/generated/models/campaign_contact.py +160 -0
- thunderphone-0.1.0/thunderphone/generated/models/campaign_contact_input_request.py +96 -0
- thunderphone-0.1.0/thunderphone/generated/models/campaign_contact_status_enum.py +13 -0
- thunderphone-0.1.0/thunderphone/generated/models/campaign_contacts_added.py +104 -0
- thunderphone-0.1.0/thunderphone/generated/models/campaign_contacts_added_errors_item.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/campaign_contacts_request.py +82 -0
- thunderphone-0.1.0/thunderphone/generated/models/campaign_contacts_upload_request.py +88 -0
- thunderphone-0.1.0/thunderphone/generated/models/campaign_detail_response.py +304 -0
- thunderphone-0.1.0/thunderphone/generated/models/campaign_request.py +203 -0
- thunderphone-0.1.0/thunderphone/generated/models/campaign_stats.py +122 -0
- thunderphone-0.1.0/thunderphone/generated/models/campaign_stats_by_status.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/campaign_stats_recent_calls_item.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/campaigns_action_action.py +10 -0
- thunderphone-0.1.0/thunderphone/generated/models/channel_enum.py +9 -0
- thunderphone-0.1.0/thunderphone/generated/models/config_source_enum.py +8 -0
- thunderphone-0.1.0/thunderphone/generated/models/connection_name_suggestion.py +70 -0
- thunderphone-0.1.0/thunderphone/generated/models/connection_test.py +96 -0
- thunderphone-0.1.0/thunderphone/generated/models/connection_test_test_result.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/consent_announcement_attestation.py +166 -0
- thunderphone-0.1.0/thunderphone/generated/models/consent_announcement_attestation_create_request.py +108 -0
- thunderphone-0.1.0/thunderphone/generated/models/consent_announcement_attestation_status_enum.py +10 -0
- thunderphone-0.1.0/thunderphone/generated/models/create_invite_request.py +82 -0
- thunderphone-0.1.0/thunderphone/generated/models/create_validation_example_request.py +95 -0
- thunderphone-0.1.0/thunderphone/generated/models/custom_voice.py +153 -0
- thunderphone-0.1.0/thunderphone/generated/models/default_payment_method_request.py +62 -0
- thunderphone-0.1.0/thunderphone/generated/models/deploy_agent_request.py +87 -0
- thunderphone-0.1.0/thunderphone/generated/models/detail_message.py +62 -0
- thunderphone-0.1.0/thunderphone/generated/models/developer_api_key.py +147 -0
- thunderphone-0.1.0/thunderphone/generated/models/developer_api_key_create_request.py +62 -0
- thunderphone-0.1.0/thunderphone/generated/models/developer_webhook_endpoint.py +164 -0
- thunderphone-0.1.0/thunderphone/generated/models/developer_webhook_endpoint_create_update_request.py +137 -0
- thunderphone-0.1.0/thunderphone/generated/models/developer_webhook_endpoint_create_update_status_enum.py +10 -0
- thunderphone-0.1.0/thunderphone/generated/models/developer_webhook_endpoints_test_body.py +26 -0
- thunderphone-0.1.0/thunderphone/generated/models/developer_webhook_test_delivery.py +109 -0
- thunderphone-0.1.0/thunderphone/generated/models/direction_a4b_enum.py +9 -0
- thunderphone-0.1.0/thunderphone/generated/models/direction_d75_enum.py +9 -0
- thunderphone-0.1.0/thunderphone/generated/models/disfluencies_enum.py +9 -0
- thunderphone-0.1.0/thunderphone/generated/models/document_batch_upload_request.py +120 -0
- thunderphone-0.1.0/thunderphone/generated/models/document_imported.py +97 -0
- thunderphone-0.1.0/thunderphone/generated/models/document_imported_warnings_item.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/document_text_request.py +70 -0
- thunderphone-0.1.0/thunderphone/generated/models/document_upload_request.py +88 -0
- thunderphone-0.1.0/thunderphone/generated/models/documents_created.py +105 -0
- thunderphone-0.1.0/thunderphone/generated/models/documents_created_warnings_item.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/draft_acknowledgement_feedback_mode_enum.py +9 -0
- thunderphone-0.1.0/thunderphone/generated/models/draft_acknowledgement_prompt_mode_enum.py +9 -0
- thunderphone-0.1.0/thunderphone/generated/models/draft_audio_context_mode_enum.py +9 -0
- thunderphone-0.1.0/thunderphone/generated/models/draft_inbound_speak_order_enum.py +9 -0
- thunderphone-0.1.0/thunderphone/generated/models/draft_outbound_speak_order_enum.py +9 -0
- thunderphone-0.1.0/thunderphone/generated/models/draft_play_sound_asset_enum.py +10 -0
- thunderphone-0.1.0/thunderphone/generated/models/draft_product_enum.py +13 -0
- thunderphone-0.1.0/thunderphone/generated/models/draft_thinking_level_enum.py +9 -0
- thunderphone-0.1.0/thunderphone/generated/models/draft_voicemail_action_enum.py +10 -0
- thunderphone-0.1.0/thunderphone/generated/models/duplicate_agent_request.py +74 -0
- thunderphone-0.1.0/thunderphone/generated/models/endpoint_method_enum.py +12 -0
- thunderphone-0.1.0/thunderphone/generated/models/events_enum.py +20 -0
- thunderphone-0.1.0/thunderphone/generated/models/execute_test_scenarios_request.py +125 -0
- thunderphone-0.1.0/thunderphone/generated/models/experiment.py +188 -0
- thunderphone-0.1.0/thunderphone/generated/models/experiment_sample.py +129 -0
- thunderphone-0.1.0/thunderphone/generated/models/experiment_status_enum.py +11 -0
- thunderphone-0.1.0/thunderphone/generated/models/fix_lane_enum.py +14 -0
- thunderphone-0.1.0/thunderphone/generated/models/frequency_enum.py +10 -0
- thunderphone-0.1.0/thunderphone/generated/models/function_spec_request.py +95 -0
- thunderphone-0.1.0/thunderphone/generated/models/gender_enum.py +9 -0
- thunderphone-0.1.0/thunderphone/generated/models/generate_test_scenarios_request.py +80 -0
- thunderphone-0.1.0/thunderphone/generated/models/glitch_tip_delivery.py +70 -0
- thunderphone-0.1.0/thunderphone/generated/models/goal_achievement_enum.py +10 -0
- thunderphone-0.1.0/thunderphone/generated/models/health.py +62 -0
- thunderphone-0.1.0/thunderphone/generated/models/heartbeat.py +76 -0
- thunderphone-0.1.0/thunderphone/generated/models/heartbeat_products_item.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/imported_numbers.py +100 -0
- thunderphone-0.1.0/thunderphone/generated/models/inbound_speak_order_enum.py +9 -0
- thunderphone-0.1.0/thunderphone/generated/models/inbound_status_enum.py +9 -0
- thunderphone-0.1.0/thunderphone/generated/models/integration_create_update_request.py +163 -0
- thunderphone-0.1.0/thunderphone/generated/models/integration_create_update_validation_status_enum.py +10 -0
- thunderphone-0.1.0/thunderphone/generated/models/integration_header.py +70 -0
- thunderphone-0.1.0/thunderphone/generated/models/integration_header_request.py +70 -0
- thunderphone-0.1.0/thunderphone/generated/models/integration_test.py +122 -0
- thunderphone-0.1.0/thunderphone/generated/models/integration_test_request_request.py +129 -0
- thunderphone-0.1.0/thunderphone/generated/models/integration_test_request_request_headers.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/integration_test_response_headers.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/integration_transfer.py +95 -0
- thunderphone-0.1.0/thunderphone/generated/models/integration_transfer_request.py +91 -0
- thunderphone-0.1.0/thunderphone/generated/models/investigation_detail.py +378 -0
- thunderphone-0.1.0/thunderphone/generated/models/investigation_detail_experiments_item.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/investigation_detail_prompt_drift.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/investigation_detail_search_result_type_0.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/investigation_list.py +276 -0
- thunderphone-0.1.0/thunderphone/generated/models/investigations_hypotheses_body.py +26 -0
- thunderphone-0.1.0/thunderphone/generated/models/investigations_search_body.py +26 -0
- thunderphone-0.1.0/thunderphone/generated/models/invite_accepted.py +71 -0
- thunderphone-0.1.0/thunderphone/generated/models/invite_detail.py +145 -0
- thunderphone-0.1.0/thunderphone/generated/models/invites_accept_body.py +26 -0
- thunderphone-0.1.0/thunderphone/generated/models/invites_decline_body.py +26 -0
- thunderphone-0.1.0/thunderphone/generated/models/invites_request_access_body.py +26 -0
- thunderphone-0.1.0/thunderphone/generated/models/issue_cluster_card.py +380 -0
- thunderphone-0.1.0/thunderphone/generated/models/issue_cluster_card_fix_lane_source_enum.py +10 -0
- thunderphone-0.1.0/thunderphone/generated/models/issue_cluster_card_investigation_summary_type_0.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/issue_cluster_card_status_enum.py +12 -0
- thunderphone-0.1.0/thunderphone/generated/models/issue_cluster_page.py +100 -0
- thunderphone-0.1.0/thunderphone/generated/models/issue_cluster_update.py +95 -0
- thunderphone-0.1.0/thunderphone/generated/models/issue_cluster_update_fix_lane_source_enum.py +9 -0
- thunderphone-0.1.0/thunderphone/generated/models/issue_cluster_update_status_enum.py +11 -0
- thunderphone-0.1.0/thunderphone/generated/models/issue_escalation.py +139 -0
- thunderphone-0.1.0/thunderphone/generated/models/issue_escalation_create_request.py +62 -0
- thunderphone-0.1.0/thunderphone/generated/models/issue_escalation_status_enum.py +10 -0
- thunderphone-0.1.0/thunderphone/generated/models/issue_report_page.py +100 -0
- thunderphone-0.1.0/thunderphone/generated/models/issue_reports_updated.py +62 -0
- thunderphone-0.1.0/thunderphone/generated/models/json_rpc_response.py +91 -0
- thunderphone-0.1.0/thunderphone/generated/models/jsonrpc_enum.py +8 -0
- thunderphone-0.1.0/thunderphone/generated/models/kind_c85_enum.py +10 -0
- thunderphone-0.1.0/thunderphone/generated/models/knowledge_base.py +108 -0
- thunderphone-0.1.0/thunderphone/generated/models/knowledge_base_request.py +73 -0
- thunderphone-0.1.0/thunderphone/generated/models/knowledge_bases_documents_retry_body.py +26 -0
- thunderphone-0.1.0/thunderphone/generated/models/knowledge_document.py +225 -0
- thunderphone-0.1.0/thunderphone/generated/models/knowledge_document_detail.py +341 -0
- thunderphone-0.1.0/thunderphone/generated/models/knowledge_document_detail_uploaded_by_type_0.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/knowledge_document_request.py +70 -0
- thunderphone-0.1.0/thunderphone/generated/models/knowledge_documents_refresh_body.py +26 -0
- thunderphone-0.1.0/thunderphone/generated/models/knowledge_documents_retry_body.py +26 -0
- thunderphone-0.1.0/thunderphone/generated/models/knowledge_search_request.py +86 -0
- thunderphone-0.1.0/thunderphone/generated/models/knowledge_search_results.py +82 -0
- thunderphone-0.1.0/thunderphone/generated/models/knowledge_search_results_results_item.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/leave_create_body.py +26 -0
- thunderphone-0.1.0/thunderphone/generated/models/listen_session.py +78 -0
- thunderphone-0.1.0/thunderphone/generated/models/live_transcript_toggle_request.py +62 -0
- thunderphone-0.1.0/thunderphone/generated/models/live_transcripts.py +70 -0
- thunderphone-0.1.0/thunderphone/generated/models/mcp_request_request.py +104 -0
- thunderphone-0.1.0/thunderphone/generated/models/mcp_request_request_params.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/mcp_server.py +188 -0
- thunderphone-0.1.0/thunderphone/generated/models/mcp_server_create_update_request.py +126 -0
- thunderphone-0.1.0/thunderphone/generated/models/mcp_server_create_update_transport_enum.py +8 -0
- thunderphone-0.1.0/thunderphone/generated/models/mcp_server_header_write_request.py +73 -0
- thunderphone-0.1.0/thunderphone/generated/models/mcp_server_headers_item.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/mcp_server_transport_enum.py +8 -0
- thunderphone-0.1.0/thunderphone/generated/models/mcp_servers_sync_tools_body.py +26 -0
- thunderphone-0.1.0/thunderphone/generated/models/members_transfer_ownership_body.py +26 -0
- thunderphone-0.1.0/thunderphone/generated/models/method_enum.py +12 -0
- thunderphone-0.1.0/thunderphone/generated/models/mic_session.py +86 -0
- thunderphone-0.1.0/thunderphone/generated/models/mic_session_request_request.py +62 -0
- thunderphone-0.1.0/thunderphone/generated/models/mode_559_enum.py +9 -0
- thunderphone-0.1.0/thunderphone/generated/models/mode_ffb_enum.py +9 -0
- thunderphone-0.1.0/thunderphone/generated/models/monitoring_azure_alert_create_body.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/monitoring_glitchtip_alert_create_body.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/noise_asset_enum.py +12 -0
- thunderphone-0.1.0/thunderphone/generated/models/number_summary.py +78 -0
- thunderphone-0.1.0/thunderphone/generated/models/number_verification.py +126 -0
- thunderphone-0.1.0/thunderphone/generated/models/onboarding_agent_talk_skip_body.py +26 -0
- thunderphone-0.1.0/thunderphone/generated/models/onboarding_dismiss_create_body.py +26 -0
- thunderphone-0.1.0/thunderphone/generated/models/onboarding_undismiss_create_body.py +26 -0
- thunderphone-0.1.0/thunderphone/generated/models/org_invite.py +138 -0
- thunderphone-0.1.0/thunderphone/generated/models/org_member.py +125 -0
- thunderphone-0.1.0/thunderphone/generated/models/org_member_role_enum.py +10 -0
- thunderphone-0.1.0/thunderphone/generated/models/organization.py +88 -0
- thunderphone-0.1.0/thunderphone/generated/models/organization_integration.py +180 -0
- thunderphone-0.1.0/thunderphone/generated/models/organization_onboarding.py +111 -0
- thunderphone-0.1.0/thunderphone/generated/models/organization_onboarding_steps.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/organization_request.py +62 -0
- thunderphone-0.1.0/thunderphone/generated/models/organization_validation_examples.py +76 -0
- thunderphone-0.1.0/thunderphone/generated/models/organization_webhook.py +88 -0
- thunderphone-0.1.0/thunderphone/generated/models/organization_webhook_request.py +62 -0
- thunderphone-0.1.0/thunderphone/generated/models/outbound_dial_state_enum.py +12 -0
- thunderphone-0.1.0/thunderphone/generated/models/outbound_speak_order_enum.py +9 -0
- thunderphone-0.1.0/thunderphone/generated/models/outbound_status_enum.py +9 -0
- thunderphone-0.1.0/thunderphone/generated/models/outbound_tcpa_confirmation.py +142 -0
- thunderphone-0.1.0/thunderphone/generated/models/outbound_tcpa_confirmation_create_request.py +89 -0
- thunderphone-0.1.0/thunderphone/generated/models/outbound_tcpa_confirmation_status_enum.py +10 -0
- thunderphone-0.1.0/thunderphone/generated/models/pace_enum.py +10 -0
- thunderphone-0.1.0/thunderphone/generated/models/party_numbers.py +76 -0
- thunderphone-0.1.0/thunderphone/generated/models/party_numbers_numbers_item.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/patched_agent_import_item_patch_request.py +120 -0
- thunderphone-0.1.0/thunderphone/generated/models/patched_agent_integration_request.py +108 -0
- thunderphone-0.1.0/thunderphone/generated/models/patched_agent_variant_request.py +313 -0
- thunderphone-0.1.0/thunderphone/generated/models/patched_agent_write_request.py +1565 -0
- thunderphone-0.1.0/thunderphone/generated/models/patched_auto_reload_request.py +104 -0
- thunderphone-0.1.0/thunderphone/generated/models/patched_call_issue_report_bulk_update_request.py +127 -0
- thunderphone-0.1.0/thunderphone/generated/models/patched_call_issue_report_update_request.py +74 -0
- thunderphone-0.1.0/thunderphone/generated/models/patched_campaign_request.py +205 -0
- thunderphone-0.1.0/thunderphone/generated/models/patched_developer_webhook_endpoint_create_update_request.py +137 -0
- thunderphone-0.1.0/thunderphone/generated/models/patched_document_text_request.py +71 -0
- thunderphone-0.1.0/thunderphone/generated/models/patched_document_upload_request.py +94 -0
- thunderphone-0.1.0/thunderphone/generated/models/patched_issue_cluster_update_request.py +125 -0
- thunderphone-0.1.0/thunderphone/generated/models/patched_knowledge_base_request.py +71 -0
- thunderphone-0.1.0/thunderphone/generated/models/patched_mcp_server_create_update_request.py +126 -0
- thunderphone-0.1.0/thunderphone/generated/models/patched_member_role_request_request.py +71 -0
- thunderphone-0.1.0/thunderphone/generated/models/patched_organization_request.py +62 -0
- thunderphone-0.1.0/thunderphone/generated/models/patched_organization_webhook_request.py +62 -0
- thunderphone-0.1.0/thunderphone/generated/models/patched_phone_number_update_request.py +144 -0
- thunderphone-0.1.0/thunderphone/generated/models/patched_provider_operations_request.py +85 -0
- thunderphone-0.1.0/thunderphone/generated/models/patched_provider_operations_request_allowed_operations.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/patched_publishable_key_update_request.py +150 -0
- thunderphone-0.1.0/thunderphone/generated/models/patched_suite_input_request.py +138 -0
- thunderphone-0.1.0/thunderphone/generated/models/patched_test_scenario_update_request.py +176 -0
- thunderphone-0.1.0/thunderphone/generated/models/patched_update_investigation_request.py +80 -0
- thunderphone-0.1.0/thunderphone/generated/models/patched_validation_example_update_request.py +150 -0
- thunderphone-0.1.0/thunderphone/generated/models/patched_validation_example_update_request_accepted_responses_item.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/patched_voice_clone_update_request.py +80 -0
- thunderphone-0.1.0/thunderphone/generated/models/patched_voip_connection_update_request.py +97 -0
- thunderphone-0.1.0/thunderphone/generated/models/phone_number.py +217 -0
- thunderphone-0.1.0/thunderphone/generated/models/phone_number_label.py +96 -0
- thunderphone-0.1.0/thunderphone/generated/models/phone_number_label_write_request.py +70 -0
- thunderphone-0.1.0/thunderphone/generated/models/phone_number_limits.py +70 -0
- thunderphone-0.1.0/thunderphone/generated/models/phone_number_provision_request.py +89 -0
- thunderphone-0.1.0/thunderphone/generated/models/phone_number_released.py +78 -0
- thunderphone-0.1.0/thunderphone/generated/models/phone_number_source_enum.py +9 -0
- thunderphone-0.1.0/thunderphone/generated/models/phone_number_transfer.py +100 -0
- thunderphone-0.1.0/thunderphone/generated/models/phone_number_transfer_request_request.py +62 -0
- thunderphone-0.1.0/thunderphone/generated/models/phone_number_update.py +144 -0
- thunderphone-0.1.0/thunderphone/generated/models/phone_number_update_request.py +144 -0
- thunderphone-0.1.0/thunderphone/generated/models/phone_numbers_verify_voip_body.py +26 -0
- thunderphone-0.1.0/thunderphone/generated/models/place_call_request.py +206 -0
- thunderphone-0.1.0/thunderphone/generated/models/place_call_request_variables.py +63 -0
- thunderphone-0.1.0/thunderphone/generated/models/place_call_response.py +96 -0
- thunderphone-0.1.0/thunderphone/generated/models/place_call_response_status_enum.py +13 -0
- thunderphone-0.1.0/thunderphone/generated/models/play_sound_asset_4b4_enum.py +10 -0
- thunderphone-0.1.0/thunderphone/generated/models/product_235_enum.py +13 -0
- thunderphone-0.1.0/thunderphone/generated/models/product_b5b_enum.py +13 -0
- thunderphone-0.1.0/thunderphone/generated/models/promote_scenario_request.py +107 -0
- thunderphone-0.1.0/thunderphone/generated/models/prompt_analysis.py +141 -0
- thunderphone-0.1.0/thunderphone/generated/models/prompt_analysis_facts_type_0.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/prompt_analysis_finding.py +84 -0
- thunderphone-0.1.0/thunderphone/generated/models/prompt_analysis_finding_params.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/prompt_analysis_request_request.py +115 -0
- thunderphone-0.1.0/thunderphone/generated/models/prompt_candidate.py +175 -0
- thunderphone-0.1.0/thunderphone/generated/models/prompt_candidate_kind_enum.py +9 -0
- thunderphone-0.1.0/thunderphone/generated/models/prompt_candidate_source_enum.py +9 -0
- thunderphone-0.1.0/thunderphone/generated/models/prompt_choice_enum.py +9 -0
- thunderphone-0.1.0/thunderphone/generated/models/prompt_language_check.py +118 -0
- thunderphone-0.1.0/thunderphone/generated/models/prompt_language_request_request.py +73 -0
- thunderphone-0.1.0/thunderphone/generated/models/provider_api_key_request.py +62 -0
- thunderphone-0.1.0/thunderphone/generated/models/provider_connection.py +214 -0
- thunderphone-0.1.0/thunderphone/generated/models/provider_connection_agent_attachments_item.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/provider_connection_allowed_operations.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/provider_connection_effective_operations.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/provider_connection_provider_metadata.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/provider_connections.py +114 -0
- thunderphone-0.1.0/thunderphone/generated/models/provider_connections_agents_item.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/provider_connections_providers.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/provider_connections_sheets_picker_token_body.py +26 -0
- thunderphone-0.1.0/thunderphone/generated/models/provider_enum.py +12 -0
- thunderphone-0.1.0/thunderphone/generated/models/provisioned_number.py +105 -0
- thunderphone-0.1.0/thunderphone/generated/models/publishable_key.py +204 -0
- thunderphone-0.1.0/thunderphone/generated/models/publishable_key_create_request.py +141 -0
- thunderphone-0.1.0/thunderphone/generated/models/publishable_key_mode_enum.py +9 -0
- thunderphone-0.1.0/thunderphone/generated/models/publishable_key_transfer_request_request.py +91 -0
- thunderphone-0.1.0/thunderphone/generated/models/realtime_session.py +86 -0
- thunderphone-0.1.0/thunderphone/generated/models/realtime_session_request_request.py +143 -0
- thunderphone-0.1.0/thunderphone/generated/models/realtime_session_request_request_variables.py +65 -0
- thunderphone-0.1.0/thunderphone/generated/models/recording_mode_enum.py +10 -0
- thunderphone-0.1.0/thunderphone/generated/models/refresh_test_scenarios_request.py +73 -0
- thunderphone-0.1.0/thunderphone/generated/models/role_0b4_enum.py +9 -0
- thunderphone-0.1.0/thunderphone/generated/models/role_13f_enum.py +9 -0
- thunderphone-0.1.0/thunderphone/generated/models/run_enum.py +8 -0
- thunderphone-0.1.0/thunderphone/generated/models/run_experiment_request.py +84 -0
- thunderphone-0.1.0/thunderphone/generated/models/scenario_batch.py +316 -0
- thunderphone-0.1.0/thunderphone/generated/models/scenario_batch_matrix_dimensions.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/scenario_batch_runs_item.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/scenario_list.py +76 -0
- thunderphone-0.1.0/thunderphone/generated/models/scenario_mode_enum.py +9 -0
- thunderphone-0.1.0/thunderphone/generated/models/setup_intent.py +85 -0
- thunderphone-0.1.0/thunderphone/generated/models/setup_method_enum.py +11 -0
- thunderphone-0.1.0/thunderphone/generated/models/severity_enum.py +10 -0
- thunderphone-0.1.0/thunderphone/generated/models/sheets_picker_token.py +62 -0
- thunderphone-0.1.0/thunderphone/generated/models/simulation_batch.py +293 -0
- thunderphone-0.1.0/thunderphone/generated/models/simulation_batch_create_request.py +165 -0
- thunderphone-0.1.0/thunderphone/generated/models/simulation_batch_status_enum.py +11 -0
- thunderphone-0.1.0/thunderphone/generated/models/simulation_run.py +367 -0
- thunderphone-0.1.0/thunderphone/generated/models/simulation_run_create_request.py +172 -0
- thunderphone-0.1.0/thunderphone/generated/models/simulation_run_grade_type_0.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/simulation_run_mode_enum.py +9 -0
- thunderphone-0.1.0/thunderphone/generated/models/simulation_run_status_enum.py +11 -0
- thunderphone-0.1.0/thunderphone/generated/models/simulation_run_transcript_item.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/simulator_product_enum.py +9 -0
- thunderphone-0.1.0/thunderphone/generated/models/snr_db_enum.py +11 -0
- thunderphone-0.1.0/thunderphone/generated/models/source_1_ec_enum.py +11 -0
- thunderphone-0.1.0/thunderphone/generated/models/source_e1a_enum.py +9 -0
- thunderphone-0.1.0/thunderphone/generated/models/source_origin_enum.py +9 -0
- thunderphone-0.1.0/thunderphone/generated/models/source_type_enum.py +9 -0
- thunderphone-0.1.0/thunderphone/generated/models/speech_style_request.py +113 -0
- thunderphone-0.1.0/thunderphone/generated/models/split_testing.py +79 -0
- thunderphone-0.1.0/thunderphone/generated/models/split_testing_request_request.py +62 -0
- thunderphone-0.1.0/thunderphone/generated/models/spreadsheet_configure_request.py +70 -0
- thunderphone-0.1.0/thunderphone/generated/models/spreadsheet_inspect_request.py +62 -0
- thunderphone-0.1.0/thunderphone/generated/models/spreadsheet_overview.py +78 -0
- thunderphone-0.1.0/thunderphone/generated/models/start_investigation_request.py +114 -0
- thunderphone-0.1.0/thunderphone/generated/models/status_365_enum.py +15 -0
- thunderphone-0.1.0/thunderphone/generated/models/status_3f0_enum.py +13 -0
- thunderphone-0.1.0/thunderphone/generated/models/status_51e_enum.py +10 -0
- thunderphone-0.1.0/thunderphone/generated/models/status_83a_enum.py +11 -0
- thunderphone-0.1.0/thunderphone/generated/models/status_d47_enum.py +12 -0
- thunderphone-0.1.0/thunderphone/generated/models/status_de_4_enum.py +12 -0
- thunderphone-0.1.0/thunderphone/generated/models/status_df_2_enum.py +11 -0
- thunderphone-0.1.0/thunderphone/generated/models/status_e8c_enum.py +17 -0
- thunderphone-0.1.0/thunderphone/generated/models/storm_feedback_mode_enum.py +10 -0
- thunderphone-0.1.0/thunderphone/generated/models/submit_manual_candidate_request.py +81 -0
- thunderphone-0.1.0/thunderphone/generated/models/suite_criteria_input_request.py +71 -0
- thunderphone-0.1.0/thunderphone/generated/models/suite_input_request.py +138 -0
- thunderphone-0.1.0/thunderphone/generated/models/suite_schedule_input_request.py +112 -0
- thunderphone-0.1.0/thunderphone/generated/models/target_type_enum.py +9 -0
- thunderphone-0.1.0/thunderphone/generated/models/telephony_condition_request.py +62 -0
- thunderphone-0.1.0/thunderphone/generated/models/test_scenario.py +246 -0
- thunderphone-0.1.0/thunderphone/generated/models/test_scenario_create_request.py +177 -0
- thunderphone-0.1.0/thunderphone/generated/models/test_scenario_source_enum.py +10 -0
- thunderphone-0.1.0/thunderphone/generated/models/test_suite.py +224 -0
- thunderphone-0.1.0/thunderphone/generated/models/test_suite_criteria.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/test_suite_runs_item.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/test_suite_scenarios_item.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/test_suite_schedule_type_0.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/thinking_level_477_enum.py +9 -0
- thunderphone-0.1.0/thunderphone/generated/models/tool_definition_request.py +225 -0
- thunderphone-0.1.0/thunderphone/generated/models/tool_definition_request_headers.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/tool_definition_request_mcp.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/tool_definition_request_provider.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/tool_endpoint_request.py +95 -0
- thunderphone-0.1.0/thunderphone/generated/models/tool_endpoint_request_headers.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/tool_parameters_request.py +99 -0
- thunderphone-0.1.0/thunderphone/generated/models/tool_parameters_request_properties.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/top_up_request.py +82 -0
- thunderphone-0.1.0/thunderphone/generated/models/top_up_response.py +85 -0
- thunderphone-0.1.0/thunderphone/generated/models/transcript_entry.py +132 -0
- thunderphone-0.1.0/thunderphone/generated/models/translate_prompt_request_request.py +73 -0
- thunderphone-0.1.0/thunderphone/generated/models/translated_prompt.py +118 -0
- thunderphone-0.1.0/thunderphone/generated/models/twilio_subaccount.py +92 -0
- thunderphone-0.1.0/thunderphone/generated/models/twilio_subaccount_connect_result.py +138 -0
- thunderphone-0.1.0/thunderphone/generated/models/twilio_subaccount_connect_result_status_enum.py +10 -0
- thunderphone-0.1.0/thunderphone/generated/models/twilio_subaccount_connect_results.py +78 -0
- thunderphone-0.1.0/thunderphone/generated/models/twilio_subaccount_discovery.py +94 -0
- thunderphone-0.1.0/thunderphone/generated/models/twilio_subaccount_parent.py +70 -0
- thunderphone-0.1.0/thunderphone/generated/models/update_investigation_status_enum.py +8 -0
- thunderphone-0.1.0/thunderphone/generated/models/url_document_request.py +84 -0
- thunderphone-0.1.0/thunderphone/generated/models/user_org.py +102 -0
- thunderphone-0.1.0/thunderphone/generated/models/validation_example.py +295 -0
- thunderphone-0.1.0/thunderphone/generated/models/validation_example_accepted_responses_item.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/validation_example_context_item.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/validation_example_original_response.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/validation_example_update_status_enum.py +10 -0
- thunderphone-0.1.0/thunderphone/generated/models/validation_examples.py +76 -0
- thunderphone-0.1.0/thunderphone/generated/models/validation_examples_replay_body.py +26 -0
- thunderphone-0.1.0/thunderphone/generated/models/validation_replay_result.py +114 -0
- thunderphone-0.1.0/thunderphone/generated/models/validation_replay_result_replay_metadata.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/validation_replay_result_replayed_output.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/validation_run.py +306 -0
- thunderphone-0.1.0/thunderphone/generated/models/validation_run_regressions_item.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/validation_run_request_request.py +70 -0
- thunderphone-0.1.0/thunderphone/generated/models/validation_run_results_item.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/validation_runs.py +76 -0
- thunderphone-0.1.0/thunderphone/generated/models/validation_sets.py +76 -0
- thunderphone-0.1.0/thunderphone/generated/models/validation_sets_agents_item.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/validation_status.py +103 -0
- thunderphone-0.1.0/thunderphone/generated/models/validation_status_c53_enum.py +10 -0
- thunderphone-0.1.0/thunderphone/generated/models/variant_stats.py +117 -0
- thunderphone-0.1.0/thunderphone/generated/models/version_page.py +84 -0
- thunderphone-0.1.0/thunderphone/generated/models/version_page_results_item.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/voice_catalog.py +94 -0
- thunderphone-0.1.0/thunderphone/generated/models/voice_catalog_languages_item.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/voice_catalog_voices_item.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/voice_clone_request.py +147 -0
- thunderphone-0.1.0/thunderphone/generated/models/voice_matrix_request.py +155 -0
- thunderphone-0.1.0/thunderphone/generated/models/voice_policy.py +86 -0
- thunderphone-0.1.0/thunderphone/generated/models/voice_preview.py +96 -0
- thunderphone-0.1.0/thunderphone/generated/models/voice_preview_request.py +81 -0
- thunderphone-0.1.0/thunderphone/generated/models/voice_quota_kind_enum.py +9 -0
- thunderphone-0.1.0/thunderphone/generated/models/voice_quota_request.py +91 -0
- thunderphone-0.1.0/thunderphone/generated/models/voice_quota_response.py +120 -0
- thunderphone-0.1.0/thunderphone/generated/models/voicemail_action_89d_enum.py +10 -0
- thunderphone-0.1.0/thunderphone/generated/models/voip_connection.py +240 -0
- thunderphone-0.1.0/thunderphone/generated/models/voip_connection_create_request.py +125 -0
- thunderphone-0.1.0/thunderphone/generated/models/voip_connection_credentials.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/voip_connection_sip_config.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/voip_connection_status_enum.py +11 -0
- thunderphone-0.1.0/thunderphone/generated/models/voip_connection_suggest_name_request.py +92 -0
- thunderphone-0.1.0/thunderphone/generated/models/voip_connection_test_request.py +105 -0
- thunderphone-0.1.0/thunderphone/generated/models/voip_connections_available_numbers_list_response_200_item.py +48 -0
- thunderphone-0.1.0/thunderphone/generated/models/voip_connections_search_numbers_list_type.py +9 -0
- thunderphone-0.1.0/thunderphone/generated/models/voip_number_import_request.py +62 -0
- thunderphone-0.1.0/thunderphone/generated/models/voip_number_provision_request.py +62 -0
- thunderphone-0.1.0/thunderphone/generated/models/voip_twilio_subaccount_connect_request.py +71 -0
- thunderphone-0.1.0/thunderphone/generated/models/voip_twilio_subaccount_discover_request.py +73 -0
- thunderphone-0.1.0/thunderphone/generated/models/voip_verification_evidence.py +155 -0
- thunderphone-0.1.0/thunderphone/generated/models/voip_verification_status_enum.py +11 -0
- thunderphone-0.1.0/thunderphone/generated/models/webhook_config_audio_context_mode_enum.py +9 -0
- thunderphone-0.1.0/thunderphone/generated/models/webhook_config_play_sound_asset_enum.py +10 -0
- thunderphone-0.1.0/thunderphone/generated/models/webhook_config_request.py +616 -0
- thunderphone-0.1.0/thunderphone/generated/models/webhook_config_thinking_level_enum.py +10 -0
- thunderphone-0.1.0/thunderphone/generated/models/webhook_config_voicemail_action_enum.py +10 -0
- thunderphone-0.1.0/thunderphone/generated/models/webhook_created.py +172 -0
- thunderphone-0.1.0/thunderphone/generated/models/whisper_accepted.py +64 -0
- thunderphone-0.1.0/thunderphone/generated/models/whisper_accepted_status_enum.py +8 -0
- thunderphone-0.1.0/thunderphone/generated/models/widget_session.py +94 -0
- thunderphone-0.1.0/thunderphone/generated/models/widget_session_request_request.py +142 -0
- thunderphone-0.1.0/thunderphone/generated/models/widget_session_request_request_variables.py +65 -0
- thunderphone-0.1.0/thunderphone/generated/types.py +54 -0
- thunderphone-0.1.0/thunderphone/py.typed +0 -0
- thunderphone-0.1.0/thunderphone.egg-info/PKG-INFO +75 -0
- thunderphone-0.1.0/thunderphone.egg-info/SOURCES.txt +769 -0
- thunderphone-0.1.0/thunderphone.egg-info/dependency_links.txt +1 -0
- thunderphone-0.1.0/thunderphone.egg-info/requires.txt +4 -0
- thunderphone-0.1.0/thunderphone.egg-info/top_level.txt +1 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Autophonix, LLC
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: thunderphone
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Official typed ThunderPhone API client
|
|
5
|
+
Author: ThunderPhone
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Documentation, https://thunderphone.com/docs/api-reference/sdks
|
|
8
|
+
Requires-Python: >=3.10
|
|
9
|
+
Description-Content-Type: text/markdown
|
|
10
|
+
License-File: LICENSE
|
|
11
|
+
Requires-Dist: httpx<0.29,>=0.27
|
|
12
|
+
Requires-Dist: attrs>=23.2
|
|
13
|
+
Requires-Dist: python-dateutil>=2.8.2
|
|
14
|
+
Requires-Dist: typing-extensions>=4.10
|
|
15
|
+
Dynamic: license-file
|
|
16
|
+
|
|
17
|
+
# ThunderPhone Python SDK
|
|
18
|
+
|
|
19
|
+
Python 3.10+. Install `pip install thunderphone`. Set `THUNDERPHONE_API_KEY` in your
|
|
20
|
+
environment, or pass `api_key=` to `ThunderPhone`. Optional `base_url` defaults to
|
|
21
|
+
`https://api.thunderphone.com` (do not append `/v1`).
|
|
22
|
+
|
|
23
|
+
```python
|
|
24
|
+
import os
|
|
25
|
+
from thunderphone import ThunderPhone, AgentRequest, PlaceCallRequest
|
|
26
|
+
|
|
27
|
+
with ThunderPhone() as api:
|
|
28
|
+
agent = api.agents.create(AgentRequest(
|
|
29
|
+
name="Reception",
|
|
30
|
+
prompt="Help callers with scheduling and business information.",
|
|
31
|
+
voice=os.environ["THUNDERPHONE_VOICE"],
|
|
32
|
+
))
|
|
33
|
+
call = api.calls.place(PlaceCallRequest(
|
|
34
|
+
agent_id=agent.id,
|
|
35
|
+
from_number=os.environ["FROM_NUMBER"],
|
|
36
|
+
to_number=os.environ["TO_NUMBER"],
|
|
37
|
+
idempotency_key="appointment-123",
|
|
38
|
+
))
|
|
39
|
+
done = api.calls.wait_for_completion(
|
|
40
|
+
call.call_id, timeout=300, poll_interval=1,
|
|
41
|
+
)
|
|
42
|
+
if done.status == "failed":
|
|
43
|
+
raise RuntimeError(done.end_reason)
|
|
44
|
+
print(api.calls.transcript(call.call_id).transcripts)
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Choose a voice from `GET /v1/voices`. Outbound calls require an outbound-capable
|
|
48
|
+
carrier number, sufficient balance, and the organization's outbound confirmation.
|
|
49
|
+
Polling returns both completed and failed calls. A polling deadline raises
|
|
50
|
+
`TimeoutError`; HTTP timeouts and transport errors propagate. Writes are never
|
|
51
|
+
retried automatically. Reuse an idempotency key only for the same request.
|
|
52
|
+
|
|
53
|
+
Every operation has generated synchronous and asynchronous functions and typed
|
|
54
|
+
request/response models under `thunderphone.generated`. For example:
|
|
55
|
+
|
|
56
|
+
```python
|
|
57
|
+
from thunderphone.generated.api.calls import calls_list
|
|
58
|
+
|
|
59
|
+
with ThunderPhone() as api:
|
|
60
|
+
page = calls_list.sync(client=api.client, limit=20, offset=0)
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Generated functions offer `sync`, `sync_detailed`, `asyncio`, and `asyncio_detailed`
|
|
64
|
+
where the operation has a response body. Detailed variants retain status and headers;
|
|
65
|
+
undocumented errors return `parsed=None` unless `raise_on_unexpected_status` is enabled
|
|
66
|
+
on the generated client. Helpers raise `ThunderPhoneError` with `status` and `body`.
|
|
67
|
+
The client sends `X-ThunderPhone-Client: sdk-python/0.1.0`. Use a context manager or
|
|
68
|
+
`close()` for the facade; close generated async clients with their async context manager.
|
|
69
|
+
|
|
70
|
+
[API reference](https://thunderphone.com/docs/api-reference/sdks) ·
|
|
71
|
+
[OpenAPI](https://thunderphone.com/openapi.json)
|
|
72
|
+
|
|
73
|
+
Development: `pip install -e .`, `python -m unittest discover -s tests -v`,
|
|
74
|
+
`python -m build`. Regenerate from the repository root using
|
|
75
|
+
`scripts/generate-sdks.sh`; never edit `thunderphone/generated/` by hand.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# ThunderPhone Python SDK
|
|
2
|
+
|
|
3
|
+
Python 3.10+. Install `pip install thunderphone`. Set `THUNDERPHONE_API_KEY` in your
|
|
4
|
+
environment, or pass `api_key=` to `ThunderPhone`. Optional `base_url` defaults to
|
|
5
|
+
`https://api.thunderphone.com` (do not append `/v1`).
|
|
6
|
+
|
|
7
|
+
```python
|
|
8
|
+
import os
|
|
9
|
+
from thunderphone import ThunderPhone, AgentRequest, PlaceCallRequest
|
|
10
|
+
|
|
11
|
+
with ThunderPhone() as api:
|
|
12
|
+
agent = api.agents.create(AgentRequest(
|
|
13
|
+
name="Reception",
|
|
14
|
+
prompt="Help callers with scheduling and business information.",
|
|
15
|
+
voice=os.environ["THUNDERPHONE_VOICE"],
|
|
16
|
+
))
|
|
17
|
+
call = api.calls.place(PlaceCallRequest(
|
|
18
|
+
agent_id=agent.id,
|
|
19
|
+
from_number=os.environ["FROM_NUMBER"],
|
|
20
|
+
to_number=os.environ["TO_NUMBER"],
|
|
21
|
+
idempotency_key="appointment-123",
|
|
22
|
+
))
|
|
23
|
+
done = api.calls.wait_for_completion(
|
|
24
|
+
call.call_id, timeout=300, poll_interval=1,
|
|
25
|
+
)
|
|
26
|
+
if done.status == "failed":
|
|
27
|
+
raise RuntimeError(done.end_reason)
|
|
28
|
+
print(api.calls.transcript(call.call_id).transcripts)
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Choose a voice from `GET /v1/voices`. Outbound calls require an outbound-capable
|
|
32
|
+
carrier number, sufficient balance, and the organization's outbound confirmation.
|
|
33
|
+
Polling returns both completed and failed calls. A polling deadline raises
|
|
34
|
+
`TimeoutError`; HTTP timeouts and transport errors propagate. Writes are never
|
|
35
|
+
retried automatically. Reuse an idempotency key only for the same request.
|
|
36
|
+
|
|
37
|
+
Every operation has generated synchronous and asynchronous functions and typed
|
|
38
|
+
request/response models under `thunderphone.generated`. For example:
|
|
39
|
+
|
|
40
|
+
```python
|
|
41
|
+
from thunderphone.generated.api.calls import calls_list
|
|
42
|
+
|
|
43
|
+
with ThunderPhone() as api:
|
|
44
|
+
page = calls_list.sync(client=api.client, limit=20, offset=0)
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Generated functions offer `sync`, `sync_detailed`, `asyncio`, and `asyncio_detailed`
|
|
48
|
+
where the operation has a response body. Detailed variants retain status and headers;
|
|
49
|
+
undocumented errors return `parsed=None` unless `raise_on_unexpected_status` is enabled
|
|
50
|
+
on the generated client. Helpers raise `ThunderPhoneError` with `status` and `body`.
|
|
51
|
+
The client sends `X-ThunderPhone-Client: sdk-python/0.1.0`. Use a context manager or
|
|
52
|
+
`close()` for the facade; close generated async clients with their async context manager.
|
|
53
|
+
|
|
54
|
+
[API reference](https://thunderphone.com/docs/api-reference/sdks) ·
|
|
55
|
+
[OpenAPI](https://thunderphone.com/openapi.json)
|
|
56
|
+
|
|
57
|
+
Development: `pip install -e .`, `python -m unittest discover -s tests -v`,
|
|
58
|
+
`python -m build`. Regenerate from the repository root using
|
|
59
|
+
`scripts/generate-sdks.sh`; never edit `thunderphone/generated/` by hand.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=77"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "thunderphone"
|
|
7
|
+
version = "0.1.0"
|
|
8
|
+
description = "Official typed ThunderPhone API client"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.10"
|
|
11
|
+
license = "MIT"
|
|
12
|
+
license-files = ["LICENSE"]
|
|
13
|
+
authors = [{name = "ThunderPhone"}]
|
|
14
|
+
dependencies = ["httpx>=0.27,<0.29", "attrs>=23.2", "python-dateutil>=2.8.2", "typing-extensions>=4.10"]
|
|
15
|
+
|
|
16
|
+
[project.urls]
|
|
17
|
+
Documentation = "https://thunderphone.com/docs/api-reference/sdks"
|
|
18
|
+
|
|
19
|
+
[tool.setuptools.packages.find]
|
|
20
|
+
include = ["thunderphone*"]
|
|
21
|
+
|
|
22
|
+
[tool.setuptools.package-data]
|
|
23
|
+
thunderphone = ["py.typed"]
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import importlib
|
|
2
|
+
import json
|
|
3
|
+
import os
|
|
4
|
+
import pkgutil
|
|
5
|
+
import threading
|
|
6
|
+
import unittest
|
|
7
|
+
from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer
|
|
8
|
+
from pathlib import Path
|
|
9
|
+
from unittest.mock import patch
|
|
10
|
+
|
|
11
|
+
from thunderphone import AgentRequest, PlaceCallRequest, ThunderPhone, ThunderPhoneError
|
|
12
|
+
from thunderphone import generated
|
|
13
|
+
|
|
14
|
+
FIXTURES = Path(__file__).resolve().parents[2] / "fixtures"
|
|
15
|
+
AGENT = json.loads((FIXTURES / "agent.json").read_text())
|
|
16
|
+
CALL = json.loads((FIXTURES / "call.json").read_text())
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class ClientTests(unittest.TestCase):
|
|
20
|
+
def setUp(self):
|
|
21
|
+
self.requests = []
|
|
22
|
+
self.statuses = ["in_progress", "completed"]
|
|
23
|
+
self.failure = None
|
|
24
|
+
owner = self
|
|
25
|
+
|
|
26
|
+
class Handler(BaseHTTPRequestHandler):
|
|
27
|
+
def log_message(self, *_args):
|
|
28
|
+
pass
|
|
29
|
+
|
|
30
|
+
def do_GET(self):
|
|
31
|
+
self.respond()
|
|
32
|
+
|
|
33
|
+
def do_POST(self):
|
|
34
|
+
self.respond()
|
|
35
|
+
|
|
36
|
+
def respond(self):
|
|
37
|
+
raw = self.rfile.read(int(self.headers.get("Content-Length", 0)))
|
|
38
|
+
owner.requests.append(
|
|
39
|
+
(
|
|
40
|
+
self.command,
|
|
41
|
+
self.path,
|
|
42
|
+
dict(self.headers),
|
|
43
|
+
json.loads(raw) if raw else None,
|
|
44
|
+
)
|
|
45
|
+
)
|
|
46
|
+
status = 200
|
|
47
|
+
if owner.failure:
|
|
48
|
+
status, payload = owner.failure, {"detail": "declined"}
|
|
49
|
+
elif self.path == "/v1/agents":
|
|
50
|
+
status, payload = 201, AGENT
|
|
51
|
+
elif self.path == "/v1/call":
|
|
52
|
+
status, payload = 201, {"call_id": 1001, "status": "initiated"}
|
|
53
|
+
elif self.path.endswith("/transcript"):
|
|
54
|
+
payload = {
|
|
55
|
+
"call_id": 1001,
|
|
56
|
+
"transcripts": [{"role": "agent", "content": "Hello"}],
|
|
57
|
+
}
|
|
58
|
+
else:
|
|
59
|
+
state = (
|
|
60
|
+
owner.statuses.pop(0)
|
|
61
|
+
if len(owner.statuses) > 1
|
|
62
|
+
else owner.statuses[0]
|
|
63
|
+
)
|
|
64
|
+
payload = {**CALL, "status": state}
|
|
65
|
+
self.send_response(status)
|
|
66
|
+
self.send_header("Content-Type", "application/json")
|
|
67
|
+
self.end_headers()
|
|
68
|
+
self.wfile.write(json.dumps(payload).encode())
|
|
69
|
+
|
|
70
|
+
self.server = ThreadingHTTPServer(("127.0.0.1", 0), Handler)
|
|
71
|
+
self.thread = threading.Thread(target=self.server.serve_forever, daemon=True)
|
|
72
|
+
self.thread.start()
|
|
73
|
+
self.api = ThunderPhone(
|
|
74
|
+
"test-placeholder", base_url=f"http://127.0.0.1:{self.server.server_port}/"
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
def tearDown(self):
|
|
78
|
+
self.api.close()
|
|
79
|
+
self.server.shutdown()
|
|
80
|
+
self.server.server_close()
|
|
81
|
+
self.thread.join()
|
|
82
|
+
|
|
83
|
+
def test_create_place_poll_transcript(self):
|
|
84
|
+
agent = self.api.agents.create(
|
|
85
|
+
AgentRequest(name="Reception", prompt="Help callers.", voice="olivia")
|
|
86
|
+
)
|
|
87
|
+
self.assertEqual(agent.id, 12)
|
|
88
|
+
placed = self.api.calls.place(
|
|
89
|
+
PlaceCallRequest(
|
|
90
|
+
from_number=CALL["from_number"],
|
|
91
|
+
to_number=CALL["to_number"],
|
|
92
|
+
agent_id=12,
|
|
93
|
+
idempotency_key="one",
|
|
94
|
+
)
|
|
95
|
+
)
|
|
96
|
+
self.assertEqual(placed.call_id, 1001)
|
|
97
|
+
self.assertEqual(
|
|
98
|
+
self.api.calls.wait_for_completion(1001, poll_interval=0.001).status,
|
|
99
|
+
"completed",
|
|
100
|
+
)
|
|
101
|
+
self.assertEqual(
|
|
102
|
+
self.api.calls.transcript(1001).transcripts[0].content, "Hello"
|
|
103
|
+
)
|
|
104
|
+
self.assertEqual(self.requests[1][3]["idempotency_key"], "one")
|
|
105
|
+
for _, path, headers, _ in self.requests:
|
|
106
|
+
self.assertEqual(headers["Authorization"], "Bearer test-placeholder")
|
|
107
|
+
self.assertEqual(headers["X-ThunderPhone-Client"], "sdk-python/0.1.0")
|
|
108
|
+
self.assertNotIn("/v1/v1/", path)
|
|
109
|
+
|
|
110
|
+
def test_failed_timeout_and_bad_interval(self):
|
|
111
|
+
self.statuses = ["failed"]
|
|
112
|
+
self.assertEqual(self.api.calls.wait_for_completion(1001).status, "failed")
|
|
113
|
+
self.statuses = ["in_progress"]
|
|
114
|
+
with self.assertRaises(TimeoutError):
|
|
115
|
+
self.api.calls.wait_for_completion(1001, timeout=0.025, poll_interval=0.001)
|
|
116
|
+
with self.assertRaises(ValueError):
|
|
117
|
+
self.api.calls.wait_for_completion(1001, poll_interval=0)
|
|
118
|
+
|
|
119
|
+
def test_errors_do_not_retry_mutations(self):
|
|
120
|
+
self.failure = 402
|
|
121
|
+
with self.assertRaises(ThunderPhoneError) as caught:
|
|
122
|
+
self.api.calls.place(PlaceCallRequest(from_number="a", to_number="b"))
|
|
123
|
+
self.assertEqual(caught.exception.status, 402)
|
|
124
|
+
self.assertEqual(len(self.requests), 1)
|
|
125
|
+
|
|
126
|
+
def test_environment_and_base_url(self):
|
|
127
|
+
with patch.dict(os.environ, {}, clear=True):
|
|
128
|
+
with self.assertRaises(ValueError):
|
|
129
|
+
ThunderPhone()
|
|
130
|
+
with patch.dict(os.environ, {"THUNDERPHONE_API_KEY": "test-placeholder"}):
|
|
131
|
+
with ThunderPhone() as api:
|
|
132
|
+
self.assertIsNotNone(api.client)
|
|
133
|
+
with self.assertRaises(ValueError):
|
|
134
|
+
ThunderPhone("test-placeholder", base_url="ftp://example.com")
|
|
135
|
+
|
|
136
|
+
def test_generated_multipart_has_boundary_and_repeated_file_fields(self):
|
|
137
|
+
from io import BytesIO
|
|
138
|
+
from thunderphone.generated.api.knowledge import knowledge_documents_create
|
|
139
|
+
from thunderphone.generated.models.document_batch_upload_request import (
|
|
140
|
+
DocumentBatchUploadRequest,
|
|
141
|
+
)
|
|
142
|
+
from thunderphone.generated.types import File
|
|
143
|
+
|
|
144
|
+
body = DocumentBatchUploadRequest(
|
|
145
|
+
files=[
|
|
146
|
+
File(
|
|
147
|
+
payload=BytesIO(b"first document"),
|
|
148
|
+
file_name="first.txt",
|
|
149
|
+
mime_type="text/plain",
|
|
150
|
+
),
|
|
151
|
+
File(
|
|
152
|
+
payload=BytesIO(b"second document"),
|
|
153
|
+
file_name="second.txt",
|
|
154
|
+
mime_type="text/plain",
|
|
155
|
+
),
|
|
156
|
+
]
|
|
157
|
+
)
|
|
158
|
+
kwargs = knowledge_documents_create._get_kwargs(body=body)
|
|
159
|
+
request = self.api.client.get_httpx_client().build_request(**kwargs)
|
|
160
|
+
self.assertIn("boundary=", request.headers["Content-Type"])
|
|
161
|
+
wire = request.read()
|
|
162
|
+
self.assertEqual(wire.count(b'name="files[]"'), 2)
|
|
163
|
+
self.assertIn(b"first document", wire)
|
|
164
|
+
self.assertIn(b"second document", wire)
|
|
165
|
+
|
|
166
|
+
def test_campaign_contacts_accept_wrapped_json_raw_json_and_csv(self):
|
|
167
|
+
from io import BytesIO
|
|
168
|
+
from uuid import UUID
|
|
169
|
+
from thunderphone.generated.api.campaigns import campaigns_contacts
|
|
170
|
+
from thunderphone.generated.models.campaign_contact_input_request import (
|
|
171
|
+
CampaignContactInputRequest,
|
|
172
|
+
)
|
|
173
|
+
from thunderphone.generated.models.campaign_contacts_request import (
|
|
174
|
+
CampaignContactsRequest,
|
|
175
|
+
)
|
|
176
|
+
from thunderphone.generated.models.campaign_contacts_upload_request import (
|
|
177
|
+
CampaignContactsUploadRequest,
|
|
178
|
+
)
|
|
179
|
+
from thunderphone.generated.types import File
|
|
180
|
+
|
|
181
|
+
contact = CampaignContactInputRequest(phone="+14155550101")
|
|
182
|
+
campaign_id = UUID("11111111-1111-4111-8111-111111111111")
|
|
183
|
+
for body, expected in [
|
|
184
|
+
([contact], [{"phone": "+14155550101"}]),
|
|
185
|
+
(
|
|
186
|
+
CampaignContactsRequest(contacts=[contact]),
|
|
187
|
+
{"contacts": [{"phone": "+14155550101"}]},
|
|
188
|
+
),
|
|
189
|
+
]:
|
|
190
|
+
self.assertEqual(
|
|
191
|
+
campaigns_contacts._get_kwargs(campaign_id, body=body)["json"], expected
|
|
192
|
+
)
|
|
193
|
+
kwargs = campaigns_contacts._get_kwargs(
|
|
194
|
+
campaign_id,
|
|
195
|
+
body=CampaignContactsUploadRequest(
|
|
196
|
+
file=File(
|
|
197
|
+
payload=BytesIO(b"phone\n+14155550101"),
|
|
198
|
+
file_name="contacts.csv",
|
|
199
|
+
mime_type="text/csv",
|
|
200
|
+
),
|
|
201
|
+
),
|
|
202
|
+
)
|
|
203
|
+
request = self.api.client.get_httpx_client().build_request(**kwargs)
|
|
204
|
+
self.assertIn("boundary=", request.headers["Content-Type"])
|
|
205
|
+
self.assertIn(b"contacts.csv", request.read())
|
|
206
|
+
|
|
207
|
+
def test_every_generated_module_imports(self):
|
|
208
|
+
for module in pkgutil.walk_packages(
|
|
209
|
+
generated.__path__, generated.__name__ + "."
|
|
210
|
+
):
|
|
211
|
+
importlib.import_module(module.name)
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"""Official ThunderPhone client and common request types."""
|
|
2
|
+
from .facade import ThunderPhone, ThunderPhoneError
|
|
3
|
+
from .generated.models.agent_request import AgentRequest
|
|
4
|
+
from .generated.models.place_call_request import PlaceCallRequest
|
|
5
|
+
|
|
6
|
+
__all__ = ["ThunderPhone", "ThunderPhoneError", "AgentRequest", "PlaceCallRequest"]
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"""Small synchronous facade; every endpoint also has generated sync/async clients."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import math
|
|
6
|
+
import os
|
|
7
|
+
import time
|
|
8
|
+
from typing import TypeVar
|
|
9
|
+
from urllib.parse import urlsplit
|
|
10
|
+
|
|
11
|
+
import httpx
|
|
12
|
+
|
|
13
|
+
from .generated.api.agents import agents_create
|
|
14
|
+
from .generated.api.calls import calls_place, calls_retrieve, calls_transcript_list
|
|
15
|
+
from .generated.client import AuthenticatedClient
|
|
16
|
+
from .generated.models.agent import Agent
|
|
17
|
+
from .generated.models.agent_request import AgentRequest
|
|
18
|
+
from .generated.models.call import Call
|
|
19
|
+
from .generated.models.call_transcript import CallTranscript
|
|
20
|
+
from .generated.models.place_call_request import PlaceCallRequest
|
|
21
|
+
from .generated.models.place_call_response import PlaceCallResponse
|
|
22
|
+
from .generated.types import Response
|
|
23
|
+
|
|
24
|
+
T = TypeVar("T")
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class ThunderPhoneError(Exception):
|
|
28
|
+
def __init__(self, status: int, body: bytes):
|
|
29
|
+
self.status = status
|
|
30
|
+
self.body = body
|
|
31
|
+
super().__init__(f"ThunderPhone API returned HTTP {status}")
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def _unwrap(response: Response[T]) -> T:
|
|
35
|
+
if not 200 <= response.status_code < 300:
|
|
36
|
+
raise ThunderPhoneError(response.status_code, response.content)
|
|
37
|
+
if response.parsed is None:
|
|
38
|
+
raise ValueError("ThunderPhone returned an empty success response")
|
|
39
|
+
return response.parsed
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
class _Agents:
|
|
43
|
+
def __init__(self, client: AuthenticatedClient):
|
|
44
|
+
self._client = client
|
|
45
|
+
|
|
46
|
+
def create(self, body: AgentRequest) -> Agent:
|
|
47
|
+
return _unwrap(agents_create.sync_detailed(client=self._client, body=body))
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
class _Calls:
|
|
51
|
+
def __init__(self, client: AuthenticatedClient):
|
|
52
|
+
self._client = client
|
|
53
|
+
|
|
54
|
+
def place(self, body: PlaceCallRequest) -> PlaceCallResponse:
|
|
55
|
+
return _unwrap(calls_place.sync_detailed(client=self._client, body=body))
|
|
56
|
+
|
|
57
|
+
def get(self, call_id: int) -> Call:
|
|
58
|
+
return _unwrap(calls_retrieve.sync_detailed(call_id, client=self._client))
|
|
59
|
+
|
|
60
|
+
def transcript(self, call_id: int) -> CallTranscript:
|
|
61
|
+
return _unwrap(
|
|
62
|
+
calls_transcript_list.sync_detailed(call_id, client=self._client)
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
def wait_for_completion(
|
|
66
|
+
self, call_id: int, *, timeout: float = 300, poll_interval: float = 1
|
|
67
|
+
) -> Call:
|
|
68
|
+
"""Poll completed/failed states. Never retries a mutating request.
|
|
69
|
+
|
|
70
|
+
timeout bounds polling; individual HTTP operations have a timeout no
|
|
71
|
+
larger than the remaining budget. Network timeout errors propagate.
|
|
72
|
+
"""
|
|
73
|
+
if (
|
|
74
|
+
not math.isfinite(timeout)
|
|
75
|
+
or timeout <= 0
|
|
76
|
+
or not math.isfinite(poll_interval)
|
|
77
|
+
or poll_interval <= 0
|
|
78
|
+
):
|
|
79
|
+
raise ValueError(
|
|
80
|
+
"timeout and poll_interval must be positive finite numbers"
|
|
81
|
+
)
|
|
82
|
+
deadline = time.monotonic() + timeout
|
|
83
|
+
while True:
|
|
84
|
+
remaining = deadline - time.monotonic()
|
|
85
|
+
if remaining <= 0:
|
|
86
|
+
raise TimeoutError(f"Timed out waiting for call {call_id}")
|
|
87
|
+
response = self._client.get_httpx_client().get(
|
|
88
|
+
f"/v1/calls/{call_id}", timeout=min(30, remaining)
|
|
89
|
+
)
|
|
90
|
+
if not response.is_success:
|
|
91
|
+
raise ThunderPhoneError(response.status_code, response.content)
|
|
92
|
+
call = Call.from_dict(response.json())
|
|
93
|
+
if call.status in {"completed", "failed"}:
|
|
94
|
+
return call
|
|
95
|
+
time.sleep(min(poll_interval, max(0, deadline - time.monotonic())))
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
class ThunderPhone:
|
|
99
|
+
def __init__(
|
|
100
|
+
self,
|
|
101
|
+
api_key: str | None = None,
|
|
102
|
+
*,
|
|
103
|
+
base_url: str = "https://api.thunderphone.com",
|
|
104
|
+
timeout: float = 30,
|
|
105
|
+
):
|
|
106
|
+
key = api_key if api_key is not None else os.environ.get("THUNDERPHONE_API_KEY")
|
|
107
|
+
if not key or not key.strip():
|
|
108
|
+
raise ValueError("Set THUNDERPHONE_API_KEY or provide api_key")
|
|
109
|
+
parsed = urlsplit(base_url)
|
|
110
|
+
if (
|
|
111
|
+
parsed.scheme not in {"http", "https"}
|
|
112
|
+
or not parsed.netloc
|
|
113
|
+
or parsed.username
|
|
114
|
+
or parsed.password
|
|
115
|
+
or parsed.query
|
|
116
|
+
or parsed.fragment
|
|
117
|
+
):
|
|
118
|
+
raise ValueError(
|
|
119
|
+
"base_url must be an HTTP(S) URL without credentials, query, or fragment"
|
|
120
|
+
)
|
|
121
|
+
self.client = AuthenticatedClient(
|
|
122
|
+
base_url=base_url.rstrip("/"),
|
|
123
|
+
token=key,
|
|
124
|
+
headers={"X-ThunderPhone-Client": "sdk-python/0.1.0"},
|
|
125
|
+
timeout=httpx.Timeout(timeout),
|
|
126
|
+
)
|
|
127
|
+
self.agents = _Agents(self.client)
|
|
128
|
+
self.calls = _Calls(self.client)
|
|
129
|
+
|
|
130
|
+
def close(self) -> None:
|
|
131
|
+
self.client.get_httpx_client().close()
|
|
132
|
+
|
|
133
|
+
def __enter__(self) -> ThunderPhone:
|
|
134
|
+
return self
|
|
135
|
+
|
|
136
|
+
def __exit__(self, *_args) -> None:
|
|
137
|
+
self.close()
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Contains methods for accessing the API"""
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Contains endpoint functions for accessing the API"""
|