telnyx 3.2.0a0__py3-none-any.whl → 3.4.0a0__py3-none-any.whl
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.
Potentially problematic release.
This version of telnyx might be problematic. Click here for more details.
- telnyx/_base_client.py +3 -3
- telnyx/_client.py +5 -0
- telnyx/_compat.py +48 -48
- telnyx/_models.py +40 -40
- telnyx/_types.py +35 -1
- telnyx/_utils/__init__.py +9 -2
- telnyx/_utils/_compat.py +45 -0
- telnyx/_utils/_datetime_parse.py +136 -0
- telnyx/_utils/_transform.py +11 -1
- telnyx/_utils/_typing.py +6 -1
- telnyx/_utils/_utils.py +0 -1
- telnyx/_version.py +1 -1
- telnyx/resources/__init__.py +3 -0
- telnyx/resources/actions/purchase.py +3 -4
- telnyx/resources/actions/register.py +5 -6
- telnyx/resources/ai/chat.py +4 -4
- telnyx/resources/ai/clusters.py +3 -5
- telnyx/resources/ai/conversations/messages.py +4 -4
- telnyx/resources/ai/embeddings/embeddings.py +3 -4
- telnyx/resources/call_control_applications.py +4 -4
- telnyx/resources/calls/calls.py +4 -4
- telnyx/resources/campaign_builder/campaign_builder.py +6 -6
- telnyx/resources/conferences/actions.py +19 -20
- telnyx/resources/credential_connections/credential_connections.py +6 -6
- telnyx/resources/customer_service_records.py +3 -5
- telnyx/resources/detail_records.py +3 -5
- telnyx/resources/external_connections/external_connections.py +6 -6
- telnyx/resources/external_connections/uploads.py +3 -3
- telnyx/resources/fax_applications.py +6 -6
- telnyx/resources/fqdn_connections.py +6 -6
- telnyx/resources/ip_connections.py +6 -6
- telnyx/resources/messages/messages.py +16 -16
- telnyx/resources/messaging/rcs/rcs.py +3 -5
- telnyx/resources/messaging_hosted_number_orders/messaging_hosted_number_orders.py +8 -8
- telnyx/resources/messaging_numbers_bulk_updates.py +3 -5
- telnyx/resources/messaging_profiles/autoresp_configs.py +5 -6
- telnyx/resources/messaging_profiles/messaging_profiles.py +6 -6
- telnyx/resources/numbers_features.py +3 -5
- telnyx/resources/outbound_voice_profiles.py +10 -10
- telnyx/resources/phone_numbers/actions.py +3 -5
- telnyx/resources/phone_numbers/jobs.py +10 -10
- telnyx/resources/phone_numbers/phone_numbers.py +3 -4
- telnyx/resources/portability_checks.py +3 -5
- telnyx/resources/porting_orders/porting_orders.py +4 -4
- telnyx/resources/porting_orders/verification_codes.py +4 -4
- telnyx/resources/recordings/actions.py +3 -5
- telnyx/resources/reports/mdr_usage_reports.py +4 -4
- telnyx/resources/reports/reports.py +3 -4
- telnyx/resources/rooms/sessions/actions.py +14 -14
- telnyx/resources/sim_cards/actions.py +5 -7
- telnyx/resources/sim_cards/sim_cards.py +5 -6
- telnyx/resources/texml_applications.py +5 -6
- telnyx/resources/usage_reports.py +7 -8
- telnyx/resources/webhooks.py +34 -0
- telnyx/resources/wireless_blocklists.py +5 -6
- telnyx/types/__init__.py +115 -4
- telnyx/types/actions/purchase_create_params.py +3 -2
- telnyx/types/actions/register_create_params.py +4 -3
- telnyx/types/ai/chat_create_completion_params.py +3 -2
- telnyx/types/ai/cluster_compute_params.py +3 -2
- telnyx/types/ai/conversations/message_create_params.py +3 -2
- telnyx/types/ai/embedding_list_params.py +3 -2
- telnyx/types/ai/inference_embedding_bucket_ids_param.py +3 -2
- telnyx/types/ai/inference_embedding_webhook_tool_params_param.py +6 -4
- telnyx/types/bundle_pricing/billing_bundle_list_params.py +4 -3
- telnyx/types/bundle_pricing/user_bundle_list_params.py +4 -3
- telnyx/types/bundle_pricing/user_bundle_list_unused_params.py +4 -3
- telnyx/types/call_ai_gather_ended_webhook_event.py +78 -0
- telnyx/types/call_ai_gather_message_history_updated_webhook_event.py +69 -0
- telnyx/types/call_ai_gather_partial_results_webhook_event.py +75 -0
- telnyx/types/call_answered_webhook_event.py +75 -0
- telnyx/types/call_bridged_webhook_event.py +58 -0
- telnyx/types/call_control_application_update_params.py +3 -2
- telnyx/types/call_conversation_ended_webhook_event.py +84 -0
- telnyx/types/call_conversation_insights_generated_webhook_event.py +67 -0
- telnyx/types/call_dial_params.py +4 -3
- telnyx/types/call_dtmf_received_webhook_event.py +61 -0
- telnyx/types/call_enqueued_webhook_event.py +59 -0
- telnyx/types/call_fork_started_webhook_event.py +53 -0
- telnyx/types/call_fork_stopped_webhook_event.py +53 -0
- telnyx/types/call_gather_ended_webhook_event.py +64 -0
- telnyx/types/call_hangup_webhook_event.py +150 -0
- telnyx/types/call_initiated_webhook_event.py +96 -0
- telnyx/types/call_left_queue_webhook_event.py +62 -0
- telnyx/types/call_machine_detection_ended_webhook_event.py +61 -0
- telnyx/types/call_machine_greeting_ended_webhook_event.py +61 -0
- telnyx/types/call_machine_premium_detection_ended_webhook_event.py +63 -0
- telnyx/types/call_machine_premium_greeting_ended_webhook_event.py +61 -0
- telnyx/types/call_playback_ended_webhook_event.py +70 -0
- telnyx/types/call_playback_started_webhook_event.py +62 -0
- telnyx/types/call_recording_error_webhook_event.py +60 -0
- telnyx/types/call_recording_saved_webhook_event.py +94 -0
- telnyx/types/call_recording_transcription_saved_webhook_event.py +71 -0
- telnyx/types/call_refer_completed_webhook_event.py +61 -0
- telnyx/types/call_refer_failed_webhook_event.py +61 -0
- telnyx/types/call_refer_started_webhook_event.py +61 -0
- telnyx/types/call_siprec_failed_webhook_event.py +53 -0
- telnyx/types/call_siprec_started_webhook_event.py +50 -0
- telnyx/types/call_siprec_stopped_webhook_event.py +53 -0
- telnyx/types/call_speak_ended_webhook_event.py +53 -0
- telnyx/types/call_speak_started_webhook_event.py +50 -0
- telnyx/types/call_streaming_failed_webhook_event.py +70 -0
- telnyx/types/call_streaming_started_webhook_event.py +53 -0
- telnyx/types/call_streaming_stopped_webhook_event.py +53 -0
- telnyx/types/calls/transcription_engine_a_config_param.py +4 -3
- telnyx/types/campaign_builder_create_params.py +4 -3
- telnyx/types/campaign_status_update_webhook_event.py +26 -0
- telnyx/types/conference_created_webhook_event.py +53 -0
- telnyx/types/conference_ended_webhook_event.py +56 -0
- telnyx/types/conference_floor_changed_webhook_event.py +45 -0
- telnyx/types/conference_participant_joined_webhook_event.py +53 -0
- telnyx/types/conference_participant_left_webhook_event.py +53 -0
- telnyx/types/conference_participant_playback_ended_webhook_event.py +65 -0
- telnyx/types/conference_participant_playback_started_webhook_event.py +65 -0
- telnyx/types/conference_participant_speak_ended_webhook_event.py +56 -0
- telnyx/types/conference_participant_speak_started_webhook_event.py +56 -0
- telnyx/types/conference_playback_ended_webhook_event.py +49 -0
- telnyx/types/conference_playback_started_webhook_event.py +49 -0
- telnyx/types/conference_recording_saved_webhook_event.py +103 -0
- telnyx/types/conference_speak_ended_webhook_event.py +40 -0
- telnyx/types/conference_speak_started_webhook_event.py +40 -0
- telnyx/types/conferences/action_hold_params.py +3 -2
- telnyx/types/conferences/action_join_params.py +3 -2
- telnyx/types/conferences/action_mute_params.py +3 -2
- telnyx/types/conferences/action_play_params.py +2 -2
- telnyx/types/conferences/action_speak_params.py +3 -2
- telnyx/types/conferences/action_stop_params.py +3 -2
- telnyx/types/conferences/action_unhold_params.py +3 -2
- telnyx/types/conferences/action_unmute_params.py +3 -2
- telnyx/types/conferences/action_update_params.py +3 -2
- telnyx/types/credential_connection_create_params.py +3 -2
- telnyx/types/credential_connection_update_params.py +3 -2
- telnyx/types/credential_inbound_param.py +3 -2
- telnyx/types/custom_sip_header.py +13 -0
- telnyx/types/customer_service_record_list_params.py +2 -1
- telnyx/types/customer_service_record_status_changed_webhook_event.py +55 -0
- telnyx/types/customer_service_record_verify_phone_number_coverage_params.py +3 -2
- telnyx/types/delivery_update_webhook_event.py +40 -0
- telnyx/types/detail_record_list_params.py +4 -2
- telnyx/types/document_list_params.py +2 -1
- telnyx/types/external_connection_create_params.py +4 -2
- telnyx/types/external_connection_update_params.py +4 -2
- telnyx/types/external_connections/civic_address_list_params.py +3 -2
- telnyx/types/external_connections/upload_create_params.py +3 -1
- telnyx/types/fax_application_create_params.py +3 -2
- telnyx/types/fax_application_update_params.py +3 -2
- telnyx/types/fax_delivered_webhook_event.py +69 -0
- telnyx/types/fax_failed_webhook_event.py +66 -0
- telnyx/types/fax_media_processed_webhook_event.py +63 -0
- telnyx/types/fax_queued_webhook_event.py +63 -0
- telnyx/types/fax_sending_started_webhook_event.py +63 -0
- telnyx/types/fqdn_connection_create_params.py +3 -2
- telnyx/types/fqdn_connection_update_params.py +3 -2
- telnyx/types/inbound_fqdn_param.py +4 -2
- telnyx/types/inbound_ip_param.py +3 -2
- telnyx/types/inbound_message_webhook_event.py +227 -0
- telnyx/types/ip_connection_create_params.py +4 -3
- telnyx/types/ip_connection_update_params.py +3 -2
- telnyx/types/media_list_params.py +3 -2
- telnyx/types/message_schedule_params.py +3 -2
- telnyx/types/message_send_group_mms_params.py +3 -3
- telnyx/types/message_send_long_code_params.py +2 -2
- telnyx/types/message_send_number_pool_params.py +3 -2
- telnyx/types/message_send_params.py +3 -2
- telnyx/types/message_send_short_code_params.py +2 -2
- telnyx/types/messaging/rc_list_bulk_capabilities_params.py +3 -2
- telnyx/types/messaging_hosted_number_order_check_eligibility_params.py +3 -2
- telnyx/types/messaging_hosted_number_order_create_params.py +3 -2
- telnyx/types/messaging_hosted_number_order_create_verification_codes_params.py +3 -2
- telnyx/types/messaging_numbers_bulk_update_create_params.py +3 -2
- telnyx/types/messaging_profile_create_params.py +3 -2
- telnyx/types/messaging_profile_update_params.py +3 -2
- telnyx/types/messaging_profiles/autoresp_config_create_params.py +3 -2
- telnyx/types/messaging_profiles/autoresp_config_update_params.py +3 -2
- telnyx/types/messsage_rcs_params.py +2 -2
- telnyx/types/number_order_status_update_webhook_event.py +12 -0
- telnyx/types/numbers_feature_create_params.py +3 -2
- telnyx/types/outbound_call_recording_param.py +3 -2
- telnyx/types/outbound_voice_profile_create_params.py +4 -3
- telnyx/types/outbound_voice_profile_update_params.py +4 -3
- telnyx/types/phone_number_list_params.py +3 -2
- telnyx/types/phone_number_slim_list_params.py +3 -2
- telnyx/types/phone_number_update_params.py +3 -2
- telnyx/types/phone_numbers/action_verify_ownership_params.py +3 -2
- telnyx/types/phone_numbers/job_delete_batch_params.py +3 -2
- telnyx/types/phone_numbers/job_update_batch_params.py +3 -3
- telnyx/types/phone_numbers/job_update_emergency_settings_batch_params.py +4 -2
- telnyx/types/portability_check_run_params.py +3 -2
- telnyx/types/porting/export_porting_orders_csv_report_param.py +2 -1
- telnyx/types/porting_order_create_params.py +3 -2
- telnyx/types/porting_order_phone_number_configuration_param.py +3 -2
- telnyx/types/porting_orders/action_requirement_list_params.py +3 -2
- telnyx/types/porting_orders/phone_number_block_list_params.py +5 -3
- telnyx/types/porting_orders/phone_number_configuration_list_params.py +3 -2
- telnyx/types/porting_orders/verification_code_send_params.py +3 -2
- telnyx/types/portout_list_params.py +2 -1
- telnyx/types/portouts/export_portouts_csv_report_param.py +3 -2
- telnyx/types/recordings/action_delete_params.py +3 -2
- telnyx/types/replaced_link_click_webhook_event.py +32 -0
- telnyx/types/report_list_wdrs_params.py +3 -2
- telnyx/types/reports/mdr_usage_report_fetch_sync_params.py +3 -2
- telnyx/types/rooms/sessions/action_kick_params.py +5 -3
- telnyx/types/rooms/sessions/action_mute_params.py +5 -3
- telnyx/types/rooms/sessions/action_unmute_params.py +5 -3
- telnyx/types/sim_card_list_params.py +2 -1
- telnyx/types/sim_card_update_params.py +3 -3
- telnyx/types/sim_cards/action_bulk_set_public_ips_params.py +3 -2
- telnyx/types/sim_cards/action_validate_registration_codes_params.py +3 -2
- telnyx/types/sip_header.py +15 -0
- telnyx/types/streaming_failed_webhook_event.py +70 -0
- telnyx/types/streaming_started_webhook_event.py +53 -0
- telnyx/types/streaming_stopped_webhook_event.py +53 -0
- telnyx/types/texml_application_create_params.py +2 -2
- telnyx/types/texml_application_update_params.py +2 -2
- telnyx/types/transcription_webhook_event.py +72 -0
- telnyx/types/unwrap_webhook_event.py +138 -0
- telnyx/types/usage_report_list_params.py +5 -4
- telnyx/types/verify_profile_create_params.py +6 -4
- telnyx/types/verify_profile_update_params.py +6 -4
- telnyx/types/video_region_param.py +4 -2
- telnyx/types/wireless_blocklist_create_params.py +3 -2
- telnyx/types/wireless_blocklist_update_params.py +3 -2
- {telnyx-3.2.0a0.dist-info → telnyx-3.4.0a0.dist-info}/METADATA +1 -1
- {telnyx-3.2.0a0.dist-info → telnyx-3.4.0a0.dist-info}/RECORD +226 -156
- {telnyx-3.2.0a0.dist-info → telnyx-3.4.0a0.dist-info}/WHEEL +0 -0
- {telnyx-3.2.0a0.dist-info → telnyx-3.4.0a0.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from typing import Optional
|
|
4
|
+
from typing_extensions import Literal
|
|
5
|
+
|
|
6
|
+
from pydantic import Field as FieldInfo
|
|
7
|
+
|
|
8
|
+
from .._models import BaseModel
|
|
9
|
+
|
|
10
|
+
__all__ = ["FaxMediaProcessedWebhookEvent", "Payload"]
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class Payload(BaseModel):
|
|
14
|
+
client_state: Optional[str] = None
|
|
15
|
+
"""State received from a command."""
|
|
16
|
+
|
|
17
|
+
connection_id: Optional[str] = None
|
|
18
|
+
"""The ID of the connection used to send the fax."""
|
|
19
|
+
|
|
20
|
+
direction: Optional[Literal["inbound", "outbound"]] = None
|
|
21
|
+
"""The direction of the fax."""
|
|
22
|
+
|
|
23
|
+
fax_id: Optional[str] = None
|
|
24
|
+
"""Identifies the fax."""
|
|
25
|
+
|
|
26
|
+
from_: Optional[str] = FieldInfo(alias="from", default=None)
|
|
27
|
+
"""The phone number, in E.164 format, the fax will be sent from."""
|
|
28
|
+
|
|
29
|
+
media_name: Optional[str] = None
|
|
30
|
+
"""The media_name used for the fax's media.
|
|
31
|
+
|
|
32
|
+
Must point to a file previously uploaded to api.telnyx.com/v2/media by the same
|
|
33
|
+
user/organization. media_name and media_url/contents can't be submitted
|
|
34
|
+
together.
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
original_media_url: Optional[str] = None
|
|
38
|
+
"""The original URL to the PDF used for the fax's media.
|
|
39
|
+
|
|
40
|
+
If media_name was supplied, this is omitted
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
status: Optional[Literal["media.processed"]] = None
|
|
44
|
+
"""The status of the fax."""
|
|
45
|
+
|
|
46
|
+
to: Optional[str] = None
|
|
47
|
+
"""The phone number, in E.164 format, the fax will be sent to or SIP URI"""
|
|
48
|
+
|
|
49
|
+
user_id: Optional[str] = None
|
|
50
|
+
"""Identifier of the user to whom the fax belongs"""
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
class FaxMediaProcessedWebhookEvent(BaseModel):
|
|
54
|
+
id: Optional[str] = None
|
|
55
|
+
"""Identifies the type of resource."""
|
|
56
|
+
|
|
57
|
+
event_type: Optional[Literal["fax.media.processed"]] = None
|
|
58
|
+
"""The type of event being delivered."""
|
|
59
|
+
|
|
60
|
+
payload: Optional[Payload] = None
|
|
61
|
+
|
|
62
|
+
record_type: Optional[Literal["event"]] = None
|
|
63
|
+
"""Identifies the type of the resource."""
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from typing import Optional
|
|
4
|
+
from typing_extensions import Literal
|
|
5
|
+
|
|
6
|
+
from pydantic import Field as FieldInfo
|
|
7
|
+
|
|
8
|
+
from .._models import BaseModel
|
|
9
|
+
|
|
10
|
+
__all__ = ["FaxQueuedWebhookEvent", "Payload"]
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class Payload(BaseModel):
|
|
14
|
+
client_state: Optional[str] = None
|
|
15
|
+
"""State received from a command."""
|
|
16
|
+
|
|
17
|
+
connection_id: Optional[str] = None
|
|
18
|
+
"""The ID of the connection used to send the fax."""
|
|
19
|
+
|
|
20
|
+
direction: Optional[Literal["inbound", "outbound"]] = None
|
|
21
|
+
"""The direction of the fax."""
|
|
22
|
+
|
|
23
|
+
fax_id: Optional[str] = None
|
|
24
|
+
"""Identifies the fax."""
|
|
25
|
+
|
|
26
|
+
from_: Optional[str] = FieldInfo(alias="from", default=None)
|
|
27
|
+
"""The phone number, in E.164 format, the fax will be sent from."""
|
|
28
|
+
|
|
29
|
+
media_name: Optional[str] = None
|
|
30
|
+
"""The media_name used for the fax's media.
|
|
31
|
+
|
|
32
|
+
Must point to a file previously uploaded to api.telnyx.com/v2/media by the same
|
|
33
|
+
user/organization. media_name and media_url/contents can't be submitted
|
|
34
|
+
together.
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
original_media_url: Optional[str] = None
|
|
38
|
+
"""The original URL to the PDF used for the fax's media.
|
|
39
|
+
|
|
40
|
+
If media_name was supplied, this is omitted
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
status: Optional[Literal["queued"]] = None
|
|
44
|
+
"""The status of the fax."""
|
|
45
|
+
|
|
46
|
+
to: Optional[str] = None
|
|
47
|
+
"""The phone number, in E.164 format, the fax will be sent to or SIP URI"""
|
|
48
|
+
|
|
49
|
+
user_id: Optional[str] = None
|
|
50
|
+
"""Identifier of the user to whom the fax belongs"""
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
class FaxQueuedWebhookEvent(BaseModel):
|
|
54
|
+
id: Optional[str] = None
|
|
55
|
+
"""Identifies the type of resource."""
|
|
56
|
+
|
|
57
|
+
event_type: Optional[Literal["fax.queued"]] = None
|
|
58
|
+
"""The type of event being delivered."""
|
|
59
|
+
|
|
60
|
+
payload: Optional[Payload] = None
|
|
61
|
+
|
|
62
|
+
record_type: Optional[Literal["event"]] = None
|
|
63
|
+
"""Identifies the type of the resource."""
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from typing import Optional
|
|
4
|
+
from typing_extensions import Literal
|
|
5
|
+
|
|
6
|
+
from pydantic import Field as FieldInfo
|
|
7
|
+
|
|
8
|
+
from .._models import BaseModel
|
|
9
|
+
|
|
10
|
+
__all__ = ["FaxSendingStartedWebhookEvent", "Payload"]
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class Payload(BaseModel):
|
|
14
|
+
client_state: Optional[str] = None
|
|
15
|
+
"""State received from a command."""
|
|
16
|
+
|
|
17
|
+
connection_id: Optional[str] = None
|
|
18
|
+
"""The ID of the connection used to send the fax."""
|
|
19
|
+
|
|
20
|
+
direction: Optional[Literal["inbound", "outbound"]] = None
|
|
21
|
+
"""The direction of the fax."""
|
|
22
|
+
|
|
23
|
+
fax_id: Optional[str] = None
|
|
24
|
+
"""Identifies the fax."""
|
|
25
|
+
|
|
26
|
+
from_: Optional[str] = FieldInfo(alias="from", default=None)
|
|
27
|
+
"""The phone number, in E.164 format, the fax will be sent from."""
|
|
28
|
+
|
|
29
|
+
media_name: Optional[str] = None
|
|
30
|
+
"""The media_name used for the fax's media.
|
|
31
|
+
|
|
32
|
+
Must point to a file previously uploaded to api.telnyx.com/v2/media by the same
|
|
33
|
+
user/organization. media_name and media_url/contents can't be submitted
|
|
34
|
+
together.
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
original_media_url: Optional[str] = None
|
|
38
|
+
"""The original URL to the PDF used for the fax's media.
|
|
39
|
+
|
|
40
|
+
If media_name was supplied, this is omitted
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
status: Optional[Literal["sending"]] = None
|
|
44
|
+
"""The status of the fax."""
|
|
45
|
+
|
|
46
|
+
to: Optional[str] = None
|
|
47
|
+
"""The phone number, in E.164 format, the fax will be sent to or SIP URI"""
|
|
48
|
+
|
|
49
|
+
user_id: Optional[str] = None
|
|
50
|
+
"""Identifier of the user to whom the fax belongs"""
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
class FaxSendingStartedWebhookEvent(BaseModel):
|
|
54
|
+
id: Optional[str] = None
|
|
55
|
+
"""Identifies the type of resource."""
|
|
56
|
+
|
|
57
|
+
event_type: Optional[Literal["fax.sending.started"]] = None
|
|
58
|
+
"""The type of event being delivered."""
|
|
59
|
+
|
|
60
|
+
payload: Optional[Payload] = None
|
|
61
|
+
|
|
62
|
+
record_type: Optional[Literal["event"]] = None
|
|
63
|
+
"""Identifies the type of the resource."""
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from typing import
|
|
5
|
+
from typing import Optional
|
|
6
6
|
from typing_extensions import Required, TypedDict
|
|
7
7
|
|
|
8
|
+
from .._types import SequenceNotStr
|
|
8
9
|
from .dtmf_type import DtmfType
|
|
9
10
|
from .encrypted_media import EncryptedMedia
|
|
10
11
|
from .inbound_fqdn_param import InboundFqdnParam
|
|
@@ -82,7 +83,7 @@ class FqdnConnectionCreateParams(TypedDict, total=False):
|
|
|
82
83
|
|
|
83
84
|
rtcp_settings: ConnectionRtcpSettingsParam
|
|
84
85
|
|
|
85
|
-
tags:
|
|
86
|
+
tags: SequenceNotStr[str]
|
|
86
87
|
"""Tags associated with the connection."""
|
|
87
88
|
|
|
88
89
|
transport_protocol: TransportProtocol
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from typing import
|
|
5
|
+
from typing import Optional
|
|
6
6
|
from typing_extensions import TypedDict
|
|
7
7
|
|
|
8
|
+
from .._types import SequenceNotStr
|
|
8
9
|
from .dtmf_type import DtmfType
|
|
9
10
|
from .encrypted_media import EncryptedMedia
|
|
10
11
|
from .inbound_fqdn_param import InboundFqdnParam
|
|
@@ -76,7 +77,7 @@ class FqdnConnectionUpdateParams(TypedDict, total=False):
|
|
|
76
77
|
|
|
77
78
|
rtcp_settings: ConnectionRtcpSettingsParam
|
|
78
79
|
|
|
79
|
-
tags:
|
|
80
|
+
tags: SequenceNotStr[str]
|
|
80
81
|
"""Tags associated with the connection."""
|
|
81
82
|
|
|
82
83
|
transport_protocol: TransportProtocol
|
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from typing import
|
|
5
|
+
from typing import Optional
|
|
6
6
|
from typing_extensions import Literal, TypedDict
|
|
7
7
|
|
|
8
|
+
from .._types import SequenceNotStr
|
|
9
|
+
|
|
8
10
|
__all__ = ["InboundFqdnParam"]
|
|
9
11
|
|
|
10
12
|
|
|
@@ -21,7 +23,7 @@ class InboundFqdnParam(TypedDict, total=False):
|
|
|
21
23
|
associated with this connection.
|
|
22
24
|
"""
|
|
23
25
|
|
|
24
|
-
codecs:
|
|
26
|
+
codecs: SequenceNotStr[str]
|
|
25
27
|
"""
|
|
26
28
|
Defines the list of codecs that Telnyx will send for inbound calls to a specific
|
|
27
29
|
number on your portal account, in priority order. This only works when the
|
telnyx/types/inbound_ip_param.py
CHANGED
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from typing import List
|
|
6
5
|
from typing_extensions import Literal, TypedDict
|
|
7
6
|
|
|
7
|
+
from .._types import SequenceNotStr
|
|
8
|
+
|
|
8
9
|
__all__ = ["InboundIPParam"]
|
|
9
10
|
|
|
10
11
|
|
|
@@ -21,7 +22,7 @@ class InboundIPParam(TypedDict, total=False):
|
|
|
21
22
|
associated with this connection.
|
|
22
23
|
"""
|
|
23
24
|
|
|
24
|
-
codecs:
|
|
25
|
+
codecs: SequenceNotStr[str]
|
|
25
26
|
"""
|
|
26
27
|
Defines the list of codecs that Telnyx will send for inbound calls to a specific
|
|
27
28
|
number on your portal account, in priority order. This only works when the
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from typing import List, Optional
|
|
4
|
+
from datetime import datetime
|
|
5
|
+
from typing_extensions import Literal
|
|
6
|
+
|
|
7
|
+
from pydantic import Field as FieldInfo
|
|
8
|
+
|
|
9
|
+
from .._models import BaseModel
|
|
10
|
+
from .messaging_error import MessagingError
|
|
11
|
+
|
|
12
|
+
__all__ = [
|
|
13
|
+
"InboundMessageWebhookEvent",
|
|
14
|
+
"Data",
|
|
15
|
+
"DataPayload",
|
|
16
|
+
"DataPayloadCc",
|
|
17
|
+
"DataPayloadCost",
|
|
18
|
+
"DataPayloadCostBreakdown",
|
|
19
|
+
"DataPayloadCostBreakdownCarrierFee",
|
|
20
|
+
"DataPayloadCostBreakdownRate",
|
|
21
|
+
"DataPayloadFrom",
|
|
22
|
+
"DataPayloadMedia",
|
|
23
|
+
"DataPayloadTo",
|
|
24
|
+
]
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class DataPayloadCc(BaseModel):
|
|
28
|
+
carrier: Optional[str] = None
|
|
29
|
+
"""The carrier of the receiver."""
|
|
30
|
+
|
|
31
|
+
line_type: Optional[Literal["Wireline", "Wireless", "VoWiFi", "VoIP", "Pre-Paid Wireless", ""]] = None
|
|
32
|
+
"""The line-type of the receiver."""
|
|
33
|
+
|
|
34
|
+
phone_number: Optional[str] = None
|
|
35
|
+
"""Receiving address (+E.164 formatted phone number or short code)."""
|
|
36
|
+
|
|
37
|
+
status: Optional[
|
|
38
|
+
Literal["queued", "sending", "sent", "delivered", "sending_failed", "delivery_failed", "delivery_unconfirmed"]
|
|
39
|
+
] = None
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
class DataPayloadCost(BaseModel):
|
|
43
|
+
amount: Optional[str] = None
|
|
44
|
+
"""The amount deducted from your account."""
|
|
45
|
+
|
|
46
|
+
currency: Optional[str] = None
|
|
47
|
+
"""The ISO 4217 currency identifier."""
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
class DataPayloadCostBreakdownCarrierFee(BaseModel):
|
|
51
|
+
amount: Optional[str] = None
|
|
52
|
+
"""The carrier fee amount."""
|
|
53
|
+
|
|
54
|
+
currency: Optional[str] = None
|
|
55
|
+
"""The ISO 4217 currency identifier."""
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
class DataPayloadCostBreakdownRate(BaseModel):
|
|
59
|
+
amount: Optional[str] = None
|
|
60
|
+
"""The rate amount applied."""
|
|
61
|
+
|
|
62
|
+
currency: Optional[str] = None
|
|
63
|
+
"""The ISO 4217 currency identifier."""
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
class DataPayloadCostBreakdown(BaseModel):
|
|
67
|
+
carrier_fee: Optional[DataPayloadCostBreakdownCarrierFee] = None
|
|
68
|
+
|
|
69
|
+
rate: Optional[DataPayloadCostBreakdownRate] = None
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
class DataPayloadFrom(BaseModel):
|
|
73
|
+
carrier: Optional[str] = None
|
|
74
|
+
"""The carrier of the sender."""
|
|
75
|
+
|
|
76
|
+
line_type: Optional[Literal["Wireline", "Wireless", "VoWiFi", "VoIP", "Pre-Paid Wireless", ""]] = None
|
|
77
|
+
"""The line-type of the sender."""
|
|
78
|
+
|
|
79
|
+
phone_number: Optional[str] = None
|
|
80
|
+
"""
|
|
81
|
+
Sending address (+E.164 formatted phone number, alphanumeric sender ID, or short
|
|
82
|
+
code).
|
|
83
|
+
"""
|
|
84
|
+
|
|
85
|
+
status: Optional[Literal["received", "delivered"]] = None
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
class DataPayloadMedia(BaseModel):
|
|
89
|
+
content_type: Optional[str] = None
|
|
90
|
+
"""The MIME type of the requested media."""
|
|
91
|
+
|
|
92
|
+
hash_sha256: Optional[str] = None
|
|
93
|
+
"""The SHA256 hash of the requested media."""
|
|
94
|
+
|
|
95
|
+
size: Optional[int] = None
|
|
96
|
+
"""The size of the requested media."""
|
|
97
|
+
|
|
98
|
+
url: Optional[str] = None
|
|
99
|
+
"""The url of the media requested to be sent."""
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
class DataPayloadTo(BaseModel):
|
|
103
|
+
carrier: Optional[str] = None
|
|
104
|
+
"""The carrier of the receiver."""
|
|
105
|
+
|
|
106
|
+
line_type: Optional[Literal["Wireline", "Wireless", "VoWiFi", "VoIP", "Pre-Paid Wireless", ""]] = None
|
|
107
|
+
"""The line-type of the receiver."""
|
|
108
|
+
|
|
109
|
+
phone_number: Optional[str] = None
|
|
110
|
+
"""Receiving address (+E.164 formatted phone number or short code)."""
|
|
111
|
+
|
|
112
|
+
status: Optional[
|
|
113
|
+
Literal[
|
|
114
|
+
"queued",
|
|
115
|
+
"sending",
|
|
116
|
+
"sent",
|
|
117
|
+
"delivered",
|
|
118
|
+
"sending_failed",
|
|
119
|
+
"delivery_failed",
|
|
120
|
+
"delivery_unconfirmed",
|
|
121
|
+
"webhook_delivered",
|
|
122
|
+
]
|
|
123
|
+
] = None
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
class DataPayload(BaseModel):
|
|
127
|
+
id: Optional[str] = None
|
|
128
|
+
"""Identifies the type of resource."""
|
|
129
|
+
|
|
130
|
+
cc: Optional[List[DataPayloadCc]] = None
|
|
131
|
+
|
|
132
|
+
completed_at: Optional[datetime] = None
|
|
133
|
+
"""Not used for inbound messages."""
|
|
134
|
+
|
|
135
|
+
cost: Optional[DataPayloadCost] = None
|
|
136
|
+
|
|
137
|
+
cost_breakdown: Optional[DataPayloadCostBreakdown] = None
|
|
138
|
+
"""Detailed breakdown of the message cost components."""
|
|
139
|
+
|
|
140
|
+
direction: Optional[Literal["inbound"]] = None
|
|
141
|
+
"""The direction of the message.
|
|
142
|
+
|
|
143
|
+
Inbound messages are sent to you whereas outbound messages are sent from you.
|
|
144
|
+
"""
|
|
145
|
+
|
|
146
|
+
encoding: Optional[str] = None
|
|
147
|
+
"""Encoding scheme used for the message body."""
|
|
148
|
+
|
|
149
|
+
errors: Optional[List[MessagingError]] = None
|
|
150
|
+
"""
|
|
151
|
+
These errors may point at addressees when referring to unsuccessful/unconfirmed
|
|
152
|
+
delivery statuses.
|
|
153
|
+
"""
|
|
154
|
+
|
|
155
|
+
from_: Optional[DataPayloadFrom] = FieldInfo(alias="from", default=None)
|
|
156
|
+
|
|
157
|
+
media: Optional[List[DataPayloadMedia]] = None
|
|
158
|
+
|
|
159
|
+
messaging_profile_id: Optional[str] = None
|
|
160
|
+
"""Unique identifier for a messaging profile."""
|
|
161
|
+
|
|
162
|
+
parts: Optional[int] = None
|
|
163
|
+
"""Number of parts into which the message's body must be split."""
|
|
164
|
+
|
|
165
|
+
received_at: Optional[datetime] = None
|
|
166
|
+
"""ISO 8601 formatted date indicating when the message request was received."""
|
|
167
|
+
|
|
168
|
+
record_type: Optional[Literal["message"]] = None
|
|
169
|
+
"""Identifies the type of the resource."""
|
|
170
|
+
|
|
171
|
+
sent_at: Optional[datetime] = None
|
|
172
|
+
"""Not used for inbound messages."""
|
|
173
|
+
|
|
174
|
+
tags: Optional[List[str]] = None
|
|
175
|
+
"""Tags associated with the resource."""
|
|
176
|
+
|
|
177
|
+
tcr_campaign_billable: Optional[bool] = None
|
|
178
|
+
"""Indicates whether the TCR campaign is billable."""
|
|
179
|
+
|
|
180
|
+
tcr_campaign_id: Optional[str] = None
|
|
181
|
+
"""The Campaign Registry (TCR) campaign ID associated with the message."""
|
|
182
|
+
|
|
183
|
+
tcr_campaign_registered: Optional[str] = None
|
|
184
|
+
"""The registration status of the TCR campaign."""
|
|
185
|
+
|
|
186
|
+
text: Optional[str] = None
|
|
187
|
+
"""Message body (i.e., content) as a non-empty string.
|
|
188
|
+
|
|
189
|
+
**Required for SMS**
|
|
190
|
+
"""
|
|
191
|
+
|
|
192
|
+
to: Optional[List[DataPayloadTo]] = None
|
|
193
|
+
|
|
194
|
+
type: Optional[Literal["SMS", "MMS"]] = None
|
|
195
|
+
"""The type of message. This value can be either 'sms' or 'mms'."""
|
|
196
|
+
|
|
197
|
+
valid_until: Optional[datetime] = None
|
|
198
|
+
"""Not used for inbound messages."""
|
|
199
|
+
|
|
200
|
+
webhook_failover_url: Optional[str] = None
|
|
201
|
+
"""
|
|
202
|
+
The failover URL where webhooks related to this message will be sent if sending
|
|
203
|
+
to the primary URL fails.
|
|
204
|
+
"""
|
|
205
|
+
|
|
206
|
+
webhook_url: Optional[str] = None
|
|
207
|
+
"""The URL where webhooks related to this message will be sent."""
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
class Data(BaseModel):
|
|
211
|
+
id: Optional[str] = None
|
|
212
|
+
"""Identifies the type of resource."""
|
|
213
|
+
|
|
214
|
+
event_type: Optional[Literal["message.received"]] = None
|
|
215
|
+
"""The type of event being delivered."""
|
|
216
|
+
|
|
217
|
+
occurred_at: Optional[datetime] = None
|
|
218
|
+
"""ISO 8601 formatted date indicating when the resource was created."""
|
|
219
|
+
|
|
220
|
+
payload: Optional[DataPayload] = None
|
|
221
|
+
|
|
222
|
+
record_type: Optional[Literal["event"]] = None
|
|
223
|
+
"""Identifies the type of the resource."""
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
class InboundMessageWebhookEvent(BaseModel):
|
|
227
|
+
data: Optional[Data] = None
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from typing import
|
|
5
|
+
from typing import Optional
|
|
6
6
|
from typing_extensions import Literal, TypedDict
|
|
7
7
|
|
|
8
|
+
from .._types import SequenceNotStr
|
|
8
9
|
from .dtmf_type import DtmfType
|
|
9
10
|
from .encrypted_media import EncryptedMedia
|
|
10
11
|
from .outbound_ip_param import OutboundIPParam
|
|
@@ -72,7 +73,7 @@ class IPConnectionCreateParams(TypedDict, total=False):
|
|
|
72
73
|
|
|
73
74
|
rtcp_settings: ConnectionRtcpSettingsParam
|
|
74
75
|
|
|
75
|
-
tags:
|
|
76
|
+
tags: SequenceNotStr[str]
|
|
76
77
|
"""Tags associated with the connection."""
|
|
77
78
|
|
|
78
79
|
transport_protocol: Literal["UDP", "TCP", "TLS"]
|
|
@@ -113,7 +114,7 @@ class Inbound(TypedDict, total=False):
|
|
|
113
114
|
associated with this connection.
|
|
114
115
|
"""
|
|
115
116
|
|
|
116
|
-
codecs:
|
|
117
|
+
codecs: SequenceNotStr[str]
|
|
117
118
|
"""
|
|
118
119
|
Defines the list of codecs that Telnyx will send for inbound calls to a specific
|
|
119
120
|
number on your portal account, in priority order. This only works when the
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from typing import
|
|
5
|
+
from typing import Optional
|
|
6
6
|
from typing_extensions import Literal, TypedDict
|
|
7
7
|
|
|
8
|
+
from .._types import SequenceNotStr
|
|
8
9
|
from .dtmf_type import DtmfType
|
|
9
10
|
from .encrypted_media import EncryptedMedia
|
|
10
11
|
from .inbound_ip_param import InboundIPParam
|
|
@@ -73,7 +74,7 @@ class IPConnectionUpdateParams(TypedDict, total=False):
|
|
|
73
74
|
|
|
74
75
|
rtcp_settings: ConnectionRtcpSettingsParam
|
|
75
76
|
|
|
76
|
-
tags:
|
|
77
|
+
tags: SequenceNotStr[str]
|
|
77
78
|
"""Tags associated with the connection."""
|
|
78
79
|
|
|
79
80
|
transport_protocol: Literal["UDP", "TCP", "TLS"]
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from typing import List
|
|
6
5
|
from typing_extensions import TypedDict
|
|
7
6
|
|
|
7
|
+
from .._types import SequenceNotStr
|
|
8
|
+
|
|
8
9
|
__all__ = ["MediaListParams", "Filter"]
|
|
9
10
|
|
|
10
11
|
|
|
@@ -17,5 +18,5 @@ class MediaListParams(TypedDict, total=False):
|
|
|
17
18
|
|
|
18
19
|
|
|
19
20
|
class Filter(TypedDict, total=False):
|
|
20
|
-
content_type:
|
|
21
|
+
content_type: SequenceNotStr[str]
|
|
21
22
|
"""Filters files by given content types"""
|
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from typing import
|
|
5
|
+
from typing import Union
|
|
6
6
|
from datetime import datetime
|
|
7
7
|
from typing_extensions import Literal, Required, Annotated, TypedDict
|
|
8
8
|
|
|
9
|
+
from .._types import SequenceNotStr
|
|
9
10
|
from .._utils import PropertyInfo
|
|
10
11
|
|
|
11
12
|
__all__ = ["MessageScheduleParams"]
|
|
@@ -30,7 +31,7 @@ class MessageScheduleParams(TypedDict, total=False):
|
|
|
30
31
|
ID.**
|
|
31
32
|
"""
|
|
32
33
|
|
|
33
|
-
media_urls:
|
|
34
|
+
media_urls: SequenceNotStr[str]
|
|
34
35
|
"""A list of media URLs. The total media size must be less than 1 MB.
|
|
35
36
|
|
|
36
37
|
**Required for MMS**
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from typing import List
|
|
6
5
|
from typing_extensions import Required, Annotated, TypedDict
|
|
7
6
|
|
|
7
|
+
from .._types import SequenceNotStr
|
|
8
8
|
from .._utils import PropertyInfo
|
|
9
9
|
|
|
10
10
|
__all__ = ["MessageSendGroupMmsParams"]
|
|
@@ -14,10 +14,10 @@ class MessageSendGroupMmsParams(TypedDict, total=False):
|
|
|
14
14
|
from_: Required[Annotated[str, PropertyInfo(alias="from")]]
|
|
15
15
|
"""Phone number, in +E.164 format, used to send the message."""
|
|
16
16
|
|
|
17
|
-
to: Required[
|
|
17
|
+
to: Required[SequenceNotStr[str]]
|
|
18
18
|
"""A list of destinations. No more than 8 destinations are allowed."""
|
|
19
19
|
|
|
20
|
-
media_urls:
|
|
20
|
+
media_urls: SequenceNotStr[str]
|
|
21
21
|
"""A list of media URLs. The total media size must be less than 1 MB."""
|
|
22
22
|
|
|
23
23
|
subject: str
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from typing import List
|
|
6
5
|
from typing_extensions import Literal, Required, Annotated, TypedDict
|
|
7
6
|
|
|
7
|
+
from .._types import SequenceNotStr
|
|
8
8
|
from .._utils import PropertyInfo
|
|
9
9
|
|
|
10
10
|
__all__ = ["MessageSendLongCodeParams"]
|
|
@@ -23,7 +23,7 @@ class MessageSendLongCodeParams(TypedDict, total=False):
|
|
|
23
23
|
recommended limit of message parts.
|
|
24
24
|
"""
|
|
25
25
|
|
|
26
|
-
media_urls:
|
|
26
|
+
media_urls: SequenceNotStr[str]
|
|
27
27
|
"""A list of media URLs. The total media size must be less than 1 MB.
|
|
28
28
|
|
|
29
29
|
**Required for MMS**
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from typing import List
|
|
6
5
|
from typing_extensions import Literal, Required, TypedDict
|
|
7
6
|
|
|
7
|
+
from .._types import SequenceNotStr
|
|
8
|
+
|
|
8
9
|
__all__ = ["MessageSendNumberPoolParams"]
|
|
9
10
|
|
|
10
11
|
|
|
@@ -21,7 +22,7 @@ class MessageSendNumberPoolParams(TypedDict, total=False):
|
|
|
21
22
|
recommended limit of message parts.
|
|
22
23
|
"""
|
|
23
24
|
|
|
24
|
-
media_urls:
|
|
25
|
+
media_urls: SequenceNotStr[str]
|
|
25
26
|
"""A list of media URLs. The total media size must be less than 1 MB.
|
|
26
27
|
|
|
27
28
|
**Required for MMS**
|
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from typing import
|
|
5
|
+
from typing import Union
|
|
6
6
|
from datetime import datetime
|
|
7
7
|
from typing_extensions import Literal, Required, Annotated, TypedDict
|
|
8
8
|
|
|
9
|
+
from .._types import SequenceNotStr
|
|
9
10
|
from .._utils import PropertyInfo
|
|
10
11
|
|
|
11
12
|
__all__ = ["MessageSendParams"]
|
|
@@ -30,7 +31,7 @@ class MessageSendParams(TypedDict, total=False):
|
|
|
30
31
|
ID.**
|
|
31
32
|
"""
|
|
32
33
|
|
|
33
|
-
media_urls:
|
|
34
|
+
media_urls: SequenceNotStr[str]
|
|
34
35
|
"""A list of media URLs. The total media size must be less than 1 MB.
|
|
35
36
|
|
|
36
37
|
**Required for MMS**
|